Browse Source

http requests could be overriden

dmuratshin 9 years ago
parent
commit
8fb853124c

+ 11 - 3
oxygine/src/HttpRequestTask.cpp

@@ -4,11 +4,14 @@
 
 namespace oxygine
 {
-#if OX_NO_HTTP
+    HttpRequestTask::createHttpRequestCallback _createRequestsCallback = 0;
+
     spHttpRequestTask HttpRequestTask::create()
     {
-        return 0;
+        return _createRequestsCallback();
     }
+
+#if OX_NO_HTTP
     void HttpRequestTask::init() {}
     void HttpRequestTask::release() {}
 #endif
@@ -21,6 +24,11 @@ namespace oxygine
         log::messageln("~HttpRequestTask");
     }
 
+    void HttpRequestTask::setCustomRequests(createHttpRequestCallback cb)
+    {
+        _createRequestsCallback = cb;
+    }
+
     void HttpRequestTask::setPostData(const std::vector<unsigned char>& data)
     {
         _postData = data;
@@ -106,7 +114,7 @@ namespace oxygine
     {
         log::warning("http request error: %s", _url.c_str());
     }
-    
+
     void HttpRequestTask::_onComplete()
     {
         log::messageln("http request done: %s", _url.c_str());

+ 3 - 3
oxygine/src/HttpRequestTask.h

@@ -11,7 +11,8 @@ namespace oxygine
     {
     public:
         static spHttpRequestTask create();
-
+        typedef HttpRequestTask* (*createHttpRequestCallback)();
+        static void setCustomRequests(createHttpRequestCallback);
         static void init();
         static void release();
 
@@ -40,7 +41,7 @@ namespace oxygine
         const std::vector<unsigned char>&   getResponse() const;
         const std::vector<unsigned char>&   getPostData() const;
         const std::string&                  getFileName() const;
-        bool                                getCacheEnabled() const;
+
 
         /**swap version of getResponse if you want to modify result buffer inplace*/
         void getResponseSwap(std::vector<unsigned char>&);
@@ -51,7 +52,6 @@ namespace oxygine
         void setFileName(const std::string& name);
         void setCacheEnabled(bool enabled);
 
-
     protected:
         void _prerun();
         void _onError() OVERRIDE;

+ 1 - 1
oxygine/src/core/ZipFileSystem.cpp

@@ -402,7 +402,7 @@ namespace oxygine
                 {
                     case SEEK_SET:
                         _cpos = offset;
-                        return file::seek(_h, (unsigned int)( _pos + offset), SEEK_SET);
+                        return file::seek(_h, (unsigned int)(_pos + offset), SEEK_SET);
                     case SEEK_CUR:
                         _cpos += offset;
                         return file::seek(_h, offset, SEEK_CUR);

+ 6 - 0
oxygine/src/core/android/HttpRequestJavaTask.cpp

@@ -5,9 +5,15 @@ namespace oxygine
 {
     jclass _jHttpRequestsClass = 0;
     jmethodID _jCreateRequestMethod = 0;
+    static HttpRequestTask* createTask()
+    {
+        return new HttpRequestJavaTask;
+    }
 
     void HttpRequestTask::init()
     {
+        setCustomRequests(createTask);
+
         JNIEnv* env = jniGetEnv();
         LOCAL_REF_HOLDER(env);
 

+ 5 - 1
oxygine/src/core/curl/HttpRequestCurlTask.cpp

@@ -12,7 +12,7 @@ namespace oxygine
     static ThreadDispatcher _messages;
     //ThreadMessages _main;
 
-    spHttpRequestTask HttpRequestTask::create()
+    static HttpRequestTask* createCurl()
     {
         return new HttpRequestTaskCURL;
     }
@@ -140,6 +140,7 @@ namespace oxygine
     {
         if (multi_handle)
             return;
+        setCustomRequests(createCurl);
         multi_handle = curl_multi_init();
         pthread_create(&_thread, 0, thread, 0);
     }
@@ -216,6 +217,9 @@ namespace oxygine
         curl_easy_setopt(_easy, CURLOPT_FOLLOWLOCATION, true);
         curl_easy_setopt(_easy, CURLOPT_NOPROGRESS, 0);
 
+        //curl_slist *header = curl_slist_append(0, "hello");
+        //curl_easy_setopt(_easy, CURLOPT_HEADER, header);
+
         if (!_postData.empty())
         {
             curl_slist* headers = NULL; // init to NULL is important

+ 7 - 0
oxygine/src/core/ios/HttpRequestCocoaTask.mm

@@ -7,6 +7,12 @@
 using namespace oxygine;
 static char taskKey;
 
+
+static HttpRequestTask *createTask()
+{
+    return new HttpRequestCocoaTask;
+}
+
 @interface HttpRequests:NSObject<NSURLSessionDownloadDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate>
 {
 }
@@ -164,6 +170,7 @@ namespace oxygine
         if (_httpRequestTaskInitialized++)
             return;
         
+        setCustomRequests(createTask);
         _cls = [[HttpRequests alloc] init];
     }