You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by cx...@apache.org on 2017/03/09 10:08:55 UTC

[1/5] incubator-weex git commit: * [ios] bugfix stream failed callback

Repository: incubator-weex
Updated Branches:
  refs/heads/0.11-dev 265a63dac -> d42047fa3


* [ios] bugfix stream failed callback


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/7cd48021
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/7cd48021
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/7cd48021

Branch: refs/heads/0.11-dev
Commit: 7cd4802198af40a49c43265036355991f0e55d27
Parents: 4cd6054
Author: acton393 <zh...@gmail.com>
Authored: Thu Mar 9 16:26:10 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Mar 9 16:26:10 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7cd48021/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
index 5771e81..f318df6 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
@@ -164,6 +164,9 @@ WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
                 break;
         }
         [callbackRsp setObject:statusText forKey:@"statusText"];
+        if (callback) {
+            callback(callbackRsp);
+        }
     };
     
     [loader start];


[2/5] incubator-weex git commit: * [ios] call failed request with error when failed

Posted by cx...@apache.org.
* [ios] call failed request with error when failed


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/22b9477a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/22b9477a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/22b9477a

Branch: refs/heads/0.11-dev
Commit: 22b9477a554386a5b461eaf0625e057d48eb24e9
Parents: 7cd4802
Author: acton393 <zh...@gmail.com>
Authored: Thu Mar 9 16:27:43 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Mar 9 16:27:43 2017 +0800

----------------------------------------------------------------------
 .../Sources/Network/WXResourceRequestHandlerDefaultImpl.m     | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22b9477a/ios/sdk/WeexSDK/Sources/Network/WXResourceRequestHandlerDefaultImpl.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Network/WXResourceRequestHandlerDefaultImpl.m b/ios/sdk/WeexSDK/Sources/Network/WXResourceRequestHandlerDefaultImpl.m
index 211471f..7ea9d64 100644
--- a/ios/sdk/WeexSDK/Sources/Network/WXResourceRequestHandlerDefaultImpl.m
+++ b/ios/sdk/WeexSDK/Sources/Network/WXResourceRequestHandlerDefaultImpl.m
@@ -82,9 +82,12 @@ didReceiveResponse:(NSURLResponse *)response
 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
 {
     id<WXResourceRequestDelegate> delegate = [_delegates objectForKey:task];
-    [delegate requestDidFinishLoading:(WXResourceRequest *)task.originalRequest];
+    if (error) {
+        [delegate request:(WXResourceRequest *)task.originalRequest didFailWithError:error];
+    }else {
+        [delegate requestDidFinishLoading:(WXResourceRequest *)task.originalRequest];
+    }
     [_delegates removeObjectForKey:task];
 }
 
-
 @end


[3/5] incubator-weex git commit: * [ios] refactor stream module

Posted by cx...@apache.org.
* [ios] refactor stream module


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/89ebdc13
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/89ebdc13
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/89ebdc13

Branch: refs/heads/0.11-dev
Commit: 89ebdc13cf5514f0f3243951adaeece77eb38593
Parents: 22b9477
Author: acton393 <zh...@gmail.com>
Authored: Thu Mar 9 18:05:31 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Mar 9 18:05:31 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m | 239 +++++++++++--------
 1 file changed, 142 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/89ebdc13/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
index f318df6..b100e20 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
@@ -28,43 +28,116 @@ WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
     __block NSMutableDictionary * callbackRsp =[[NSMutableDictionary alloc] init];
     __block NSString *statusText = @"ERR_CONNECT_FAILED";
     
-    NSString *method = [options objectForKey:@"method"];
-    if ([WXUtility isBlankString:method]) {
-        // default HTTP method is GET
-        method = @"GET";
+    //build stream request
+    WXResourceRequest * request = [self _buildRequestWithOptions:options callbackRsp:callbackRsp];
+    if (!request) {
+        if (callback) {
+            callback(callbackRsp);
+        }
+        // failed with some invaild inputs
+        return ;
     }
+    
+    // notify to start request state
+    if (progressCallback) {
+        progressCallback(callbackRsp, TRUE);
+    }
+    
+    WXResourceLoader *loader = [[WXResourceLoader alloc] initWithRequest:request];
+    __weak typeof(self) weakSelf = self;
+    loader.onResponseReceived = ^(const WXResourceResponse *response) {
+        httpResponse = (NSHTTPURLResponse*)response;
+        if (weakSelf) {
+            [callbackRsp setObject:@{ @"HEADERS_RECEIVED" : @2 } forKey:@"readyState"];
+            [callbackRsp setObject:[NSNumber numberWithInteger:httpResponse.statusCode] forKey:@"status"];
+            [callbackRsp setObject:httpResponse.allHeaderFields forKey:@"headers"];
+            statusText = [WXStreamModule _getStatusText:httpResponse.statusCode];
+            [callbackRsp setObject:statusText forKey:@"statusText"];
+            [callbackRsp setObject:[NSNumber numberWithInteger:received] forKey:@"length"];
+            if (progressCallback) {
+                progressCallback(callbackRsp, TRUE);
+            }
+        }
+    };
+    
+    loader.onDataReceived = ^(NSData *data) {
+        if (weakSelf) {
+            [callbackRsp setObject:@{ @"LOADING" : @3 } forKey:@"readyState"];
+            received += [data length];
+            [callbackRsp setObject:[NSNumber numberWithInteger:received] forKey:@"length"];
+            if (progressCallback) {
+                progressCallback(callbackRsp, TRUE);
+            }
+        }
+    };
+    
+    loader.onFinished = ^(const WXResourceResponse * response, NSData *data) {
+        if (weakSelf) {
+            [weakSelf _loadFinishWithResponse:response data:data callbackRsp:callbackRsp];
+            if (callback) {
+                callback(callbackRsp);
+            }
+        }
+    };
+    
+    loader.onFailed = ^(NSError *error) {
+        if (weakSelf) {
+            [weakSelf _loadFailedWithError:error callbackRsp:callbackRsp];
+            if (callback) {
+                callback(callbackRsp);
+            }
+        }
+    };
+    
+    [loader start];
+}
+
+- (WXResourceRequest*)_buildRequestWithOptions:(NSDictionary*)options callbackRsp:(NSMutableDictionary*)callbackRsp
+{
+    // parse request url
     NSString *urlStr = [options objectForKey:@"url"];
     NSMutableString *newUrlStr = [urlStr mutableCopy];
     WX_REWRITE_URL(urlStr, WXResourceTypeLink, self.weexInstance, &newUrlStr)
+    urlStr = newUrlStr;
     
     if (!options || [WXUtility isBlankString:urlStr]) {
         [callbackRsp setObject:@(-1) forKey:@"status"];
         [callbackRsp setObject:@NO forKey:@"ok"];
-        if (callback) {
-            callback(callbackRsp);
-        }
         
-        return;
+        return nil;
     }
-    urlStr = newUrlStr;
-    NSDictionary *headers = [options objectForKey:@"headers"];
-    NSString *type = [options objectForKey:@"type"];
-    NSURL *url = [NSURL URLWithString:urlStr];
     
-    //TODO:referrer
-    WXResourceRequest *request = [WXResourceRequest requestWithURL:url resourceType:WXResourceTypeOthers referrer:nil cachePolicy:NSURLRequestUseProtocolCachePolicy];
+    WXResourceRequest *request = [WXResourceRequest requestWithURL:[NSURL URLWithString:urlStr] resourceType:WXResourceTypeOthers referrer:nil cachePolicy:NSURLRequestUseProtocolCachePolicy];
+    
+    // parse http method
+    NSString *method = [options objectForKey:@"method"];
+    if ([WXUtility isBlankString:method]) {
+        // default HTTP method is GET
+        method = @"GET";
+    }
     request.HTTPMethod = method;
+    
+    //parse responseType
+    NSString *responseType = [options objectForKey:@"type"];
+    [callbackRsp setObject:responseType?:@"JSON" forKey:@"responseType"];
+    
+    //parse timeout
     if ([options valueForKey:@"timeout"]){
-        //ms
+        //the time unit is ms
         [request setTimeoutInterval:([[options valueForKey:@"timeout"] floatValue])/1000];
     }
+    
+    //install client userAgent
     request.userAgent = [WXUtility userAgent];
     
+    // parse custom http headers
+    NSDictionary *headers = [options objectForKey:@"headers"];
     for (NSString *header in headers) {
         NSString *value = [headers objectForKey:header];
         [request setValue:value forHTTPHeaderField:header];
     }
-
+    
+    //parse custom body
     if ([options objectForKey:@"body"]) {
         NSData * body = nil;
         if ([[options objectForKey:@"body"] isKindOfClass:[NSString class]]) {
@@ -77,102 +150,74 @@ WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
         if (!body) {
             [callbackRsp setObject:@(-1) forKey:@"status"];
             [callbackRsp setObject:@NO forKey:@"ok"];
-            if (callback) {
-                callback(callbackRsp);
-            }
-            return;
+            return nil;
         }
         
         [request setHTTPBody:body];
     }
     
     [callbackRsp setObject:@{ @"OPENED": @1 } forKey:@"readyState"];
-    if (progressCallback) {
-        progressCallback(callbackRsp, TRUE);
-    }
     
-    WXResourceLoader *loader = [[WXResourceLoader alloc] initWithRequest:request];
-    __weak typeof(self) weakSelf = self;
-    loader.onResponseReceived = ^(const WXResourceResponse *response) {
-        httpResponse = (NSHTTPURLResponse*)response;
-        if (weakSelf) {
-            [callbackRsp setObject:@{ @"HEADERS_RECEIVED" : @2  } forKey:@"readyState"];
-            [callbackRsp setObject:[NSNumber numberWithInteger:httpResponse.statusCode] forKey:@"status"];
-            [callbackRsp setObject:httpResponse.allHeaderFields forKey:@"headers"];
-            statusText = [WXStreamModule getStatusText:httpResponse.statusCode];
-            [callbackRsp setObject:statusText forKey:@"statusText"];
-            [callbackRsp setObject:[NSNumber numberWithInteger:received] forKey:@"length"];
-            if (progressCallback) {
-                progressCallback(callbackRsp, TRUE);
-            }
-        }
-    };
+    return request;
+}
+
+- (void)_loadFailedWithError:(NSError*)error callbackRsp:(NSMutableDictionary*)callbackRsp
+{
+    [callbackRsp removeObjectForKey:@"readyState"];
+    [callbackRsp removeObjectForKey:@"length"];
+    [callbackRsp removeObjectForKey:@"keepalive"];
+    [callbackRsp removeObjectForKey:@"responseType"];
     
-    loader.onDataReceived = ^(NSData *data) {
-        [callbackRsp setObject:@{ @"LOADING" : @3 } forKey:@"readyState"];
-        received += [data length];
-        [callbackRsp setObject:[NSNumber numberWithInteger:received] forKey:@"length"];
-        if (progressCallback) {
-            progressCallback(callbackRsp, TRUE);
-        }
-    };
+    [callbackRsp setObject:@(-1) forKey:@"status"];
+    [callbackRsp setObject:[NSString stringWithFormat:@"%@(%ld)",[error localizedDescription], (long)[error code]] forKey:@"data"];
+    NSString * statusText = @"";
     
-    loader.onFinished = ^(const WXResourceResponse * response, NSData *data) {
-        [callbackRsp removeObjectForKey:@"readyState"];
-        [callbackRsp removeObjectForKey:@"length"];
-        [callbackRsp removeObjectForKey:@"keepalive"];
-        [callbackRsp setObject:httpResponse.statusCode >= 200 && httpResponse.statusCode <= 299 ? @YES : @NO forKey:@"ok"];
+    switch ([error code]) {
+        case -1000:
+        case -1002:
+        case -1003:
+            statusText = @"ERR_INVALID_REQUEST";
+            break;
+        default:
+            break;
+    }
+    [callbackRsp setObject:statusText forKey:@"statusText"];
     
-        NSString *responseData = [self stringfromData:data encode:httpResponse.textEncodingName];
-        if ([type isEqualToString:@"json"] || [type isEqualToString:@"jsonp"]) {
-            if ([type isEqualToString:@"jsonp"]) {
-                NSUInteger start = [responseData rangeOfString:@"("].location + 1 ;
-                NSUInteger end = [responseData rangeOfString:@")" options:NSBackwardsSearch].location;
-                if (end < [responseData length] && end > start) {
-                    responseData = [responseData substringWithRange:NSMakeRange(start, end-start)];
-                }
-            }
-            id jsonObj = [self JSONObjFromData:[responseData dataUsingEncoding:NSUTF8StringEncoding]];
-            if (jsonObj) {
-                [callbackRsp setObject:jsonObj forKey:@"data"];
-            }
-            
-        } else {
-            if (responseData) {
-                [callbackRsp setObject:responseData forKey:@"data"];
+}
+- (void)_loadFinishWithResponse:(WXResourceResponse*)response data:(NSData*)data callbackRsp:(NSMutableDictionary*)callbackRsp
+{
+    [callbackRsp removeObjectForKey:@"readyState"];
+    [callbackRsp removeObjectForKey:@"length"];
+    [callbackRsp removeObjectForKey:@"keepalive"];
+    
+    [callbackRsp setObject:((NSHTTPURLResponse*)response).statusCode >= 200 && ((NSHTTPURLResponse*)response).statusCode <= 299 ? @YES : @NO forKey:@"ok"];
+    
+    NSString *responseData = [self _stringfromData:data encode:((NSHTTPURLResponse*)response).textEncodingName];
+    NSString * responseType = [callbackRsp objectForKey:@"responseType"];
+    [callbackRsp removeObjectForKey:@"responseType"];
+    if (responseType) {
+        
+        if ([responseType isEqualToString:@"jsonp"]) {
+            //TODO: to be more elegant
+            NSUInteger start = [responseData rangeOfString:@"("].location + 1 ;
+            NSUInteger end = [responseData rangeOfString:@")" options:NSBackwardsSearch].location;
+            if (end < [responseData length] && end > start) {
+                responseData = [responseData substringWithRange:NSMakeRange(start, end-start)];
             }
         }
-        if (callback) {
-            callback(callbackRsp);
+        id jsonObj = [self _JSONObjFromData:[responseData dataUsingEncoding:NSUTF8StringEncoding]];
+        if (jsonObj) {
+            [callbackRsp setObject:jsonObj forKey:@"data"];
         }
-    };
-    
-    loader.onFailed = ^(NSError *error) {
-        [callbackRsp removeObjectForKey:@"readyState"];
-        [callbackRsp removeObjectForKey:@"length"];
-        [callbackRsp removeObjectForKey:@"keepalive"];
-        [callbackRsp setObject:@(-1) forKey:@"status"];
-        [callbackRsp setObject:[NSString stringWithFormat:@"%@(%ld)",[error localizedDescription], (long)[error code]] forKey:@"data"];
         
-        switch ([error code]) {
-            case -1000:
-            case -1002:
-            case -1003:
-                statusText = @"ERR_INVALID_REQUEST";
-                break;
-            default:
-                break;
-        }
-        [callbackRsp setObject:statusText forKey:@"statusText"];
-        if (callback) {
-            callback(callbackRsp);
+    } else {
+        if (responseData) {
+            [callbackRsp setObject:responseData forKey:@"data"];
         }
-    };
-    
-    [loader start];
+    }
 }
 
-- (NSString*)stringfromData:(NSData *)data encode:(NSString *)encoding
+- (NSString*)_stringfromData:(NSData *)data encode:(NSString *)encoding
 {
     NSMutableString *responseData = nil;
     if (data) {
@@ -190,7 +235,7 @@ WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
     return responseData;
 }
 
-- (id)JSONObjFromData:(NSData *)data
+- (id)_JSONObjFromData:(NSData *)data
 {
     NSError * error = nil;
     id jsonObj = [WXUtility JSONObject:data error:&error];
@@ -200,7 +245,7 @@ WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
     return jsonObj;
 }
 
-+ (NSString*)getStatusText:(NSInteger)code
++ (NSString*)_getStatusText:(NSInteger)code
 {    
     switch (code) {
         case -1:


[5/5] incubator-weex git commit: Merge branch '0.11-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 0.11-dev

Posted by cx...@apache.org.
Merge branch '0.11-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into 0.11-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/d42047fa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/d42047fa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/d42047fa

Branch: refs/heads/0.11-dev
Commit: d42047fa3b5d7bbaeac6e9f424a30f1b02503ac4
Parents: 44aa0e0 265a63d
Author: cxfeng <cx...@apache.org>
Authored: Thu Mar 9 18:08:45 2017 +0800
Committer: cxfeng <cx...@apache.org>
Committed: Thu Mar 9 18:08:45 2017 +0800

----------------------------------------------------------------------
 android/sdk/assets/main.js                            | 14 +++++++-------
 .../java/com/taobao/weex/ui/module/WXMetaModule.java  |  2 +-
 .../main/java/com/taobao/weex/utils/WXViewUtils.java  | 14 +++++++++++++-
 3 files changed, 21 insertions(+), 9 deletions(-)
----------------------------------------------------------------------



[4/5] incubator-weex git commit: Merge branch '0.11-dev' of https://github.com/acton393/incubator-weex into 0.11-dev

Posted by cx...@apache.org.
Merge branch '0.11-dev' of https://github.com/acton393/incubator-weex into 0.11-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/44aa0e0a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/44aa0e0a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/44aa0e0a

Branch: refs/heads/0.11-dev
Commit: 44aa0e0a3c2beb4a11476340db51eac6ed1c8595
Parents: 8ea7df0 89ebdc1
Author: cxfeng <cx...@apache.org>
Authored: Thu Mar 9 18:08:27 2017 +0800
Committer: cxfeng <cx...@apache.org>
Committed: Thu Mar 9 18:08:27 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m | 236 +++++++++++--------
 .../WXResourceRequestHandlerDefaultImpl.m       |   7 +-
 2 files changed, 147 insertions(+), 96 deletions(-)
----------------------------------------------------------------------