alert( 'X.Net args error' );\r
return; \r
};\r
-\r
+ url = opt[ 'url' ];\r
};\r
\r
if( !X_Type_isString( url ) ){\r
\r
}; \r
\r
- opt = X_Object_clone( opt );\r
+ opt = X_Object_deepCopy( opt );\r
opt.netType = type;\r
opt[ 'url' ] = url;\r
\r
X_NET_completePhase;\r
\r
function X_NET_proxyDispatch( e ){\r
- var i, flag;\r
+ var i, flag, auth;\r
\r
switch( e.type ){\r
case X_EVENT_BEFORE_KILL_INSTANCE :\r
case X_EVENT_PROGRESS :\r
this[ 'dispatch' ]( e );\r
break;\r
- case X_EVENT_SUCCESS :\r
+ \r
case X_EVENT_ERROR :\r
+ if( e.status === 401 ){\r
+ auth = X_Pair_get( this )[ 'auth' ];\r
+ if( auth ){\r
+ X_Pair_get( auth ).onAuthError( auth );\r
+ };\r
+ };\r
+ \r
+ case X_EVENT_SUCCESS :\r
case X_EVENT_TIMEOUT :\r
X_NET_completePhase = true;\r
this\r
};\r
\r
function X_NET_shiftQueue(){\r
+ var auth, authSettings;\r
\r
if( X_NET_currentQueue ){\r
if( X_NET_currentWrapper._busy ) return;\r
switch( X_NET_currentData.netType ){\r
case X_NET_TYPE_XHR :\r
X_NET_currentWrapper = X_NET_XHRWrapper || X_TEMP.X_Net_XHR_init();\r
+ // TODO OAuth2\r
+ // oauth2.authState() -> NEED_AUTH -> COMPLETE, refresh 中なら後回し。\r
+ \r
+ if( auth = X_NET_currentData[ 'auth' ] ){\r
+ authSettings = X_Pair_get( auth );\r
+ switch( auth.state() ){\r
+ case 0 :\r
+ case 1 :\r
+ if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_Callback_PREVENT_DEFAULT ) ){\r
+ authSettings.lazyReq = X_NET_currentQueue;\r
+ };\r
+ X_NET_currentQueue = null;\r
+ X_NET_shiftQueue();\r
+ break;\r
+ case 2 : // refresh token\r
+ X_NET_QUEUE_LIST.push( X_NET_currentQueue );\r
+ X_NET_currentQueue = null;\r
+ X_NET_shiftQueue();\r
+ return;\r
+ };\r
+ authSettings.updateRequest( auth, X_NET_currentData );\r
+ };\r
break;\r
case X_NET_TYPE_JSONP :\r
X_NET_currentWrapper = X_NET_JSONPWrapper || X_TEMP.X_NET_JSONP_init();\r