skyscanner-promise-browse
Version:
JS Wrapper around the Skyscanner browse api
1 lines • 6 kB
JavaScript
;function _asyncToGenerator(a){return function(){var b=a.apply(this,arguments);return new Promise(function(a,c){function d(e,f){try{var g=b[e](f),h=g.value}catch(a){return void c(a)}return g.done?void a(h):Promise.resolve(h).then(function(a){d('next',a)},function(a){d('throw',a)})}return d('next')})}}require('babel-core/register'),require('babel-polyfill');var request=require('request-promise-native'),callAPI=function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(b,c){var d,e;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return d=process.env.SKYSCANNER_TOKEN,c||(c={}),c.apikey=d,e={uri:'http://partners.api.skyscanner.net/apiservices/'+b,qs:c,headers:{"User-Agent":'Request-Promise'},json:!0},a.abrupt('return',request(e));case 5:case'end':return a.stop();}},a,void 0)}));return function(){return a.apply(this,arguments)}}(),getLocationCode=function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(b){var c,d=1<arguments.length&&arguments[1]!==void 0?arguments[1]:'UK',e=2<arguments.length&&arguments[2]!==void 0?arguments[2]:'GBP',f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:'en-GB';return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(b){a.next=2;break}throw new Error('You must specify a query for getLocationCode');case 2:return a.next=4,module.exports.callAPI('autosuggest/v1.0/'+d+'/'+e+'/'+f+'/',{query:b});case 4:return c=a.sent,a.abrupt('return',c.Places[0]);case 6:case'end':return a.stop();}},a,void 0)}));return function(){return a.apply(this,arguments)}}(),formatRoutesData=function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(b,c,d,e){var f,g;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(b&&c&&d){a.next=2;break}throw new Error('You must specify routes, places and a currency for formatRoutesData');case 2:return f={},c.forEach(function(a){f[a.PlaceId]={name:a.Name,type:a.Type,code:a.SkyscannerCode}}),e||(e=9),b=b.sort(function(c,a){return c.Price<a.Price}).slice(b.length-e),g=b.map(function(a){return{origin:f[a.OriginId],destination:f[a.DestinationId],currency:d,price:a.Price}}),g=g.sort(function(c,a){return parseInt(c.price,10)<parseInt(a.price,10)}),a.abrupt('return',g.slice(0,e));case 9:case'end':return a.stop();}},a,void 0)}));return function(){return a.apply(this,arguments)}}(),formatQuotesData=function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(b,c,d,e,f){var g,h,i;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(b&&c&&d&&e){a.next=2;break}throw new Error('You must specify quotes, places, carriers and a currency for formatQuotesData');case 2:return g={},c.forEach(function(a){g[a.PlaceId]={name:a.Name,type:a.Type,code:a.SkyscannerCode}}),h={},d.forEach(function(a){h[a.CarrierId]={name:a.Name}}),f||(f=9),b=b.slice(b.length-f),i=b.map(function(a){var b=void 0,c=void 0;return a.InboundLeg&&(b={carrier:a.InboundLeg.CarrierIds[0]?h[a.InboundLeg.CarrierIds[0]]:{name:'unknown'},origin:g[a.InboundLeg.OriginId],destination:g[a.InboundLeg.DestinationId],date:a.InboundLeg.DepartureDate}),a.OutboundLeg&&(c={carrier:h[a.OutboundLeg.CarrierIds[0]],origin:g[a.OutboundLeg.OriginId],destination:g[a.OutboundLeg.DestinationId],date:a.OutboundLeg.DepartureDate}),{outbound:c,inbound:b,currency:e,direct:a.Direct,price:a.MinPrice,quoteDate:a.QuoteDateTime}}),i=i.sort(function(c,a){return parseInt(c.price,10)<parseInt(a.price,10)}),a.abrupt('return',i.slice(0,f));case 11:case'end':return a.stop();}},a,void 0)}));return function(){return a.apply(this,arguments)}}(),browseRoutes=function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(b){var c,d,e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:'anywhere',f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:'anytime',g=3<arguments.length&&arguments[3]!==void 0?arguments[3]:'anytime',h=4<arguments.length&&arguments[4]!==void 0?arguments[4]:'UK',i=5<arguments.length&&arguments[5]!==void 0?arguments[5]:'GBP',j=6<arguments.length&&arguments[6]!==void 0?arguments[6]:'en-UK',k=7<arguments.length&&arguments[7]!==void 0?arguments[7]:9;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(b){a.next=2;break}throw new Error('Origin aiport undefined. Required in browseRoutes');case 2:return a.next=4,module.exports.callAPI('browseroutes/v1.0/'+h+'/'+i+'/'+j+'/'+b+'/'+e+'/'+f+'/'+g);case 4:return c=a.sent,a.next=7,formatRoutesData(c.Routes,c.Places,c.Currencies[0],k);case 7:return d=a.sent,a.abrupt('return',d);case 9:case'end':return a.stop();}},a,void 0)}));return function(){return a.apply(this,arguments)}}(),browseQuotes=function(){var a=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function a(b){var c,d,e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:'anywhere',f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:'anytime',g=3<arguments.length&&arguments[3]!==void 0?arguments[3]:'anytime',h=4<arguments.length&&arguments[4]!==void 0?arguments[4]:'UK',i=5<arguments.length&&arguments[5]!==void 0?arguments[5]:'GBP',j=6<arguments.length&&arguments[6]!==void 0?arguments[6]:'en-UK',k=7<arguments.length&&arguments[7]!==void 0?arguments[7]:9;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(b){a.next=2;break}throw new Error('Origin aiport undefined. Required in browseQuotes');case 2:return a.next=4,module.exports.callAPI('browsequotes/v1.0/'+h+'/'+i+'/'+j+'/'+b+'/'+e+'/'+f+'/'+g);case 4:return c=a.sent,a.next=7,formatQuotesData(c.Quotes,c.Places,c.Carriers,c.Currencies[0],k);case 7:return d=a.sent,a.abrupt('return',d);case 9:case'end':return a.stop();}},a,void 0)}));return function(){return a.apply(this,arguments)}}();module.exports={callAPI:callAPI,formatQuotesData:formatQuotesData,formatRoutesData:formatRoutesData,getLocationCode:getLocationCode,browseRoutes:browseRoutes,browseQuotes:browseQuotes};