skyscannerjs
Advanced tools
Comparing version 0.0.1 to 0.2.0
@@ -6,3 +6,3 @@ "use strict"; | ||
}); | ||
exports.Skyscanner = undefined; | ||
exports.API = undefined; | ||
@@ -15,2 +15,6 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _querystring = require("querystring"); | ||
var _querystring2 = _interopRequireDefault(_querystring); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -20,74 +24,395 @@ | ||
var Skyscanner = exports.Skyscanner = function () { | ||
function Skyscanner(apiKey) { | ||
var _this = this; | ||
var API = exports.API = function () { | ||
function API(apiKey) { | ||
_classCallCheck(this, API); | ||
_classCallCheck(this, Skyscanner); | ||
this.apiKey = apiKey; | ||
this.flights = { | ||
livePrices: { | ||
session: function session(data) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.flightPricingURL; | ||
data.apiKey = apiKey; | ||
data = _querystring2.default.stringify(data); | ||
return _axios2.default.post(url, data, { | ||
headers: { | ||
"Content-Type": "application/x-www-form-urlencoded", | ||
"Accept": asJSON ? "application/json" : "application/xml" | ||
} | ||
}); | ||
}, | ||
poll: function poll(session) { | ||
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var url = API.flightPricingURL + "/" + session; | ||
params.apiKey = apiKey; | ||
return _axios2.default.get(url, { params: params }); | ||
}, | ||
bookingDetails: { | ||
session: function session(_session, data) { | ||
var url = API.flightPricingURL + "/" + _session + "/booking"; | ||
data.apiKey = apiKey; | ||
data = _querystring2.default.stringify(data); | ||
return _axios2.default.put(url, data); | ||
}, | ||
poll: function poll(session, itinerary) { | ||
var params = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; | ||
var url = API.flightPricingURL + "/" + session + "/booking/" + itinerary; | ||
params.apiKey = apiKey; | ||
return _axios2.default.get(url, { params: params }); | ||
} | ||
} | ||
}, | ||
browse: { | ||
quotes: function quotes(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.browseQuotesURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.originPlace; | ||
url += "/" + params.destinationPlace; | ||
url += "/" + params.outboundPartialDate; | ||
if (params.inboundPartialDate) { | ||
url += "/" + params.inboundPartialDate; | ||
} | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml", | ||
"X-Forwarded-For": params.ip | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}, | ||
routes: function routes(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.browseRoutesURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.originPlace; | ||
url += "/" + params.destinationPlace; | ||
url += "/" + params.outboundPartialDate; | ||
if (params.inboundPartialDate) { | ||
url += "/" + params.inboundPartialDate; | ||
} | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml", | ||
"X-Forwarded-For": params.ip | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}, | ||
dates: function dates(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.browseDatesURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.originPlace; | ||
url += "/" + params.destinationPlace; | ||
url += "/" + params.outboundPartialDate; | ||
if (params.inboundPartialDate) { | ||
url += "/" + params.inboundPartialDate; | ||
} | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml", | ||
"X-Forwarded-For": params.ip | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}, | ||
grid: function grid(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.browseGridURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.originPlace; | ||
url += "/" + params.destinationPlace; | ||
url += "/" + params.outboundPartialDate; | ||
if (params.inboundPartialDate) { | ||
url += "/" + params.inboundPartialDate; | ||
} | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml", | ||
"X-Forwarded-For": params.ip | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
} | ||
} | ||
}; | ||
this.carHire = { | ||
livePrices: { | ||
session: function session(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.carHirePricingURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.pickupplace; | ||
url += "/" + params.dropoffplace; | ||
url += "/" + params.pickupdatetime; | ||
url += "/" + params.dropoffdatetime; | ||
url += "/" + params.driverage; | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Content-Type": "application/x-www-form-urlencoded", | ||
"Accept": asJSON ? "application/json" : "application/xml" | ||
}, | ||
params: { | ||
apiKey: apiKey, | ||
userip: params.ip | ||
} | ||
}); | ||
}, | ||
poll: function poll(session, deltaExcludedWebsites) { | ||
var url = API.carHirePricingURL + "/" + session; | ||
var params = {}; | ||
if (deltaExcludedWebsites) { | ||
params.deltaExcludedWebsites = deltaExcludedWebsites; | ||
} | ||
return _axios2.default.get(url, { params: params }); | ||
} | ||
} | ||
}; | ||
this.hotels = { | ||
livePrices: { | ||
session: function session(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.hotelPricingURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.entityId; | ||
url += "/" + params.checkindate; | ||
url += "/" + params.checkoutdate; | ||
url += "/" + params.guests; | ||
url += "/" + params.rooms; | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml" | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}, | ||
poll: function poll(session) { | ||
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var url = API.hotelPricingURL + "/" + session; | ||
return _axios2.default.get(url, { params: params }); | ||
}, | ||
details: { | ||
session: function session(_session2, params) { | ||
var url = API.hotelDetailsURL + "/details/" + _session2; | ||
return _axios2.default.get(url, { params: params }); | ||
}, | ||
poll: function poll(session, params) { | ||
var url = API.hotelDetailsURL + "/polldetails/" + session; | ||
return _axios2.default.get(url, { params: params }); | ||
} | ||
} | ||
}, | ||
autosuggest: function autosuggest(params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.hotelAutosuggestURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.query; | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml" | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
} | ||
}; | ||
this.reference = { | ||
currencies: function currencies() { | ||
var url = Skyscanner.referenceURL + "/currencies"; | ||
return _this.get(url); | ||
var url = API.referenceURL + "/currencies"; | ||
return _axios2.default.get(url, { | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}, | ||
locales: function locales() { | ||
var url = Skyscanner.referenceURL + "/locales"; | ||
return _this.get(url); | ||
var url = API.referenceURL + "/locales"; | ||
return _axios2.default.get(url, { | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}, | ||
countries: function countries(locale) { | ||
var url = Skyscanner.referenceURL + "/countries/" + locale; | ||
return _this.get(url); | ||
var url = API.referenceURL + "/countries/" + locale; | ||
return _axios2.default.get(url, { | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
} | ||
}; | ||
this.locationAutosuggest = function (params) { | ||
var asJSON = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; | ||
var url = API.locationAutosuggestURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
var reqParams = { | ||
apiKey: apiKey | ||
}; | ||
if (params.query) { | ||
reqParams.query = params.query; | ||
} else { | ||
reqParams.id = params.id; | ||
} | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"Accept": asJSON ? "application/json" : "application/xml" | ||
}, | ||
params: reqParams | ||
}); | ||
}; | ||
this.referral = function (params) { | ||
var url = API.referralURL; | ||
url += "/" + params.market; | ||
url += "/" + params.currency; | ||
url += "/" + params.locale; | ||
url += "/" + params.originPlace; | ||
url += "/" + params.destinationPlace; | ||
url += "/" + params.outboundPartialDate; | ||
if (params.inboundPartialDate) { | ||
url += "/" + params.inboundPartialDate; | ||
} | ||
return _axios2.default.get(url, { | ||
headers: { | ||
"X-Forwarded-For": params.ip | ||
}, | ||
params: { | ||
apiKey: apiKey | ||
} | ||
}); | ||
}; | ||
} | ||
_createClass(Skyscanner, [{ | ||
key: "get", | ||
value: function get(url, params, config) { | ||
return this.request(_axios2.default.get, url, params, config); | ||
_createClass(API, null, [{ | ||
key: "baseURL", | ||
get: function get() { | ||
return "http://partners.api.skyscanner.net/apiservices"; | ||
} | ||
}, { | ||
key: "post", | ||
value: function post(url, params, config) { | ||
return this.request(_axios2.default.post, url, params, config); | ||
key: "referenceURL", | ||
get: function get() { | ||
return API.baseURL + "/reference/v1.0"; | ||
} | ||
}, { | ||
key: "put", | ||
value: function put(url, params, config) { | ||
return this.request(_axios2.default.put, url, params, config); | ||
key: "flightPricingURL", | ||
get: function get() { | ||
return API.baseURL + "/pricing/v1.0"; | ||
} | ||
}, { | ||
key: "request", | ||
value: function request(method, url) { | ||
var params = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; | ||
var config = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; | ||
config.params = config.params || params; | ||
config.params.apiKey = this.apiKey; | ||
return method(url, config); | ||
key: "browseQuotesURL", | ||
get: function get() { | ||
return API.baseURL + "/browsequotes/v1.0"; | ||
} | ||
}], [{ | ||
key: "baseURL", | ||
}, { | ||
key: "browseRoutesURL", | ||
get: function get() { | ||
return "http://partners.api.skyscanner.net/apiservices"; | ||
return API.baseURL + "/browseroutes/v1.0"; | ||
} | ||
}, { | ||
key: "referenceURL", | ||
key: "browseDatesURL", | ||
get: function get() { | ||
return Skyscanner.baseURL + "/reference/v1.0"; | ||
return API.baseURL + "/browsedates/v1.0"; | ||
} | ||
}, { | ||
key: "locationSchemas", | ||
key: "browseGridURL", | ||
get: function get() { | ||
return ["Iata", "GeoNameCode", "GeoNameId", "Rnid", "Sky"]; | ||
return API.baseURL + "/browsegrid/v1.0"; | ||
} | ||
}, { | ||
key: "carrierSchemas", | ||
key: "carHirePricingURL", | ||
get: function get() { | ||
return ["Iata", "Icao", "Skyscanner"]; | ||
return API.baseURL + "/carhire/liveprices/v2"; | ||
} | ||
}, { | ||
key: "hotelPricingURL", | ||
get: function get() { | ||
return API.baseURL + "/hotels/liveprices/v2"; | ||
} | ||
}, { | ||
key: "hotelDetailsURL", | ||
get: function get() { | ||
return API.baseURL + "/hotels/livedetails/v2"; | ||
} | ||
}, { | ||
key: "hotelAutosuggestURL", | ||
get: function get() { | ||
return API.baseURL + "/hotels/autosuggest/v2"; | ||
} | ||
}, { | ||
key: "locationAutosuggestURL", | ||
get: function get() { | ||
return API.baseURL + "/autosuggest/v1.0"; | ||
} | ||
}, { | ||
key: "referralURL", | ||
get: function get() { | ||
return API.baseURL + "/referral/v1.0"; | ||
} | ||
}]); | ||
return Skyscanner; | ||
return API; | ||
}(); |
{ | ||
"name": "skyscannerjs", | ||
"version": "0.0.1", | ||
"version": "0.2.0", | ||
"description": "Node.js wrapper for the Skyscanner travel APIs.", | ||
"main": "lib/skyscanner.js", | ||
"scripts": { | ||
"test": "npm run build && mocha --compilers js:babel-core/register", | ||
"test": "npm run build && mocha --compilers js:babel-core/register --timeout 30000", | ||
"build": "babel src --presets babel-preset-es2015 --out-dir lib", | ||
@@ -9,0 +9,0 @@ "prepublish": "npm run build", |
# SkyscannerJS | ||
Promise based wrapper for the Skyscanner travel APIs. | ||
[![npm version](https://badge.fury.io/js/skyscannerjs.svg)](https://badge.fury.io/js/skyscannerjs) | ||
[![npm downloads](https://img.shields.io/npm/dm/skyscannerjs.svg)](https://img.shields.io/npm/dm/skyscannerjs) | ||
[![CI status](https://travis-ci.org/Garee/skyscannerjs.svg?branch=master)](https://travis-ci.org/Garee/skyscannerjs) | ||
## Install | ||
```sh | ||
$ npm install skyscannerjs | ||
``` | ||
## Examples | ||
### Create an API object. | ||
```javascript | ||
// ES6 | ||
import skyscanner from "skyscanner"; | ||
const apiKey = "s3r3t4PIk3y"; | ||
const api = skyscanner.API(apiKey); | ||
// ES5 | ||
var skyscanner = require("skyscanner"); | ||
var apiKey = "s3r3t4PIk3y"; | ||
var api = skyscanner.API(apiKey); | ||
``` |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
20743
367
30
1