-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathjsonrates.min.js
2 lines (2 loc) · 3.08 KB
/
jsonrates.min.js
1
2
/* jsonrates.js v1.2.1 | Currency exchange rates API | jsonrates.com */
var JR=function(){var exports={},params={base:null,from:null,to:null,amount:null,inverse:null,date:null,dateStart:null,dateEnd:null,period:null,list:null,apiKey:null};exports.base=function(base){return params.base=base,params.from=null,params.to=null,this},exports.from=function(from){return params.from=from,params.base=null,this},exports.to=function(to){return params.to=to,params.base=null,this},exports.amount=function(amount){return params.amount=amount,this},exports.inverse=function(inverse){return params.inverse=inverse,this},exports.date=function(date){return params.date=date,params.dateStart=null,params.dateEnd=null,params.period=null,this},exports.dateStart=function(dateStart){return params.dateStart=dateStart,params.date=null,this},exports.dateEnd=function(dateEnd){return params.dateEnd=dateEnd,params.date=null,this},exports.period=function(period){return params.period=period,this},exports.list=function(list){return params.list=list,this},exports.apikey=function(apiKey){return params.apiKey=apiKey,this},exports.callback=function(reqid,func,response){JREQUEST["delete"](reqid),"undefined"!=typeof response.error&&(response=new Error(response.error)),func(response)};var get={perform:function(func){send("get",func,{base:params.base,from:params.from,to:params.to})}},convert={perform:function(func){send("convert",func,{base:params.base,from:params.from,to:params.to,amount:params.amount,inverse:params.inverse})}},historical={perform:function(func){send("historical",func,{base:params.base,from:params.from,to:params.to,date:params.date,dateStart:params.dateStart,dateEnd:params.dateEnd,period:params.period})}},locale={perform:function(func){send("locale",func,{base:params.base,from:params.from,to:params.to})}},fetch={getUrl:function(url){return url.replace("fetch/?list=","").replace("&",".json?")},perform:function(func){send("fetch",func,{list:params.list})}},send=function(endpoint,func,reqParams){reqParams.apiKey=params.apiKey;var url=JREQUEST.create(endpoint,func,reqParams);url="fetch"!=endpoint?url:fetch.getUrl(url),JREQUEST.execute(url)};return exports.get=get.perform,exports.convert=convert.perform,exports.historical=historical.perform,exports.locale=locale.perform,exports.fetch=fetch.perform,exports}(),JREQUEST=function(){var ENDPOINT="http://jsonrates.com/{endpoint}/",CALLBACK_NAME="callback",exports={},cntr=0;exports.create=function(endpoint,func,params){params.callback=createCallback(func);var query=buildQuery(params);return ENDPOINT.replace("{endpoint}",endpoint)+"?"+query},exports.execute=function(url){var script=document.createElement("script");script.src=url,document.head.appendChild(script)},exports["delete"]=function(reqid){var name=CALLBACK_NAME+reqid;delete JREQUEST[name]};var createCallback=function(func){cntr++;var reqid=cntr,name=CALLBACK_NAME+reqid;return JREQUEST[name]=function(response){JR.callback(reqid,func,response)},"JREQUEST."+name},buildQuery=function(params){var res="";for(var key in params){var value=params[key];null!==value&&(res=""!=res?res+"&":res,res=res+key+"="+value)}return res};return exports}();