OSDN Git Service

Version 0.6.160, fix X.Net.
[pettanr/clientJs.git] / 0.6.x / js / 06_net / 05_XXHRGadget.js
index 28dc843..bbff1e0 100644 (file)
@@ -1,3 +1,5 @@
+//{+xhrgadget"OpenSocialガジェット通信プロキシ"(Xドメインは元よりXプロトコルな擬似xhr通信を可能にする)[+xhr]\r
+\r
 /*\r
  * gadgets.io.makeRequest\r
  * \r
  * \r
  */\r
 \r
-\r
-\r
 var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],\r
        \r
        X_NET_GIMR_iframeName     = 'gadgetProxy_' + ( Math.random() * 100000 | 0 ),\r
        \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
@@ -41,7 +42,7 @@ var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
        \r
        X_NET_GIMR_lastHashString,\r
        \r
-       X_NET_GIMR_isReceiveBatches, X_NET_GIMR_receivedString;\r
+       X_NET_GIMR_isReceiveBatches, X_NET_GIMR_receivedString = '';\r
 \r
 \r
 function X_NET_GIMR_detectImageOverIframe(){\r
@@ -61,7 +62,7 @@ function X_NET_GIMR_detectImageOverIframe(){
                                switch( X_NET_GIMR_phase ){\r
                                        case 0 : // init\r
                                                // TODO 分割\r
-                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( X_NET_GIMR_toJSONString( X_NET_GIMR_requestOptions ) );\r
+                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( X_JSON_stringify( X_NET_GIMR_requestOptions ) );\r
                                                break;\r
                                                \r
                                        case 1 : // after makeRequest > :ok 待ち\r
@@ -74,26 +75,26 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                n   = parseInt( ret );\r
                                                \r
                                                if( X_NET_GIMR_isReceiveBatches ){\r
-                                                       X_NET_GIMR_receivedString += ret;\r
+                                                       X_NET_GIMR_receivedString += X_Net_GIMR_decodeLocationHash( 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
+                                                       ret = ret.substr( ( n + ':' ).length );\r
+                                                       X_NET_GIMR_receivedString   = X_Net_GIMR_decodeLocationHash( ret );\r
                                                        X_NET_GIMR_isReceiveBatches = --n;\r
                                                        iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;\r
-                                                       // TODO speedup\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
+                                                       X_NET_GIMR_receivedString = X_Net_GIMR_decodeLocationHash( 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
+                                               ret = X_String_parseTrustedJsonString( X_NET_GIMR_receivedString );\r
+                                               \r
                                                \r
                                                X_NET_GIMR_receivedString = '';\r
                                                \r
@@ -113,12 +114,12 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                        [ '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
+                                                               response  : data,\r
                                                                'headers' : ret[ 'headers' ],\r
                                                                'message' : error && ret[ 'errors' ].join( '\n' )\r
                                                        });\r
                                                \r
-                                               //console.dir( e );\r
+                                               console.dir( e );\r
                                                        \r
                                                X_NET_GIMR_timerID = X_NET_GIMR_phase = 0;\r
                                                X_NET_GIMR_lastHashString = '';                                                 \r
@@ -132,28 +133,25 @@ function X_NET_GIMR_detectImageOverIframe(){
        };\r
 };\r
 \r
-// コマンドが長い場合、分割する\r
-function X_NET_GIMR_toJSONString( obj ){\r
-       var json = '', k, v;\r
-       for( k in obj ){\r
-               if( json ) json += ',';\r
-               v = obj[ k ];\r
-               v = v || v === 0 ? v : null;\r
-               json += '"' + k + '":' + ( X_Type_isObject( v ) ? X_NET_GIMR_toJSONString( v ) : X_Type_isString( v ) ? '"' + v + '"' : v );\r
-       };\r
-       console.log( json );\r
-       return '{' + json + '}';\r
+// http://outcloud.blogspot.jp/2015/06/gecko-location-hash.html\r
+function X_Net_GIMR_decodeLocationHash( str ){\r
+       return X_UA[ 'Gecko' ] ? unescape( str ) : decodeURIComponent( str );\r
 };\r
 \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
@@ -169,7 +167,7 @@ X_NET_GIMRWrapper = X_Class_override(
                                                        name              : X_NET_GIMR_iframeName,\r
                                                        id                : X_NET_GIMR_iframeName,\r
                                                        src               : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent(\r
-                                                               X_NET_GIMR_toJSONString( { 'img' : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ), 'len' : 1000, 'itvl' : 200 } ) ),\r
+                                                               X_JSON_stringify( { 'img' : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ), 'len' : 1000, 'itvl' : 200 } ) ),\r
                                                        scrolling         : 'no',\r
                                                        allowtransparency : 'no',                                       \r
                                                        frameborder       : 0,\r
@@ -236,10 +234,6 @@ 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
+//}+xhrgadget
\ No newline at end of file