#ifndef RSSFilterStream_h
#define RSSFilterStream_h
#include <network/FilterStream.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class RSSFilterStream : public BlackBerry::Platform::FilterStream {
public:
enum ResourceType {
TypeUnknown,
TypeNotRSS,
TypeRSS10,
TypeRSS20,
TypeRSSAtom
};
RSSFilterStream();
virtual void notifyStatusReceived(int status, const BlackBerry::Platform::String& message);
virtual void notifyHeadersReceived(const BlackBerry::Platform::NetworkRequest::HeaderList&);
virtual void notifyDataReceived(BlackBerry::Platform::NetworkBuffer*);
virtual void notifyClose(int status);
private:
bool convertContentToHtml(std::string& result);
void handleRSSContent();
const std::string& charset();
const std::string& encoding();
void saveHeaders(const BlackBerry::Platform::NetworkRequest::HeaderList&);
void removeHeader(const char* key);
void updateHeader(const char* key, const BlackBerry::Platform::String& value);
void updateRSSHeaders(size_t);
void sendSavedHeaders();
void appendData(BlackBerry::Platform::NetworkBuffer*);
BlackBerry::Platform::NetworkRequest::HeaderList m_headers;
std::string m_content;
std::string m_charset;
std::string m_encoding;
ResourceType m_resourceType;
int m_contentTypeIndex;
bool m_charsetChecked;
bool m_encodingChecked;
};
}
#endif // RSSFilterStream_h