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(-)
----------------------------------------------------------------------