var adsScriptTag = document.getElementById('lv-ads'); var observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.type === "attributes") { handleAdRequest(); } }); }); observer.observe(adsScriptTag, { attributes: true }); adsScriptTag.addEventListener("load", function () { handleAdRequest(); }); function handleAdRequest() { var adAttributes = getAdScriptTagAttributes(); if (adAttributes.keyword && adAttributes.integrationId) { var requestUrl = buildRequestUrl(adAttributes); var response = makeAdRequest(requestUrl); handleAdResponse(response, adAttributes); } } function getAdScriptTagAttributes() { var adNumber = adsScriptTag.getAttribute('data-ad-number'); var attributes = { integrationId: adsScriptTag.getAttribute('data-integration-id'), jsonpAttributeValue: adsScriptTag.getAttribute('data-jsonp'), adNumber: adNumber === "" ? 3 : adNumber }; attributes['functionName'] = attributes.jsonpAttributeValue === "" ? "handleAds" : attributes.jsonpAttributeValue; attributes['keyword'] = adsScriptTag.hasAttribute('data-keyword') ? adsScriptTag.getAttribute('data-keyword') : null; return attributes; } function buildRequestUrl(adAttributes) { var _localStorage$getItem; var subId = (_localStorage$getItem = localStorage.getItem('subId')) !== null && _localStorage$getItem !== void 0 ? _localStorage$getItem : ""; var baseUrl = 'https://ad-server.linkvertise.com'; var endpoint = '/ads?'; return baseUrl + endpoint + 'keyword=' + adAttributes.keyword + '&integration_id=' + adAttributes.integrationId + '&ad_number=' + adAttributes.adNumber + '&sub_id=' + subId; } function makeAdRequest(requestUrl) { return fetch(requestUrl).then(function (response) { return response.json(); }); } function handleAdResponse(response, adAttributes) { response.then(function (data) { if (data.subId) { localStorage.setItem('subId', data.subId); } if (data.ads && data.ads.length > 0) { this[adAttributes.functionName](data.ads); } else { this[adAttributes.functionName](null); } })["catch"](function (error) { console.log("Error: " + error); }); }