OSDN Git Service

Version 0.6.158, fix X.Net.JSONP.
[pettanr/clientJs.git] / 0.6.x / js / 06_net / 05_XXHRGadget.js
index 0a04809..1d294e0 100644 (file)
@@ -23,6 +23,7 @@ var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
        \r
        X_NET_GIMR_GADGET_XML_URL = 'http://googledrive.com/host/0B4Y86MXyTfuoVUkwTE54T3V1V1U',\r
        \r
+       // https://kldleov8fp2dl82hphfmor8riij82tof-a-sites-opensocial.googleusercontent.com/gadgets/ifr\r
        X_NET_GIMR_GADGET_URL     = 'http://www.ig.gmodules.com/gadgets/ifr?url=' + encodeURIComponent( X_NET_GIMR_GADGET_XML_URL ) + '&nocache=1',\r
        \r
        X_NET_GIMR_IMAGE_URL      = 'img/opacity0.gif',\r
@@ -39,12 +40,14 @@ var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
        \r
        X_NET_GIMR_phase = 0,\r
        \r
-       X_NET_GIMR_lastHashString;\r
+       X_NET_GIMR_lastHashString,\r
+       \r
+       X_NET_GIMR_isReceiveBatches, X_NET_GIMR_receivedString;\r
 \r
 \r
 function X_NET_GIMR_detectImageOverIframe(){\r
        var raw = X_NET_GIMR_gadgetIframe[ '_rawObject' ],\r
-               iwin, ret, error, data = null;\r
+               iwin, ret, n, error, data = null, zero, e;\r
        \r
        if( raw ){\r
                iwin = raw.contentWindow || ( raw.contentDocument && raw.contentDocument.parentWindow ) || window.frames[ X_NET_GIMR_iframeName ];\r
@@ -53,7 +56,8 @@ function X_NET_GIMR_detectImageOverIframe(){
                        ret = X_NET_GIMR_detection( iwin.frames );\r
                        if( ret && ret !== X_NET_GIMR_lastHashString ){\r
                                X_NET_GIMR_lastHashString = ret;\r
-                               console.log( ret );\r
+                               //console.log( ret.length );\r
+                               //console.log( '' + ret );\r
                                \r
                                switch( X_NET_GIMR_phase ){\r
                                        case 0 : // init\r
@@ -66,7 +70,33 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                break;\r
 \r
                                        case 2 : // _waiting_ 通信結果待ち\r
-                                               ret = X_String_parseTrustedJsonString( decodeURIComponent( ret.substr( 1 ) ) );\r
+                                               // 分割受信モードか?\r
+                                               ret = ret.substr( 1 );\r
+                                               n   = parseInt( ret );\r
+                                               \r
+                                               if( X_NET_GIMR_isReceiveBatches ){\r
+                                                       X_NET_GIMR_receivedString += ret;\r
+                                                       if( --X_NET_GIMR_isReceiveBatches ){\r
+                                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;\r
+                                                               return;\r
+                                                       };\r
+                                               } else\r
+                                               if( 1 < n ){\r
+                                                       X_NET_GIMR_receivedString   = ret.substr( ( n + ':' ).length );\r
+                                                       X_NET_GIMR_isReceiveBatches = --n;\r
+                                                       iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;\r
+                                                       // speedup\r
+                                                       X_NET_GIMR_timerID = X_Timer_add( 16, 0, X_NET_GIMR_detectImageOverIframe );\r
+                                                       return X_Callback_UN_LISTEN;\r
+                                               } else {\r
+                                                       X_NET_GIMR_receivedString = ret;\r
+                                               };\r
+\r
+                                               zero = String.fromCharCode( 0 );\r
+                                               console.log( _builtin_decodeURI( X_NET_GIMR_receivedString ).split( zero + '002' ).join( '--' ).split( zero + 'E0F' ).join( '--' ) );\r
+                                               ret = X_String_parseTrustedJsonString( _builtin_decodeURI( X_NET_GIMR_receivedString ).split( zero + '002' ).join( '。' ).split( zero + 'F0E' ).join( '.' ) );\r
+                                               \r
+                                               X_NET_GIMR_receivedString = '';\r
                                                \r
                                                error = ret[ 'errors' ] && ret[ 'errors' ].length;\r
                                                \r
@@ -76,21 +106,24 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                                break;\r
                                                };\r
                                                \r
-                                               console.dir( data || ret );\r
+                                               //console.dir( data || ret );\r
                                                \r
                                                X_NET_GIMRWrapper._busy = false;\r
                                                \r
                                                X_NET_GIMRWrapper\r
-                                                       [ 'asyncDispatch' ]({\r
-                                                               type      : error ? X_EVENT_ERROR : X_EVENT_SUCCESS,\r
-                                                               state     : ret[ 'rc' ] || ( error ? 400 : 200 ),\r
+                                                       [ 'asyncDispatch' ]( e = {\r
+                                                               type      : error || ret[ 'rc' ] < 200 || 400 < ret[ 'rc' ] ? X_EVENT_ERROR : X_EVENT_SUCCESS,\r
+                                                               status    : ret[ 'rc' ] || ( error ? ret[ 'code' ] || 400 : 200 ),\r
                                                                data      : data,\r
                                                                'headers' : ret[ 'headers' ],\r
                                                                'message' : error && ret[ 'errors' ].join( '\n' )\r
                                                        });\r
-                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_';\r
+                                               \r
+                                               //console.dir( e );\r
+                                                       \r
                                                X_NET_GIMR_timerID = X_NET_GIMR_phase = 0;\r
-                                               X_NET_GIMR_lastHashString = '';\r
+                                               X_NET_GIMR_lastHashString = '';                                                 \r
+                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_';\r
                                                \r
                                                return X_Callback_UN_LISTEN;\r
                                };\r
@@ -115,13 +148,19 @@ function X_NET_GIMR_toJSONString( obj ){
 \r
 \r
 X_TEMP.X_Net_GIMR_init = function(){\r
+       // TODO extend NinjaIframe\r
+       X_NET_GIMRWrapper = X_Class_override(\r
+                       X_EventDispatcher(),\r
+                       X_TEMP.X_Net_GIMR_props\r
+               );\r
        \r
-delete X_TEMP.X_Net_GIMR_init;\r
+       delete X_TEMP.X_Net_GIMR_init;\r
+       delete X_TEMP.X_Net_GIMR_props; \r
+       \r
+       return X_NET_GIMRWrapper;\r
+};\r
 \r
-// TODO extend NinjaIframe\r
-X_NET_GIMRWrapper = X_Class_override(\r
-       X_EventDispatcher(),\r
-       {\r
+X_TEMP.X_Net_GIMR_props = {\r
 \r
                _busy         : false,\r
                _canceled     : false,\r
@@ -145,9 +184,11 @@ X_NET_GIMRWrapper = X_Class_override(
                                                        } );\r
                        };\r
                        \r
-                       X_NET_GIMR_timerID = X.Timer.add( 100, 0, X_NET_GIMR_detectImageOverIframe );\r
+                       X_NET_GIMR_timerID = X_Timer_add( 333, 0, X_NET_GIMR_detectImageOverIframe );\r
                        \r
                        X_NET_GIMR_requestOriginal = X_Object_deepCopy( obj );\r
+       \r
+                       //console.dir( obj );\r
                        \r
                        X_NET_GIMR_requestOptions = {\r
                                'CONTENT_TYPE'     : 'TEXT',\r
@@ -157,7 +198,7 @@ X_NET_GIMRWrapper = X_Class_override(
                        };\r
                        \r
                        for( k in obj ){\r
-                               if( v = obj[ k ] ){\r
+                               if( v = '' + obj[ k ] ){\r
                                        switch( k ){\r
                                                case 'postdata' :\r
                                                        X_NET_GIMR_requestOptions[ 'POST_DATA' ] = v;\r
@@ -167,7 +208,7 @@ X_NET_GIMRWrapper = X_Class_override(
                                                        break;                                  \r
                                                case 'dataType' :\r
                                                        // TEXT 以外は無視される?\r
-                                                       switch( v = ( '' + v ).toUpperCase() ){\r
+                                                       switch( v = v.toUpperCase() ){\r
                                                                case 'TEXT' :\r
                                                                case 'JSON' :\r
                                                                        X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = v;\r
@@ -182,7 +223,7 @@ X_NET_GIMRWrapper = X_Class_override(
                                                        };              \r
                                                        break;\r
                                                case 'headers' :\r
-                                                       X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_NET_GIMR_requestOriginal[ v ];\r
+                                                       X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_NET_GIMR_requestOriginal[ k ];\r
                                                        break;\r
                                                case 'cashe' :\r
                                                        X_NET_GIMR_requestOptions[ 'REFRESH_INTERVAL' ] = 3600;\r
@@ -202,10 +243,5 @@ X_NET_GIMRWrapper = X_Class_override(
                        this._busy = this._canceled = false;\r
                        this._onloadCount = 0;\r
                }\r
-       }\r
-);\r
-\r
-return X_NET_GIMRWrapper;\r
-\r
-};\r
+       };\r
 \r