{"version":3,"file":"HTTP.js","sourceRoot":"","sources":["../src/HTTP.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAA0D;AAC1D,yDAA2C;AAE3C,MAAa,IAAI;IAGb,YACc,MAAc,EACjB,UAAoC,EAAE;QADnC,WAAM,GAAN,MAAM,CAAQ;QACjB,YAAO,GAAP,OAAO,CAA+B;IAC9C,CAAC;IAEG,GAAG,CAAU,IAAY,EAAE,UAAmC,EAAE;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,IAAI,CAAU,IAAY,EAAE,UAAmC,EAAE;QACpE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEM,GAAG,CAAU,IAAY,EAAE,UAAmC,EAAE;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,GAAG,CAAU,IAAY,EAAE,UAAmC,EAAE;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAES,OAAO,CAAC,MAAsC,EAAE,IAAY,EAAE,UAAmC,EAAE;QACzG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;;YACnG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,mBAAU,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS;YACtC,MAAM,OAAO,GAAG,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,KAAK,KAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB;YAE/E,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,MAAM,CAAC,CAAC;YACZ,CAAC;YAED,MAAM,IAAI,oBAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;IAES,UAAU,CAAC,OAAgC;QACjD,iDAAiD;QACjD,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,WAAW,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3D,EAAE;YACF,kDAAkD;YAClD,qFAAqF;YACrF,EAAE;QACN,CAAC;aAAM,CAAC;YACJ,6BAA6B;YAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QACnC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AA7DD,oBA6DC","sourcesContent":["import { Client } from \"./Client\";\nimport { AbortError, ServerError } from \"./errors/Errors\";\nimport * as httpie from \"@colyseus/httpie\";\n\nexport class HTTP {\n    public authToken: string;\n\n    constructor(\n        protected client: Client,\n        public headers: { [id: string]: string } = {},\n    ) {}\n\n    public get<T = any>(path: string, options: Partial<httpie.Options> = {}): Promise<httpie.Response<T>> {\n        return this.request(\"get\", path, options);\n    }\n\n    public post<T = any>(path: string, options: Partial<httpie.Options> = {}): Promise<httpie.Response<T>> {\n        return this.request(\"post\", path, options);\n    }\n\n    public del<T = any>(path: string, options: Partial<httpie.Options> = {}): Promise<httpie.Response<T>> {\n        return this.request(\"del\", path, options);\n    }\n\n    public put<T = any>(path: string, options: Partial<httpie.Options> = {}): Promise<httpie.Response<T>> {\n        return this.request(\"put\", path, options);\n    }\n\n    protected request(method: \"get\" | \"post\" | \"put\" | \"del\", path: string, options: Partial<httpie.Options> = {}): Promise<httpie.Response> {\n        return httpie[method](this.client['getHttpEndpoint'](path), this.getOptions(options)).catch((e: any) => {\n            if (e.aborted) {\n                throw new AbortError(\"Request aborted\");\n            }\n\n            const status = e.statusCode; //  || -1\n            const message = e.data?.error || e.statusMessage || e.message; //  || \"offline\"\n\n            if (!status && !message) {\n                throw e;\n            }\n\n            throw new ServerError(status, message);\n        });\n    }\n\n    protected getOptions(options: Partial<httpie.Options>) {\n        // merge default custom headers with user headers\n        options.headers = Object.assign({}, this.headers, options.headers);\n\n        if (this.authToken) {\n            options.headers['Authorization'] = `Bearer ${this.authToken}`;\n        }\n\n        if (typeof (cc) !== 'undefined' && cc.sys && cc.sys.isNative) {\n            //\n            // Workaround for Cocos Creator on Native platform\n            // \"Cannot set property withCredentials of #<XMLHttpRequest> which has only a getter\"\n            //\n        } else {\n            // always include credentials\n            options.withCredentials = true;\n        }\n\n        return options;\n    }\n}\n"]}