{"version":3,"names":["RestScheme","__SystemJSRewritingHack","_export","setters","_srcClientPoidJs","Scheme","execute","_recorder_","_src_client_protocols_rest_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","baseURL","Error","resolve","auth","getBearerToken","ensureToken","getDefaultHeaders","headers","Headers","append","api","method","path","options","resp","fetch","body","status","logout","match","text","Response","JSON","stringify","parse","undefined","e","apiJSON","then","r","json","urlObj","URL","url","pathname","replace","GET","search","PATCH","PUT","POST","DELETE","OPTIONS"],"sources":["rest.js"],"sourcesContent":["import {Scheme}  from \"src/client/poid.js\"\n\nexport default class RestScheme extends Scheme {\n  \n  get baseURL() {\n    throw new Error(\"subclass responsibililty\")\n  }\n  \n  resolve() {\n    return true\n  }  \n  \n  auth() {\n     throw new Error(\"subclass responsibililty\")\n  }\n  \n  async getBearerToken() { \n    return `Bearer ${await this.auth().ensureToken()}`\n  }\n  \n  async getDefaultHeaders(headers) {\n    headers = new Headers(headers);\n    headers.append('Authorization', await this.getBearerToken());\n    return headers;\n  }\n    \n\n  async api(method=\"GET\", path, options={}) {\n    var headers = await this.getDefaultHeaders(options.headers)\n    var resp = await fetch(this.baseURL + path, {\n      method: method,\n      headers: headers,\n      body: options.body\n    })\n    if (resp.status == 401) {\n      await this.auth().logout()\n      // try again once with new authorization... token might have beeen expired\n      resp = await fetch(this.baseURL + path, {\n        method: method,\n        headers: headers\n      })\n    }\n    \n    \n    if (resp.headers.get(\"content-type\").match(\"application/json\")) {\n      var text = await resp.text()\n      try {\n        return new Response(JSON.stringify(JSON.parse(text), undefined, 2))\n      } catch(e) {\n        return new Response( \"Could not parse: \" + text, {status: 400} )\n      }\n    }\n    return resp\n  }\n  \n  async apiJSON(method, path) {\n    return await this. api(method, path).then(r => r.json())\n  }\n  \n  \n  get path() {\n    let urlObj = new URL(this.url)\n    return urlObj.pathname.replace(/^\\/*/,\"\")\n  }\n\n  async GET(options) {\n    if (this.path == \"logout\") {\n      var auth = this.auth()\n      auth.logout()\n      return new Response(\"logged out\")\n    }\n    let urlObj = new URL(this.url)\n    return await this.api(\"GET\", this.path + urlObj.search, options)\n  }\n  \n  async PATCH(options) {\n    return await this.api(\"PATCH\", this.path, options)\n  }\n  \n  async PUT(options) {\n    return await this.api(\"PUT\", this.path, options)\n  }\n  \n  async POST(options) {\n    return await this.api(\"POST\", this.path, options)\n  }\n\n  async DELETE(options) {\n    return await this.api(\"DELETE\", this.path, options)\n  }\n  \n  async OPTIONS(options) {\n    throw new Error(\"subclass responsibililty\")\n  }\n}\n"],"mappings":"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"}