Source: language.js

/**
 * The language mixin is responsible for retrieving and setting the languages
 * of a project.
 * @module mixins/language
 */
module.exports = (axios, urls) => ({

  /**
   * Retrieve the target languages of the project.
   * @param {string} project_slug - The projects slug
   * @example txApi.languages('testproject').then(function(data) {})
  **/

  languages(project_slug) {
    var path = urls['languages'].replace('<project_slug>', project_slug);
    return axios.get(path);
  },

  /**
   * Add a new target language to the project.
   * @param {string} project_slug - The projects slug
   * @param {object} form - An object containing the target language code
   * and the coordinators array
   * @example
   * txApi.languageCreate('testproject', {
   *    language_code: 'en',
   *    coordinators: [
   *      'alexapi1'
   *    ]
   * })
  **/

  languageCreate(project_slug, form) {
    var path = urls['languages'].
      replace('<project_slug>', project_slug);
    return axios.post(path, form);
  },

  /**
   * Retrieve the details of a project's target language.
   * @param {string} project_slug - The projects slug
   * @param {string} language_code - The target language code
   * @example txApi.languageRead('testproject','en').then(function(data) {});
  **/

  language(project_slug, language_code) {
    var path = urls['language'].
      replace('<project_slug>', project_slug).
      replace('<language_code>', language_code);
    return axios.get(path);
  },

  /**
   * Update a project's target language.
   * @param {string} project_slug - The projects slug
   * @param {string} language_code - The target language code
   * @param {object} form - An object containing the target language code
   * and the coordinators array
   * @example
   * txApi.languageUpdate('testproject', 'en', {
   *   list: 'mylist@listserver.com',
   *   coordinators: [
   *    'alexapi1'
   *   ]
   * })
  **/

  languageUpdate(project_slug, language_code, form) {
    var path = urls['language'].
      replace('<project_slug>', project_slug).
      replace('<language_code>', language_code);
    return axios.put(path, form);
  },

  /**
   * Remove a target language from the project
   * @param {string} project_slug - The projects slug
   * @param {string} language_code - The target language code
   * @example txApi.languageDelete('testproject','en')
  **/

  languageDelete(project_slug, language_code) {
    var path = urls['language'].
      replace('<project_slug>', project_slug).
      replace('<language_code>', language_code);
    return axios.delete(path);
  },
});