]> git.sur5r.net Git - minitube/blobdiff - lib/http/src/cachedhttp.h
New upstream version 3.5.1
[minitube] / lib / http / src / cachedhttp.h
index 01fef133a624386eccf50072f6bb94d85c788abb..4ce5e1294f1dfdbf8c4c0f0e8639182815a2dbbc 100644 (file)
@@ -12,6 +12,7 @@ public:
     void setMaxSize(uint maxSize);
     void setCachePostRequests(bool value) { cachePostRequests = value; }
     void setIgnoreHostname(bool value) { ignoreHostname = value; }
+    auto &getValidators() { return validators; };
     HttpReply *request(const HttpRequest &req);
 
 private:
@@ -21,6 +22,10 @@ private:
     LocalCache *cache;
     bool cachePostRequests;
     bool ignoreHostname = false;
+
+    /// Mapping is MIME -> validating function
+    /// Use * as MIME to define a catch-all validator
+    QMap<QByteArray, std::function<bool(const HttpReply &)>> validators;
 };
 
 class CachedHttpReply : public HttpReply {
@@ -44,7 +49,10 @@ class WrappedHttpReply : public HttpReply {
     Q_OBJECT
 
 public:
-    WrappedHttpReply(LocalCache *cache, const QByteArray &key, HttpReply *httpReply);
+    WrappedHttpReply(CachedHttp &cachedHttp,
+                     LocalCache *cache,
+                     const QByteArray &key,
+                     HttpReply *httpReply);
     QUrl url() const { return httpReply->url(); }
     int statusCode() const { return httpReply->statusCode(); }
     QByteArray body() const { return httpReply->body(); }
@@ -53,6 +61,7 @@ private slots:
     void originFinished(const HttpReply &reply);
 
 private:
+    CachedHttp &cachedHttp;
     LocalCache *cache;
     QByteArray key;
     HttpReply *httpReply;