uppy
Version:
Almost as cute as a Puppy :dog:
110 lines (99 loc) • 3.92 kB
JavaScript
'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