8 class CachedHttp : public Http {
10 CachedHttp(Http &http = Http::instance(), const char *name = "http");
11 void setMaxSeconds(uint seconds);
12 void setMaxSize(uint maxSize);
13 void setCachePostRequests(bool value) { cachePostRequests = value; }
14 void setIgnoreHostname(bool value) { ignoreHostname = value; }
15 auto &getValidators() { return validators; };
16 HttpReply *request(const HttpRequest &req);
19 QByteArray requestHash(const HttpRequest &req);
23 bool cachePostRequests;
24 bool ignoreHostname = false;
26 /// Mapping is MIME -> validating function
27 /// Use * as MIME to define a catch-all validator
28 QMap<QByteArray, std::function<bool(const HttpReply &)>> validators;
31 class CachedHttpReply : public HttpReply {
35 CachedHttpReply(const QByteArray &body, const HttpRequest &req);
36 QUrl url() const { return req.url; }
37 int statusCode() const { return 200; }
38 QByteArray body() const;
44 const QByteArray bytes;
45 const HttpRequest req;
48 class WrappedHttpReply : public HttpReply {
52 WrappedHttpReply(CachedHttp &cachedHttp,
54 const QByteArray &key,
55 HttpReply *httpReply);
56 QUrl url() const { return httpReply->url(); }
57 int statusCode() const { return httpReply->statusCode(); }
58 QByteArray body() const { return httpReply->body(); }
61 void originFinished(const HttpReply &reply);
64 CachedHttp &cachedHttp;
70 #endif // CACHEDHTTP_H