{"version":3,"names":["PlexScheme","Scheme","PolymorphicIdentifier","focalStorage","parseQuery","getDeepProperty","lastTokenPromted","scheme","plexToken","token","getItem","Date","now","lively","prompt","setItem","resolve","plexChildren","mediacontent","Array","from","childNodes","filter","ea","getAttribute","plexToJSON","obj","_type","tagName","getAttributeNames","forEach","prop","child","tag","push","media","part","children","GET","options","apiString","getAPIString","query","getURLQuery","contentType","headers","Headers","get","html","plex","htmlResponse","Response","outerHTML","status","json","JSON","stringify","list","_","sortBy","map","thumbs","img","src","swxURL","title","a","href","div","table","create","setFromJSO","remove","index","resp","plexBlob","text","fetch","then","r","DOMParser","parseFromString","blob","optionsFromPlex","xml","url","notify","name","parent","replace","contents","type","match","urlObj","URL","pathname","search","Object","keys","OPTIONS","result","components","addPersistentCustomTemplatePath","register","console","warn"],"sources":["plex-scheme.js"],"sourcesContent":["import {Scheme}  from \"src/client/poid.js\"\nimport PolymorphicIdentifier  from \"src/client/poid.js\"\nimport focalStorage from \"src/external/focalStorage.js\"\nimport {parseQuery, getDeepProperty} from 'utils'\n\nvar lastTokenPromted\n\n\n// focalStorage.getItem(\"plex-token\")\n// focalStorage.setItem(\"plex-token\", undefined)\n\nexport class PlexScheme extends Scheme {\n  \n  get scheme() {\n    return \"plex\"\n  }\n  \n  async plexToken() {\n    var token = await focalStorage.getItem(\"plex-token\")\n    if(!token && (!lastTokenPromted || ((Date.now() - lastTokenPromted) > 1000 * 5))) { // don't ask again for 5 seconds...\n      lastTokenPromted = Date.now()\n      token = await lively.prompt(\"plex token required: \")\n      if (token) {\n        focalStorage.setItem(\"plex-token\", token)\n      }\n    }\n    return token\n  }\n\n  resolve() {\n    return true\n  }  \n \n  plexChildren(mediacontent) {\n    return Array.from(mediacontent.childNodes).filter(ea => ea.getAttribute)\n  }\n  \n  plexToJSON(mediacontent) {\n    \n      let obj = {\n        _type: mediacontent.tagName\n      }\n      mediacontent.getAttributeNames().forEach(prop => {\n        obj[prop] = mediacontent.getAttribute(prop)\n      })\n      \n      this.plexChildren(mediacontent).forEach(child => {\n        \n        let tag = child.getAttribute(\"tag\")\n        if (tag) {\n          if (!obj[child.tagName]) obj[child.tagName] = [];\n          obj[child.tagName].push(tag)\n        } else if (child.tagName == \"Media\") {\n          if (!obj.media) obj.media = []\n           obj.media.push(this.plexToJSON(child))\n        } else if (child.tagName == \"Part\") {\n          if (!obj.part) obj.part = []\n           obj.part.push(this.plexToJSON(child))\n        } else {\n          if (!obj.children) obj.children = []\n          obj.children.push(this.plexToJSON(child))\n        }\n        \n        // if (prop.tagName == \"Media\") {\n        //   this.plexChildren(mediacontent)[0].getAttribute(\"file\")\n        // }\n      })\n      \n      return obj\n  }\n  \n  async GET(options) {\n    let apiString = this.getAPIString()\n    let query = this.getURLQuery()\n    let contentType = options && options.headers && new Headers(options.headers).get(\"content-type\")\n  \n    let html\n    let mediacontent = await this.plex(apiString)\n    \n    let htmlResponse = function(html) {\n      return new Response(html.outerHTML, {\n        status: 200,\n        headers: {\n          \"content-type\": \"text/html\" \n        }\n      })\n    }\n    \n    if (query.json || contentType ==  'application/json') {\n      // ok, we parse, then serialize, then pase again... can we avoid this?\n      return new Response(JSON.stringify(this.plexToJSON(mediacontent)), {status: 200})\n    } else if (query.list) {\n      let children = _.sortBy(this.plexChildren(mediacontent), ea => ea.getAttribute(\"title\"))\n      html = <html><ul>{...(children.map(ea => \n        <li>{ea.getAttribute(\"title\")}</li>\n      ))}</ul></html>\n      return htmlResponse(html)\n    } else if (query.thumbs) {\n      let children = _.sortBy(this.plexChildren(mediacontent), ea => ea.getAttribute(\"title\"))\n      // #TODO we should do this only if we have a thumb        \n      html = <html><div style=\"\">{...(children.map(ea => {\n            var img = <img style=\"\" width=\"100px\"></img>\n            img.src = lively.swxURL(\"plex://\" + ea.getAttribute(\"thumb\"))\n            img.title = ea.getAttribute(\"title\")\n            var a = <a style=\"\">{img}<br />{ea.getAttribute(\"title\")}</a>\n            a.href = lively.swxURL(\"plex://\" + ea.getAttribute(\"key\"))\n            var div = <div style=\"font-size:8pt;margin:10px;vertical-align: text-top; display:inline-block; width:100px; overflow: hidden\">{a}<br />{ea.getAttribute(\"year\")}</div>\n            return div\n          }\n      ))}</div></html>\n      return htmlResponse(html)\n    } else if(query.table) { \n      // default html rendering\n      let table = await lively.create(\"lively-table\")\n      try {\n        table.setFromJSO(this.plexToJSON(mediacontent).children)\n      } finally {\n        table.remove()\n      }\n      html = table     \n      return htmlResponse(html)\n    } else if(query.html || query.index || contentType ==  'text/html') { \n      html = `<plex-media src='plex:/${apiString}'></plex-media>` // a fetchy double dispatch \n      return new Response(html)\n    } else {\n      // default xml\n      let resp = await this.plexBlob(apiString)\n      return new Response(resp) // {status: 200}   \n    }\n  }\n\n  async plex(apiString) {\n    var token = await this.plexToken()\n    var text = await fetch(\"http://127.0.0.1:32400\" + apiString + \"?X-Plex-Token=\" + token).then(r => r.text())\n    return new DOMParser().parseFromString(text, \"text/xml\").childNodes[0];\n  }\n  \n  async plexBlob(apiString) {\n    var token = await this.plexToken()\n    return fetch(\"http://127.0.0.1:32400\" + apiString + \"?X-Plex-Token=\" + token).then(r => r.blob())\n  }\n  \n  optionsFromPlex(xml, url) {\n    // single vs. collections... how should we do this?\n    if (xml.getAttribute && xml.getAttribute(\"size\") == 1 && xml.childNodes[0].tagName !== \"directory\") { \n      xml = Array.from(xml.childNodes).filter(ea => ea.getAttribute)[0]\n      lively.notify(\"take \" + xml.childNodes)\n    }\n    return {\n      name: xml.getAttribute(\"key\") || xml.getAttribute(\"title\") || xml.getAttribute(\"title1\") || xml.tagName ,\n      title: xml.getAttribute(\"title\") || xml.getAttribute(\"title1\"),\n      parent: url.replace(/\\/[^/]+\\/?$/,\"\"),\n      \"index-available\": true,\n      contents: _.sortBy(Array.from(xml.childNodes)\n          .filter(ea => ea.getAttribute && ea.getAttribute(\"key\"))\n          .map(ea => {\n            var obj = {\n              name: ea.getAttribute(\"key\").replace(/\\/children$/,\"/\"),\n              title: ea.getAttribute(\"title\") || ea.getAttribute(\"title1\"),\n              contents: [],\n              parent: url,\n              type: ea.tagName == \"Directory\" ? \"directory\" : \"file\"\n            }\n            if (obj.name.match(/^\\//)) {\n              obj.type = \"link\" // symlinks, cross refs... etc\n              obj.href = this.scheme + \":/\" + obj.name\n            }\n            return obj\n          }), \n          ea => ea.title),\n      type: \"file\"\n    }\n  }\n  \n  getAPIString() {\n    var urlObj = new URL(this.url)\n    return urlObj.pathname.replace(/\\/\\//g,\"/\")\n  }\n\n  getURLQuery() {\n    var urlObj = new URL(this.url)\n    var query =  parseQuery(urlObj.search)\n    Object.keys(query).forEach(ea => {\n      if (query[ea] == \"\") query[ea] = true;\n    })\n    return query\n  }\n\n  async OPTIONS() {\n    var apiString = this.getAPIString()\n    var mediacontent = await this.plex(apiString)\n    var result = await this.optionsFromPlex(mediacontent, this.url)\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\nlively.components.addPersistentCustomTemplatePath(\"/demos/plex/\")\n\nPolymorphicIdentifier.register(PlexScheme)\n\nconsole.warn(\"LOADED plex\")\n\n"],"mappings":"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"}