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
JavaScript
;
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);
});
}
};
};