{"version":3,"sources":["app-react/services/http/http.service.ts","common/utils/parse-fetch-response.ts"],"names":["HttpService","url","options","a","this","_fetchResponse","fetchedResponse","_parseResponse","URLSearchParams","Headers","method","fetch","response","ok","HttpError","parseFetchResponse","status","statusText","statusCode","message","contentTypeHeader","headers","get","Check","isEmpty","indexOf","json","text","charset","exec","blob","decodeBlob","source","encoding","Promise","resolve","reader","FileReader","onloadend","result","readAsText"],"mappings":"8LAOaA,EAAb,0HACE,WAAUC,EAAaC,GAAvB,eAAAC,EAAA,sEACgCC,KAAKC,eAAeJ,EAAI,MAAOC,GAD/D,cACQI,EADR,yBAESF,KAAKG,eAAeD,IAF7B,gDADF,kHAME,WAAWL,EAAaC,GAAxB,eAAAC,EAAA,sEACgCC,KAAKC,eAAeJ,EAAK,OAAQC,GADjE,cACQI,EADR,yBAESF,KAAKG,eAAeD,IAF7B,gDANF,4FAWE,WACE,OAAO,IAAIE,kBAZf,2BAeE,WACE,OAAO,IAAIC,UAhBf,mEAmBE,WAAqBR,EAAaS,EAAgBR,GAAlD,eAAAC,EAAA,6DACED,EAAO,2BAAOA,GAAP,IAAgBQ,OAAQA,IADjC,SAEyBC,MAAMV,EAAKC,GAFpC,cAEQU,EAFR,yBAISA,GAJT,2CAnBF,8HA0BE,WAAqBA,GAArB,SAAAT,EAAA,yDACMS,EAASC,GADf,sBAEU,IAAIC,IAAUF,GAFxB,uBAKeG,YAAmBH,GALlC,mFA1BF,+D,wJCLaE,EAIT,cAA6C,IAAhCE,EAA+B,EAA/BA,OAAQC,EAAuB,EAAvBA,WAAuB,yBAH5BC,gBAG4B,OAF5BC,aAE4B,EACxCf,KAAKc,WAAaF,EAClBZ,KAAKe,QAAUH,EAAS,MAAQC,GAKjC,SAAeF,EAAtB,kC,4CAAO,WAAkCH,GAAlC,uBAAAT,EAAA,yDAEGiB,EAAoBR,EAASS,QAAQC,IAAI,iBAAmB,KAE/DC,QAAMC,QAAQJ,IAAsBA,EAAkBK,QAAQ,qBAAuB,GAJrF,gCAKcb,EAASc,OALvB,oDAMON,EAAkBK,QAAQ,eAAiB,GANlD,kCAOcb,EAASe,OAPvB,wDAUCC,EAAU,QACXR,EAAkBK,QAAQ,aAAe,IAAI,EAC/B,kBAAkBI,KAAKT,GADO,mBACzCQ,EADyC,MAX5C,UAegBhB,EAASkB,OAfzB,eAeGA,EAfH,iBAgBUC,EAAWD,EAAMF,GAhB3B,sF,sBAoBP,SAASG,EAAWC,GAA6D,IAA/CC,EAA8C,uDAA3B,SACjD,OAAO,IAAIC,SAAQ,SAAAC,GACf,IAAMC,EAAS,IAAIC,WACnBD,EAAOE,UAAY,WACfH,EAAQC,EAAOG,SAEnBH,EAAOI,WAAWR,EAAQC","file":"static/js/launcher~orbit-main~orbit-qa.c3aca49e.chunk.js","sourcesContent":["import {\n IHttpService\n} from './http.service.interface';\nimport {HttpError, parseFetchResponse} from \"../../../common/utils/parse-fetch-response\";\n\n\n\nexport class HttpService implements IHttpService {\n async get(url: string, options?: RequestInit): Promise {\n const fetchedResponse = await this._fetchResponse(url,'GET', options);\n return this._parseResponse(fetchedResponse);\n }\n\n async post(url: string, options?: RequestInit): Promise {\n const fetchedResponse = await this._fetchResponse(url, 'POST', options);\n return this._parseResponse(fetchedResponse);\n }\n\n createUrlSearchParams(): URLSearchParams {\n return new URLSearchParams();\n }\n\n createHeaders(): Headers {\n return new Headers();\n }\n\n async _fetchResponse(url: string, method: string, options?: RequestInit):Promise {\n options = {...options, method: method};\n const response = await fetch(url, options);\n\n return response;\n }\n\n async _parseResponse(response: Response):Promise {\n if(!response.ok) {\n throw new HttpError(response);\n }\n\n return await parseFetchResponse(response);\n }\n}\n","import {Check} from \"@sparkware/app-utils\";\n\nexport class HttpError {\n public readonly statusCode: number;\n public readonly message: string;\n\n constructor({status, statusText}: Response) {\n this.statusCode = status;\n this.message = status + ' - ' + statusText;\n }\n}\n\n\nexport async function parseFetchResponse(response: Response): Promise {\n\n const contentTypeHeader = response.headers.get('content-type') || '';\n\n if(Check.isEmpty(contentTypeHeader) || contentTypeHeader.indexOf('application/json') >= 0) {\n return await response.json();\n } else if(contentTypeHeader.indexOf('text/plain') >= 0) {\n return await response.text();\n }\n\n let charset = 'utf-8';\n if(contentTypeHeader.indexOf('charset=') > -1) {\n [,charset] = /charset=([^ ]+)/.exec(contentTypeHeader);\n }\n\n const blob = await response.blob();\n return await decodeBlob(blob, charset);\n}\n\n\nfunction decodeBlob(source: Blob, encoding: string = 'utf-16'): Promise {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onloadend = () => {\n resolve(reader.result as string);\n };\n reader.readAsText(source, encoding);\n })\n}"],"sourceRoot":""}