UNPKG

uppy

Version:

Almost as cute as a Puppy :dog:

110 lines (99 loc) 3.92 kB
'use strict'; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } require('whatwg-fetch'); var _getName = function _getName(id) { return id.split('-').map(function (s) { return s.charAt(0).toUpperCase() + s.slice(1); }).join(' '); }; module.exports = function () { function Provider(core, opts) { _classCallCheck(this, Provider); this.core = core; this.opts = opts; this.provider = opts.provider; this.id = this.provider; this.authProvider = opts.authProvider || this.provider; this.name = this.opts.name || _getName(this.id); this.onReceiveResponse = this.onReceiveResponse.bind(this); } _createClass(Provider, [{ key: 'onReceiveResponse', value: function onReceiveResponse(response) { var uppyServer = this.core.state.uppyServer || {}; var host = this.opts.host; var headers = response.headers; // Store the self-identified domain name for the uppy-server we just hit. if (headers.has('i-am') && headers.get('i-am') !== uppyServer[host]) { this.core.setState({ uppyServer: Object.assign({}, uppyServer, _defineProperty({}, host, headers.get('i-am'))) }); } return response; } }, { key: 'checkAuth', value: function checkAuth() { return fetch(this.hostname + '/' + this.id + '/authorized', { method: 'get', credentials: 'include', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } }).then(this.onReceiveResponse).then(function (res) { return res.json().then(function (payload) { return payload.authenticated; }); }); } }, { key: 'authUrl', value: function authUrl() { return this.hostname + '/' + this.id + '/connect'; } }, { key: 'fileUrl', value: function fileUrl(id) { return this.hostname + '/' + this.id + '/get/' + id; } }, { key: 'list', value: function list(directory) { return fetch(this.hostname + '/' + this.id + '/list/' + (directory || ''), { method: 'get', credentials: 'include', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } }).then(this.onReceiveResponse).then(function (res) { return res.json(); }); } }, { key: 'logout', value: function logout() { var redirect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : location.href; return fetch(this.hostname + '/' + this.id + '/logout?redirect=' + redirect, { method: 'get', credentials: 'include', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } }); } }, { key: 'hostname', get: function get() { var uppyServer = this.core.state.uppyServer || {}; var host = this.opts.host; return uppyServer[host] || host; } }]); return Provider; }(); //# sourceMappingURL=Provider.js.map