Index: include/AdblockPlus/IWebRequest.h |
diff --git a/include/AdblockPlus/WebRequest.h b/include/AdblockPlus/IWebRequest.h |
similarity index 75% |
copy from include/AdblockPlus/WebRequest.h |
copy to include/AdblockPlus/IWebRequest.h |
index 6c206c9d5c3b8e2229feec11eca8ebb4e2f1abd4..110d25fdebdbdf2530f568ef547a25595da0c5ac 100644 |
--- a/include/AdblockPlus/WebRequest.h |
+++ b/include/AdblockPlus/IWebRequest.h |
@@ -15,20 +15,21 @@ |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
-#ifndef ADBLOCK_PLUS_WEB_REQUEST_H |
-#define ADBLOCK_PLUS_WEB_REQUEST_H |
+#ifndef ADBLOCK_PLUS_IWEB_REQUEST_H |
+#define ADBLOCK_PLUS_IWEB_REQUEST_H |
+#include <cstdint> |
+#include <functional> |
#include <memory> |
-#include <stdint.h> |
-#include <string> |
#include <vector> |
+#include <string> |
namespace AdblockPlus |
{ |
/** |
* List of HTTP headers. |
*/ |
- typedef std::vector<std::pair<std::string, std::string> > HeaderList; |
+ typedef std::vector<std::pair<std::string, std::string>> HeaderList; |
/** |
* HTTP response. |
@@ -66,15 +67,14 @@ namespace AdblockPlus |
}; |
/** |
- * Web request interface. |
+ * Web request interface used to implement XMLHttpRequest. |
*/ |
- class WebRequest |
+ struct IWebRequest |
{ |
- public: |
/** |
* Possible [Mozilla status codes](https://developer.mozilla.org/en/docs/Table_Of_Errors#Network_Errors). |
*/ |
- enum |
+ enum MozillaStatusCode |
{ |
NS_OK = 0, |
NS_ERROR_FAILURE = 0x80004005, |
@@ -94,21 +94,26 @@ namespace AdblockPlus |
NS_ERROR_NOT_INITIALIZED = 0xc1f30001 |
}; |
- virtual inline ~WebRequest() {}; |
+ /** |
+ * Callback type invoked when the server response is ready. |
+ * The parameter is the server response. |
+ */ |
+ typedef std::function<void(const ServerResponse&)> GetCallback; |
+ virtual ~IWebRequest() {}; |
/** |
* Performs a GET request. |
* @param url Request URL. |
* @param requestHeaders Request headers. |
- * @return HTTP response. |
+ * @param getCallback to invoke when the server response is ready. |
*/ |
- virtual ServerResponse GET(const std::string& url, const HeaderList& requestHeaders) const = 0; |
+ virtual void GET(const std::string& url, const HeaderList& requestHeaders, const GetCallback& getCallback) = 0; |
}; |
/** |
- * Shared smart pointer to a `WebRequest` instance. |
+ * Unique smart pointer to an instance of `IWebRequest` implementation. |
*/ |
- typedef std::shared_ptr<WebRequest> WebRequestPtr; |
+ typedef std::unique_ptr<IWebRequest> WebRequestPtr; |
} |
#endif |