UNPKG

onesky-fetch

Version:

Fetch and upload translation files from www.oneskyapp.com working in node.js and browser apps.

86 lines (73 loc) 2.75 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _md = require('md5'); var _md2 = _interopRequireDefault(_md); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var fetch = typeof window !== 'undefined' && window.fetch ? window.fetch : require('./simple-fetch'); var apiUrl = 'https://platform.api.onesky.io/1'; function getDevHash(secret) { var timestamp = Math.floor(Date.now() / 1000); return { dev_hash: (0, _md2.default)(timestamp + secret), timestamp: timestamp }; } function buildUrlParams(obj) { var str = ''; for (var key in obj) { if (str !== '') { str += '&'; } str += key + '=' + obj[key]; } return str; } function oneSkyGetRequest(config, resourcePath) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var devHash = getDevHash(config.secret); var urlParams = _extends({ api_key: config.apiKey }, devHash, params); var url = '' + apiUrl + resourcePath + '?' + buildUrlParams(urlParams); return fetch(url); } module.exports = function (config) { return { config: config, fetchLanguages: function fetchLanguages() { var resourcePath = '/projects/' + config.projectId + '/languages'; return oneSkyGetRequest(config, resourcePath).then(function (res) { return res.json(); }).then(function (json) { return json.data; }); }, fetchTranslations: function fetchTranslations(languages, fileName) { var languages_ = typeof languages == 'string' ? [languages] : languages; var languageFetches = languages_.map(function (language) { var params = { locale: language, source_file_name: fileName, export_file_name: language + '.json' }; var resourcePath = '/projects/' + config.projectId + '/translations'; return oneSkyGetRequest(config, resourcePath, params).then(function (res) { return res.text(); }).then(function (text) { return { language: language, text: text }; }); }); return Promise.all(languageFetches); }, fetchAllTranslations: function fetchAllTranslations(fileName) { var _this = this; return this.fetchLanguages().then(function (languages) { return languages.map(function (language) { return language.code; }); }).then(function (languages) { return _this.fetchTranslations(languages, fileName); }); } }; };