UNPKG

radio-browser-api

Version:

Wrapper for free and open-source radio browser api: https://api.radio-browser.info/.

3 lines (2 loc) 7.86 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e||self).radioBrowserApi={})}(this,function(e){function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},r.apply(null,arguments)}var n={byUuid:"byUuid",byName:"byName",byNameExact:"byNameExact",byCodec:"byCodec",byCodexExact:"byCodecExact",byCountry:"byCountry",byCountryExact:"byCountryExact",byCountryCodeExact:"byCountryCodeExact",byState:"byState",byStateExact:"byStateExact",byLanguage:"byLanguage",byLanguageExact:"byLanguageExact",byTag:"byTag",byTagExact:"byTagExact"},o=/*#__PURE__*/function(){function e(e,t){if(void 0===t&&(t=!0),this.appName=void 0,this.hideBroken=void 0,this.baseUrl=void 0,this.fetchConfig={method:"GET",redirect:"follow"},this.appName=e,this.hideBroken=t,!e)throw new Error("appName is required");this.fetchConfig.headers={"user-agent":this.appName}}var o=e.prototype;return o.resolveBaseUrl=function(e){void 0===e&&(e={});try{return Promise.resolve(fetch("https://all.api.radio-browser.info/json/servers",e)).then(function(e){if(e.ok)return Promise.resolve(e.json()).then(function(e){return e});throw e})}catch(e){return Promise.reject(e)}},o.setBaseUrl=function(e){this.baseUrl=e},o.getBaseUrl=function(){return this.baseUrl},o.getCountries=function(e,t,r){try{return Promise.resolve(this.runRequest(this.buildRequest("countries",e,t),r))}catch(e){return Promise.reject(e)}},o.getCountryCodes=function(e,t,r){try{return e=e?""+e.toUpperCase():"",Promise.resolve(this.runRequest(this.buildRequest("countrycodes",e,t),r))}catch(e){return Promise.reject(e)}},o.getCodecs=function(e,t){try{return Promise.resolve(this.runRequest(this.buildRequest("codecs","",e),t))}catch(e){return Promise.reject(e)}},o.getCountryStates=function(e,t,r){try{return Promise.resolve(this.runRequest(this.buildRequest("states",e,t),r))}catch(e){return Promise.reject(e)}},o.getLanguages=function(e,t,r){try{return Promise.resolve(this.runRequest(this.buildRequest("languages",e,t),r))}catch(e){return Promise.reject(e)}},o.getTags=function(e,t,r){try{return e=e?e.toLowerCase():"",Promise.resolve(this.runRequest(this.buildRequest("tags",e,t),r))}catch(e){return Promise.reject(e)}},o.getStationsBy=function(e,t,r,o,i){void 0===i&&(i=!1);try{var s=this;if(!n[e])throw new Error("search type does not exist: "+e);return t=t?t.toLowerCase():"",Promise.resolve(s.runRequest(s.buildRequest("stations/"+e.toLowerCase(),t,r),o)).then(function(e){return s.normalizeStations(e,i)})}catch(e){return Promise.reject(e)}},o.normalizeStations=function(e,r){void 0===r&&(r=!1);for(var n,o=[],i={},s=function(e){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,r){if(e){if("string"==typeof e)return t(e,r);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,r):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(n=s()).done;){var a=n.value;if(r){var c=""+a.name.toLowerCase().trim()+a.url.toLowerCase().trim();if(i[c])continue;i[c]=!0}var u={changeId:a.changeuuid,id:a.stationuuid,name:a.name,url:a.url,urlResolved:a.url_resolved,homepage:a.homepage,favicon:a.favicon,country:a.country,countryCode:a.countrycode,state:a.state,votes:a.votes,codec:a.codec,bitrate:a.bitrate,clickCount:a.clickcount,clickTrend:a.clicktrend,hls:Boolean(a.hls),lastCheckOk:Boolean(a.lastcheckok),lastChangeTime:new Date(a.lastchangetime),lastCheckOkTime:new Date(a.lastcheckoktime),clickTimestamp:new Date(a.clicktimestamp),lastLocalCheckTime:new Date(a.lastlocalchecktime),language:a.language.split(","),lastCheckTime:new Date(a.lastchecktime),geoLat:a.geo_lat,geoLong:a.geo_long,tags:Array.from(new Set(a.tags.split(","))).filter(function(e){return e.length>0&&e.length<10})};o.push(u)}return o},o.getAllStations=function(e,t,r){void 0===r&&(r=!1);try{var n=this;return Promise.resolve(n.runRequest(n.buildRequest("stations","",e),t)).then(function(e){return n.normalizeStations(e,r)})}catch(e){return Promise.reject(e)}},o.searchStations=function(e,t,r){void 0===r&&(r=!1);try{var n=this;return Promise.resolve(n.runRequest(n.buildRequest("stations/search",void 0,e),t)).then(function(e){return n.normalizeStations(e,r)})}catch(e){return Promise.reject(e)}},o.getStationsByClicks=function(e,t){try{return Promise.resolve(this.resolveGetStations("topclick",e,t))}catch(e){return Promise.reject(e)}},o.getStationsByVotes=function(e,t){try{return Promise.resolve(this.resolveGetStations("topvote",e,t))}catch(e){return Promise.reject(e)}},o.getStationsByRecentClicks=function(e,t){try{return Promise.resolve(this.resolveGetStations("lastclick",e,t))}catch(e){return Promise.reject(e)}},o.sendStationClick=function(e,t){try{return Promise.resolve(this.runRequest(this.buildRequest("url",e,void 0,!1),t))}catch(e){return Promise.reject(e)}},o.voteForStation=function(e,t){try{return Promise.resolve(this.runRequest(this.buildRequest("vote",e),t))}catch(e){return Promise.reject(e)}},o.getStationsById=function(e,t){try{var r=this,n=e.join(",");return Promise.resolve(r.runRequest(r.buildRequest("stations/byuuid?uuids="+n,void 0,void 0,!1),t)).then(function(e){return r.normalizeStations(e)})}catch(e){return Promise.reject(e)}},o.getStationByUrl=function(e,t){try{var r=this;return Promise.resolve(r.runRequest(r.buildRequest("stations/byurl?url="+e,void 0,void 0,!1),t)).then(function(e){return r.normalizeStations(e)})}catch(e){return Promise.reject(e)}},o.resolveGetStations=function(e,t,r){try{var n=this;return Promise.resolve(n.runRequest(n.buildRequest("stations/"+e+(t?"/"+t:""),void 0,void 0,!1),r)).then(function(e){return n.normalizeStations(e)})}catch(e){return Promise.reject(e)}},o.buildRequest=function(e,t,n,o){var i;return void 0===o&&(o=!0),t=t?"/"+encodeURIComponent(t):"",n&&("tagList"in(i=r({},n))&&Array.isArray(i.tagList)&&(i.tagList=[].concat(i.tagList)),o&&void 0===i.hideBroken&&(i.hideBroken=this.hideBroken)),""+e+t+(i?this.createQueryParams(i):"")},o.runRequest=function(e,t){void 0===t&&(t={});try{var n=function(){return Promise.resolve(fetch(o.baseUrl+"/json/"+e,i)).then(function(e){if(e.ok)return e.json();throw e})},o=this,i=r({},o.fetchConfig,t,{headers:r({},o.fetchConfig.headers,t.headers)}),s=function(){if(!o.baseUrl)return Promise.resolve(o.resolveBaseUrl()).then(function(e){var t=Math.floor(Math.random()*e.length);o.baseUrl="https://"+e[t].name})}();return Promise.resolve(s&&s.then?s.then(n):n())}catch(e){return Promise.reject(e)}},o.createQueryParams=function(e){var t="";if(e)for(var r=0,n=Object.entries(e);r<n.length;r++){var o=n[r],i=o[1],s=o[0].toLowerCase();switch(s){case"hasgeoinfo":s="has_geo_info";break;case"hidebroken":s="hidebroken";break;case"taglist":s="tagList"}t+="&"+s+"="+encodeURIComponent(i)}return t.length?"?"+t.slice(1):""},e}();o.version="6.0.3",e.RadioBrowserApi=o,e.StationSearchOrder={name:"name",url:"url",homepage:"homepage",favicon:"favicon",tags:"tags",country:"country",state:"state",language:"language",votes:"votes",codec:"codec",bitrate:"bitrate",lastCheckOK:"lastCheckOK",lastCheckTime:"lastCheckTime",clickTimeStamp:"clickTimeStamp",clickCount:"clickCount",clickTrend:"clickTrend",random:"random"},e.StationSearchType=n}); //# sourceMappingURL=index.umd.js.map