import { _decorator, Component, log, Node, sys, utils } from 'cc';
import { config } from '../config';
import { gameManager } from '../gameManager';
const { ccclass, property } = _decorator;
@ccclass('http')
export class http extends Component {
    static get(url,call_back){
        try{
            if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME){
                const options = {
                    url: config.static_domain+url, //请求地址
                    method:  "GET",    //指定对应的网络请求方法，详见文档中method枚举值
                    // dataType:  "json", // 指定返回数据的类型为 json。不填默认为json
                    enableCache: false, //是否开启 cache ，不填默认为false
                    // responseType:  "text", //期望响应的数据类型
                    timeout:  60000, //超时时间，单位为毫秒（最大值 60000ms)
                  }
    
                  let task = tt.request({ 
                    ...options,
                    success(res) { //请求成功回调
                    //   console.log("请求成功", res.data);
                        call_back(null,JSON.stringify(res.data));
                    },
                    fail(res) {//请求失败回调
                        call_back( -1,null);
                        console.log("请求失败", res.errMsg);
                    },
                    complete(res){ //请求结束回调
                      console.log("调用接口结束",res.data)
                    }
                  });
    
            }else{
                var xml =  new XMLHttpRequest()
                xml.open('GET',config.domain+url)
                xml.setRequestHeader('Content-Type','text/plain');
                xml.send();
                // Special event
                xml.onreadystatechange = function () {
    
                    // console.log("e === ",xml)
                    if (xml.readyState === 4 && xml.status >= 200) {
                        //label.string = handler(xml.responseText);
                        call_back(null,xml.responseText);
                    } else if (xml.status === 404) {
                        call_back('404 page not found!',null);
                    } 
                    else if (xml.readyState === 3) {
                        call_back('Request dealing!',null);
                    } else if (xml.readyState === 2) {
                        call_back('Request received!',null);
                    } else if (xml.readyState === 1) {
                        call_back('Server connection established! Request hasn\'t been received',null);
                    } else if (xml.readyState === 0) {
                        call_back( 'Request hasn\'t been initiated!',null);
                    }else if (xml.readyState === 4 &&xml.status === 0) {
                        call_back( -1,null);
                    }
            }
           
            };
        }catch(e){
            console.log("e === ",e)
            call_back(-1,null)
        }
        


   }

   static post(url,_data:any,call_back){
        // console.log("post",sys.Platform.BYTEDANCE_MINI_GAME)
        // console.log("platform",sys.platform)
        if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME){
            const options = {
                url: config.domain+url, //请求地址
                data: _data,
                header: {
                  "token": gameManager.userInfo.token,
                },
                method:  "POST",    //指定对应的网络请求方法，详见文档中method枚举值
                // dataType:  "json", // 指定返回数据的类型为 json。不填默认为json
                enableCache: false, //是否开启 cache ，不填默认为false
                // responseType:  "text", //期望响应的数据类型
                timeout:  60000, //超时时间，单位为毫秒（最大值 60000ms)
              }

              let task = tt.request({ 
                ...options,
                success(res) { //请求成功回调
                //   console.log("请求成功", res.data);
                  call_back(null,JSON.stringify(res.data));
                },
                fail(res) {//请求失败回调
                    call_back( -1,null);
                    console.log("请求失败", res.errMsg);
       
                },
                complete(res){ //请求结束回调
                  console.log("调用接口结束",res.data)
                }
              });

        }else{
            var xml =  new XMLHttpRequest()
            xml.open('POST',config.domain+url)
            // xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xml.setRequestHeader('token',gameManager.userInfo.token);
            xml.send(_data);
    
            // Special event
            xml.onreadystatechange = function () {
                if (xml.readyState === 4 && xml.status >= 200) {
                    //label.string = handler(xml.responseText);
                    call_back(null,xml.responseText);
                } else if (xml.status === 404) {
                    call_back('404 page not found!',null);
     
                } else if (xml.readyState === 3) {
                    call_back('Request dealing!',null);
    
                } else if (xml.readyState === 2) {
                    call_back('Request received!',null);
       
                } else if (xml.readyState === 1) {
                    call_back('Server connection established! Request hasn\'t been received',null);
         
                } else if (xml.readyState === 0) {
                    call_back( 'Request hasn\'t been initiated!',null);
                }else if (xml.readyState === 4 &&xml.status === 0) {
                    call_back( -1,null);
                }
            };
        }
 
    }

    static post_statistics(url,_data:any,call_back){
        if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME){
            const options = {
                url: config.statistics_domain + url, //请求地址
                data: _data,
                header: {
                  "token": gameManager.userInfo.token,
                  "content": "application/x-www-form-urlencoded",
                },
                method:  "POST",    //指定对应的网络请求方法，详见文档中method枚举值
                // dataType:  "json", // 指定返回数据的类型为 json。不填默认为json
                enableCache: false, //是否开启 cache ，不填默认为false
                // responseType:  "text", //期望响应的数据类型
                timeout:  60000, //超时时间，单位为毫秒（最大值 60000ms)
              }
              console.log('tt_options=',options)

              let task = tt.request({ 
                ...options,
                success(res) { //请求成功回调
                //   console.log("请求成功", res.data);
                  call_back(null,JSON.stringify(res.data));
                },
                fail(res) {//请求失败回调
                    call_back( -1,null);
                    console.log("请求失败", res.errMsg);
       
                },
                complete(res){ //请求结束回调
                  console.log("调用接口结束",res.data)
                }
              });

        }else{
            var xml =  new XMLHttpRequest()
            xml.open('POST', config.statistics_domain + url)
            // xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xml.setRequestHeader('token',gameManager.userInfo.token);
            xml.send(_data);
    
            // Special event
            xml.onreadystatechange = function () {
                if (xml.readyState === 4 && xml.status >= 200) {
                    //label.string = handler(xml.responseText);
                    call_back(null,xml.responseText);
                } else if (xml.status === 404) {
                    call_back('404 page not found!',null);
     
                } else if (xml.readyState === 3) {
                    call_back('Request dealing!',null);
    
                } else if (xml.readyState === 2) {
                    call_back('Request received!',null);
       
                } else if (xml.readyState === 1) {
                    call_back('Server connection established! Request hasn\'t been received',null);
         
                } else if (xml.readyState === 0) {
                    call_back( 'Request hasn\'t been initiated!',null);
                }else if (xml.readyState === 4 &&xml.status === 0) {
                    call_back( -1,null);
                }
            };
        }
 
    }

}


