HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/farmfun.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 }