OSDN Git Service

Version 0.6.146, fix XHR.send, add RegExp free encodeURIComponent, fix X.Object.deepCopy.
[pettanr/clientJs.git] / 0.6.x / js / 06_net / 00_XNet.js
index 0257822..bafbeef 100644 (file)
@@ -74,7 +74,7 @@ X[ 'Net' ] = X_EventDispatcher[ 'inherits' ](
                                                                alert( 'X.Net args error' );\r
                                                                return; \r
                                                };\r
-\r
+                                               url = opt[ 'url'  ];\r
                                        };\r
                                        \r
                                        if( !X_Type_isString( url ) ){\r
@@ -107,7 +107,7 @@ X[ 'Net' ] = X_EventDispatcher[ 'inherits' ](
                                        \r
                                };                              \r
                                \r
-                               opt = X_Object_clone( opt );\r
+                               opt = X_Object_deepCopy( opt );\r
                                opt.netType   = type;\r
                                opt[ 'url'  ] = url;\r
                                \r
@@ -156,7 +156,7 @@ var X_NET_TYPE_XHR   = 1,
        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
@@ -185,8 +185,16 @@ function X_NET_proxyDispatch( e ){
                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
@@ -205,6 +213,7 @@ function X_NET_proxyDispatch( e ){
 };\r
 \r
 function X_NET_shiftQueue(){\r
+       var auth, authSettings;\r
 \r
        if( X_NET_currentQueue ){\r
                if( X_NET_currentWrapper._busy ) return;\r
@@ -222,6 +231,28 @@ function X_NET_shiftQueue(){
        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