dropbox
Version:
The Dropbox JavaScript SDK is a lightweight, promise based interface to the Dropbox v2 API that works in both nodejs and browser environments.
66 lines (55 loc) • 2.71 kB
JavaScript
import { DEFAULT_API_DOMAIN, DEFAULT_DOMAIN, TEST_DOMAIN_MAPPINGS } from './constants';
function getSafeUnicode(c) {
var unicode = "000".concat(c.charCodeAt(0).toString(16)).slice(-4);
return "\\u".concat(unicode);
}
export var baseApiUrl = function baseApiUrl(subdomain) {
var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_API_DOMAIN;
var domainDelimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';
if (!domainDelimiter) {
return "https://".concat(domain, "/2/");
}
if (domain !== DEFAULT_API_DOMAIN && TEST_DOMAIN_MAPPINGS[subdomain] !== undefined) {
subdomain = TEST_DOMAIN_MAPPINGS[subdomain];
domainDelimiter = '-';
}
return "https://".concat(subdomain).concat(domainDelimiter).concat(domain, "/2/");
};
export var OAuth2AuthorizationUrl = function OAuth2AuthorizationUrl() {
var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_DOMAIN;
if (domain !== DEFAULT_DOMAIN) {
domain = "meta-".concat(domain);
}
return "https://".concat(domain, "/oauth2/authorize");
};
export var OAuth2TokenUrl = function OAuth2TokenUrl() {
var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_API_DOMAIN;
var domainDelimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';
var subdomain = 'api';
if (domain !== DEFAULT_API_DOMAIN) {
subdomain = TEST_DOMAIN_MAPPINGS[subdomain];
domainDelimiter = '-';
}
return "https://".concat(subdomain).concat(domainDelimiter).concat(domain, "/oauth2/token");
}; // source https://www.dropboxforum.com/t5/API-support/HTTP-header-quot-Dropbox-API-Arg-quot-could-not-decode-input-as/m-p/173823/highlight/true#M6786
export function httpHeaderSafeJson(args) {
return JSON.stringify(args).replace(/[\u007f-\uffff]/g, getSafeUnicode);
}
export function getTokenExpiresAtDate(expiresIn) {
return new Date(Date.now() + expiresIn * 1000);
}
/* global WorkerGlobalScope */
export function isWindowOrWorker() {
return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope // eslint-disable-line no-restricted-globals
|| typeof module === 'undefined' || typeof window !== 'undefined';
}
export function isBrowserEnv() {
return typeof window !== 'undefined';
}
export function isWorkerEnv() {
return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; // eslint-disable-line no-restricted-globals
}
export function createBrowserSafeString(toBeConverted) {
var convertedString = toBeConverted.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
return convertedString;
}