| LEFT | RIGHT | 
|---|
| (no file at all) |  | 
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <http://adblockplus.org/>, | 2  * This file is part of Adblock Plus <http://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2014 Eyeo GmbH | 3  * Copyright (C) 2006-2014 Eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 #ifndef ADBLOCK_PLUS_WEB_REQUEST_H | 18 #ifndef ADBLOCK_PLUS_WEB_REQUEST_H | 
| 19 #define ADBLOCK_PLUS_WEB_REQUEST_H | 19 #define ADBLOCK_PLUS_WEB_REQUEST_H | 
| 20 | 20 | 
| 21 #include <stdint.h> | 21 #include <stdint.h> | 
| 22 #include <string> | 22 #include <string> | 
| 23 #include <vector> | 23 #include <vector> | 
| 24 | 24 | 
| 25 #include "tr1_memory.h" | 25 #include "tr1_memory.h" | 
| 26 | 26 | 
| 27 namespace AdblockPlus | 27 namespace AdblockPlus | 
| 28 { | 28 { | 
|  | 29   /** | 
|  | 30    * List of HTTP headers. | 
|  | 31    */ | 
| 29   typedef std::vector<std::pair<std::string, std::string> > HeaderList; | 32   typedef std::vector<std::pair<std::string, std::string> > HeaderList; | 
| 30 | 33 | 
|  | 34   /** | 
|  | 35    * HTTP response. | 
|  | 36    */ | 
| 31   struct ServerResponse | 37   struct ServerResponse | 
| 32   { | 38   { | 
|  | 39     //@{ | 
|  | 40     /** | 
|  | 41      * [Mozilla status code](https://developer.mozilla.org/en/docs/Table_Of_Erro
     rs#Network_Errors) | 
|  | 42      * indicating the network-level request status. | 
|  | 43      * This should be 0 (NS_OK) if the request succeeded. Note that this should | 
|  | 44      * be NS_OK if the server responded with an error code like "404 Not Found". | 
|  | 45      */ | 
| 33 #ifdef _WIN32 | 46 #ifdef _WIN32 | 
| 34     __int64 status; | 47     __int64 status; | 
| 35 #else | 48 #else | 
| 36     int64_t status; | 49     int64_t status; | 
| 37 #endif | 50 #endif | 
|  | 51     //@} | 
|  | 52 | 
|  | 53     /** | 
|  | 54      * List of response headers. | 
|  | 55      */ | 
| 38     HeaderList responseHeaders; | 56     HeaderList responseHeaders; | 
|  | 57 | 
|  | 58     /** | 
|  | 59      * HTTP status of the response (e.g.\ 404). | 
|  | 60      */ | 
| 39     int responseStatus; | 61     int responseStatus; | 
|  | 62 | 
|  | 63     /** | 
|  | 64      * Body text of the response. | 
|  | 65      */ | 
| 40     std::string responseText; | 66     std::string responseText; | 
| 41   }; | 67   }; | 
| 42 | 68 | 
|  | 69   /** | 
|  | 70    * Web request interface. | 
|  | 71    */ | 
| 43   class WebRequest | 72   class WebRequest | 
| 44   { | 73   { | 
| 45   public: | 74   public: | 
|  | 75     /** | 
|  | 76      * Possible [Mozilla status codes](https://developer.mozilla.org/en/docs/Tab
     le_Of_Errors#Network_Errors). | 
|  | 77      */ | 
| 46     enum | 78     enum | 
| 47     { | 79     { | 
| 48       NS_OK = 0, | 80       NS_OK = 0, | 
| 49       NS_ERROR_FAILURE = 0x80004005, | 81       NS_ERROR_FAILURE = 0x80004005, | 
| 50       NS_ERROR_OUT_OF_MEMORY = 0x8007000e, | 82       NS_ERROR_OUT_OF_MEMORY = 0x8007000e, | 
| 51       NS_ERROR_MALFORMED_URI = 0x804b000a, | 83       NS_ERROR_MALFORMED_URI = 0x804b000a, | 
| 52       NS_ERROR_CONNECTION_REFUSED = 0x804b000d, | 84       NS_ERROR_CONNECTION_REFUSED = 0x804b000d, | 
| 53       NS_ERROR_NET_TIMEOUT = 0x804b000e, | 85       NS_ERROR_NET_TIMEOUT = 0x804b000e, | 
| 54       NS_ERROR_NO_CONTENT = 0x804b0011, | 86       NS_ERROR_NO_CONTENT = 0x804b0011, | 
| 55       NS_ERROR_UNKNOWN_PROTOCOL = 0x804b0012, | 87       NS_ERROR_UNKNOWN_PROTOCOL = 0x804b0012, | 
| 56       NS_ERROR_NET_RESET = 0x804b0014, | 88       NS_ERROR_NET_RESET = 0x804b0014, | 
| 57       NS_ERROR_UNKNOWN_HOST = 0x804b001e, | 89       NS_ERROR_UNKNOWN_HOST = 0x804b001e, | 
| 58       NS_ERROR_REDIRECT_LOOP = 0x804b001f, | 90       NS_ERROR_REDIRECT_LOOP = 0x804b001f, | 
| 59       NS_ERROR_UNKNOWN_PROXY_HOST = 0x804b002a, | 91       NS_ERROR_UNKNOWN_PROXY_HOST = 0x804b002a, | 
| 60       NS_ERROR_NET_INTERRUPT = 0x804b0047, | 92       NS_ERROR_NET_INTERRUPT = 0x804b0047, | 
| 61       NS_ERROR_UNKNOWN_PROXY_CONNECTION_REFUSED = 0x804b0048, | 93       NS_ERROR_UNKNOWN_PROXY_CONNECTION_REFUSED = 0x804b0048, | 
| 62       NS_CUSTOM_ERROR_BASE = 0x80850000, | 94       NS_CUSTOM_ERROR_BASE = 0x80850000, | 
| 63       NS_ERROR_NOT_INITIALIZED = 0xc1f30001 | 95       NS_ERROR_NOT_INITIALIZED = 0xc1f30001 | 
| 64     }; | 96     }; | 
| 65 | 97 | 
| 66     virtual inline ~WebRequest() {}; | 98     virtual inline ~WebRequest() {}; | 
|  | 99 | 
|  | 100     /** | 
|  | 101      * Performs a GET request. | 
|  | 102      * @param url Request URL. | 
|  | 103      * @param requestHeaders Request headers. | 
|  | 104      * @return HTTP response. | 
|  | 105      */ | 
| 67     virtual ServerResponse GET(const std::string& url, const HeaderList& request
     Headers) const = 0; | 106     virtual ServerResponse GET(const std::string& url, const HeaderList& request
     Headers) const = 0; | 
| 68   }; | 107   }; | 
| 69 | 108 | 
|  | 109   /** | 
|  | 110    * Shared smart pointer to a `WebRequest` instance. | 
|  | 111    */ | 
| 70   typedef std::tr1::shared_ptr<WebRequest> WebRequestPtr; | 112   typedef std::tr1::shared_ptr<WebRequest> WebRequestPtr; | 
| 71 } | 113 } | 
| 72 | 114 | 
| 73 #endif | 115 #endif | 
| LEFT | RIGHT | 
|---|