#pragma once
#include "Blob.h"
#include "TextEncoding.h"
#include <wtf/Forward.h>
#include <wtf/text/CString.h>
namespace WebCore {
class FormDataList {
public:
class Item {
public:
Item() { }
Item(const WTF::CString& data) : m_data(data) { }
Item(Ref<Blob>&& blob, const String& filename)
: m_blob(WTFMove(blob))
, m_filename(filename)
{ }
const WTF::CString& data() const { return m_data; }
Blob* blob() const { return m_blob.get(); }
const String& filename() const { return m_filename; }
private:
WTF::CString m_data;
RefPtr<Blob> m_blob;
String m_filename;
};
FormDataList(const TextEncoding&);
void appendData(const String& key, const String& value)
{
appendString(key);
appendString(value);
}
void appendData(const String& key, const CString& value)
{
appendString(key);
appendString(value);
}
void appendData(const String& key, int value)
{
appendString(key);
appendString(String::number(value));
}
void appendBlob(const String& key, Ref<Blob>&& blob, const String& filename = String())
{
appendString(key);
appendBlob(WTFMove(blob), filename);
}
const Vector<Item>& items() const { return m_items; }
const TextEncoding& encoding() const { return m_encoding; }
private:
void appendString(const CString&);
void appendString(const String&);
void appendBlob(Ref<Blob>&&, const String& filename);
TextEncoding m_encoding;
Vector<Item> m_items;
};
}