File: D:/HostingSpaces/SBogers10/csb.komma.pro/resources/js/global/models/countryLanguagesResponse.js
/**
* CountryLanguagesResponse.
*
* Represents a response that originates from
*/
import { Language } from "./language";
class CountryLanguagesResponse {
constructor()
{
this._languages = [];
}
/**
* @param {string} json
* @return {CountryLanguagesResponse|null}
*/
static fromJsonString(json) {
if(!this.is(json)) {
return null;
}
let jsonObject = JSON.parse(json);
let instance = new this;
let languageCount = jsonObject.languages.length;
for(let index = 0; index < languageCount; index++)
{
let languageObject = jsonObject.languages[index];
let language = new Language();
language.name = languageObject.name;
language.displayName = languageObject.displayName;
language.nativeName = languageObject.nativeName;
language.twoLetterIsoLanguageName = languageObject.twoLetterIsoLanguageName;
language.threeLetterIsoLanguageName = languageObject.threeLetterIsoLanguageName;
instance._languages.push(language)
}
return instance;
}
/**
* Checks that the given json string represents a ErrorResponse
*
* @param {string} json
* @param {boolean} logErrors
* @return {boolean}
*/
static is(json, logErrors = true)
{
let jsonObject = null;
if(typeof json === 'string') {
try {
jsonObject = JSON.parse(json);
if (!jsonObject) return false;
} catch (e) {
console.error('CountryLanguagesResponse: The given json does not represent a CountryLanguagesResponse since the json string was not a valid json. Object: ', jsonObject);
return false;
}
} else {
jsonObject = json
}
if(!jsonObject.hasOwnProperty('languages') || !Array.isArray(jsonObject.languages)) {
console.log('CountryLanguagesResponse: The given json must have a property called languages that is an Array, But did not have. Object: ', jsonObject);
return false;
}
let languageCount = jsonObject.languages.length;
for(let index = 0; index < languageCount; index++)
{
let languageObject = jsonObject.languages[index];
if(typeof languageObject !== 'object' || typeof languageObject === 'function' || !Language.is(languageObject)) {
return false;
}
}
return true;
}
/**
* @return {{valid: boolean, errors: Array}}
* @private
*/
_toJson() {
return {
'languages': this._languages
}
}
/**
* @return {Language[]}
*/
get languages() {
return this._languages;
}
}
export { CountryLanguagesResponse }