class AwinLink {

    constructor( url, proxy = `/wp-json/api/v1/proxy/` ) {

        this.url = url;

        this.proxy = proxy;
        this.platform = 'Awin';
        this.code = this.getId()
    }

    isLink() {

        return this.url.includes('awin1');
    }


    isValid() {
        return this.isLink();
    }


    addTag( placeholder ) {

        let url = this.url.replace(/&amp;/g, '&');

        /// al momento c'è solo un publisher id, quindi lo scriviamo direttamente
        /// altrimenti dobbiamo lasciarlo parametrizzato
        let publisher_id = 570971;

        return url.replace(/(.*awinaffid=).*?(&.*clickref=).*?(&.*|$)/g, `$1${ publisher_id }$2${ placeholder }$3`);
    }

    getId() {
        let mid = this.url.replace(/.*mid=(\d*?)&.*/, '$1');

        if (mid === this.url) {
            mid = this.url.replace(/.*[?&]m=(\d+).*$/, '$1');
        }

        return mid;
    }

    /**
         * effettua la chiamata e prende i dati del link     
         */
    async getProperties( apiBase ) {


        let apiCall = `${apiBase}v2/awin/product/${this.code}?${this.uncache5min()}`;

        console.log('__apicall', apiCall);

        let response = await fetch( `${this.proxy}${apiCall}` )
        this.data = await response.json();
            
        return this.data;
    }

    /**
     * effettua la chiamata e prende i dati del link     
     */
    async getData( api_call ) {

        let response = await fetch( `${this.proxy}${api_call}` )
        this.data = await response.json();
        
        return this.data;
    }
    

}