Repository URL to install this package:
|
Version:
4.2.0 ▾
|
const onesky = require('@brainly/onesky-utils');
/**
* Interact with the OneSky API
*
* @module @doodle/i18n/disty/onesky/api
*/
/**
* OneSky credentials
*
* @typedef {object} OneSkyCredentials
* @property {string} secret
* @property {string} apiKey
*/
/**
* OneSky Translation
* @typedef {object} OneSkyTranslationOptions
* @property {string} projectId
* @property {string} language
* @property {string} fileName
*/
/**
* OneSky translation upload options
*
* @typedef {object} OneSkySyncOptions
* @property {string} format
* @property {string} keepStrings
*/
/**
* OneSky Language object
*
* @typedef {object} OneSkyLanguage
* @property {string} code language code, i.e. en-US or de
* @property {string} english_name i.e. English (United States)
* @property {string} local_name i.e. English (United States)
* @property {string} locale i.e. en
* @property {string} region i.e. US
* @property {bool} is_base_language
* @property {bool} is_ready_to_publish
* @property {string} translation_progress i.e. 100%
* @property {string} uploaded_at i.e. 2013-10-07T15:27:10+0000
* @property {number} uploaded_at_timestamp i.e. 1381159630
*/
/**
* Retrieve the defined languages in the OneSky project
*
* @param {string} projectId
* @param {OneSkyCredentials} credentials
* @returns {Promise<OneSkyLanguage>}
* @async
*/
const getProjectLanguages = async (projectId, credentials) => {
const result = await onesky.getLanguages({
projectId,
...credentials,
});
if (result) {
const { data } = JSON.parse(result);
return data;
}
return [];
};
/**
* Upload messages to a OneSky project for one language
*
* @param {OneSkyTranslationOptions} projectTranslation
* @param {object} messages
* @param {OneSkyCredentials} credentials
* @param {OneSkySyncOptions} syncOptions
* @returns {Promise}
* @async
*/
const uploadProjectTranslation = async (projectTranslation, messages, credentials, syncOptions) =>
onesky.postFile({
language: 'en',
fileName: 'translations.json',
...projectTranslation,
format: 'HIERARCHICAL_JSON',
keepStrings: true,
...syncOptions,
...credentials,
content: JSON.stringify(messages),
});
/**
* Download messages from a OneSky project by one language
*
* @param {OneSkyTranslationOptions} projectTranslationOptions
* @param {OneSkyCredentials} credentials
* @returns {Promise<object>}
* @async
*/
const getProjectMessagesByLanguage = async (projectTranslationOptions, credentials) => {
const content = await onesky.getFile({
language: 'en',
fileName: 'translations.json',
...projectTranslationOptions,
...credentials,
});
if (content) {
return JSON.parse(content);
}
return {};
};
module.exports = {
getProjectMessagesByLanguage,
uploadProjectTranslation,
getProjectLanguages,
};