File size: 3,238 Bytes
fdcb5fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.OAuth2TokenUrl = exports.OAuth2AuthorizationUrl = exports.baseApiUrl = undefined;
exports.httpHeaderSafeJson = httpHeaderSafeJson;
exports.getTokenExpiresAtDate = getTokenExpiresAtDate;
exports.isWindowOrWorker = isWindowOrWorker;
exports.isBrowserEnv = isBrowserEnv;
exports.isWorkerEnv = isWorkerEnv;
exports.createBrowserSafeString = createBrowserSafeString;

var _constants = require("./constants");

function getSafeUnicode(c) {
  var unicode = "000".concat(c.charCodeAt(0).toString(16)).slice(-4);
  return "\\u".concat(unicode);
}

var baseApiUrl = exports.baseApiUrl = function baseApiUrl(subdomain) {
  var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.DEFAULT_API_DOMAIN;
  var domainDelimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';

  if (!domainDelimiter) {
    return "https://".concat(domain, "/2/");
  }

  if (domain !== _constants.DEFAULT_API_DOMAIN && _constants.TEST_DOMAIN_MAPPINGS[subdomain] !== undefined) {
    subdomain = _constants.TEST_DOMAIN_MAPPINGS[subdomain];
    domainDelimiter = '-';
  }

  return "https://".concat(subdomain).concat(domainDelimiter).concat(domain, "/2/");
};

var OAuth2AuthorizationUrl = exports.OAuth2AuthorizationUrl = function OAuth2AuthorizationUrl() {
  var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.DEFAULT_DOMAIN;

  if (domain !== _constants.DEFAULT_DOMAIN) {
    domain = "meta-".concat(domain);
  }

  return "https://".concat(domain, "/oauth2/authorize");
};

var OAuth2TokenUrl = exports.OAuth2TokenUrl = function OAuth2TokenUrl() {
  var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.DEFAULT_API_DOMAIN;
  var domainDelimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';
  var subdomain = 'api';

  if (domain !== _constants.DEFAULT_API_DOMAIN) {
    subdomain = _constants.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


function httpHeaderSafeJson(args) {
  return JSON.stringify(args).replace(/[\u007f-\uffff]/g, getSafeUnicode);
}

function getTokenExpiresAtDate(expiresIn) {
  return new Date(Date.now() + expiresIn * 1000);
}
/* global WorkerGlobalScope */


function isWindowOrWorker() {
  return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope // eslint-disable-line no-restricted-globals
  || typeof module === 'undefined' || typeof window !== 'undefined';
}

function isBrowserEnv() {
  return typeof window !== 'undefined';
}

function isWorkerEnv() {
  return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; // eslint-disable-line no-restricted-globals
}

function createBrowserSafeString(toBeConverted) {
  var convertedString = toBeConverted.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
  return convertedString;
}