Skip to content

Commit e7e5261

Browse files
authored
Merge pull request #151 from amadeus4dev/add_city_seacrch_api
add_city_search_api
2 parents 1b01364 + 897c72a commit e7e5261

File tree

7 files changed

+61
-2
lines changed

7 files changed

+61
-2
lines changed

.DS_Store

-6 KB
Binary file not shown.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ coverage
44
test.js
55
docs
66
.vscode/
7+
.DS_Store

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,13 @@ amadeus.travel.tripParserJobs('XXX').get()
345345
// To get the results of the job with ID 'XXX'
346346
amadeus.travel.tripParserJobs('XXX').result.get()
347347

348+
// City Search API
349+
// finds cities that match a specific word or string of letters.
350+
// Return a list of cities matching a keyword 'Paris'
351+
amadeus.referenceData.locations.cities.get({
352+
keyword: 'Paris'
353+
})
354+
348355
//Hotel List API
349356
//Get list of hotels by city code
350357
amadeus.referenceData.locations.hotels.byCity.get({

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/amadeus/namespaces.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ describe('Namespaces', () => {
2222
expect(amadeus.referenceData.location).toBeDefined();
2323
expect(amadeus.referenceData.locations).toBeDefined();
2424
expect(amadeus.referenceData.locations.airports).toBeDefined();
25+
expect(amadeus.referenceData.locations.cities).toBeDefined();
2526
expect(amadeus.referenceData.locations.hotels.byCity).toBeDefined();
2627
expect(amadeus.referenceData.locations.hotels.byGeocode).toBeDefined();
2728
expect(amadeus.referenceData.locations.hotels.byHotels).toBeDefined();
@@ -108,6 +109,7 @@ describe('Namespaces', () => {
108109
expect(amadeus.referenceData.location('ALHR').get).toBeDefined();
109110
expect(amadeus.referenceData.locations.get).toBeDefined();
110111
expect(amadeus.referenceData.locations.airports.get).toBeDefined();
112+
expect(amadeus.referenceData.locations.cities.get).toBeDefined();
111113
expect(amadeus.referenceData.locations.hotels.byCity.get).toBeDefined();
112114
expect(amadeus.referenceData.locations.hotels.byGeocode.get).toBeDefined();
113115
expect(amadeus.referenceData.locations.hotels.byHotels.get).toBeDefined();
@@ -202,6 +204,13 @@ describe('Namespaces', () => {
202204
.toHaveBeenCalledWith('/v1/reference-data/locations/airports', {});
203205
});
204206

207+
it('.amadeus.referenceData.locations.cities.get', () => {
208+
amadeus.client.get = jest.fn();
209+
amadeus.referenceData.locations.cities.get();
210+
expect(amadeus.client.get)
211+
.toHaveBeenCalledWith('/v1/reference-data/locations/cities', {});
212+
});
213+
205214
it('.amadeus.referenceData.locations.hotels.byCity.get', () => {
206215
amadeus.client.get = jest.fn();
207216
amadeus.referenceData.locations.hotels.byCity.get();

src/amadeus/namespaces/reference_data/locations.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Airports from './locations/airports';
2+
import Cities from './locations/cities';
23
import Hotels from './locations/hotels';
34
import PointOfInterest from './locations/poi';
45
import PointsOfInterest from './locations/pois';
@@ -21,6 +22,7 @@ class Locations {
2122
constructor(client) {
2223
this.client = client;
2324
this.airports = new Airports(client);
25+
this.cities = new Cities(client);
2426
this.hotels = new Hotels(client);
2527
this.pointsOfInterest = new PointsOfInterest(client);
2628
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* A namespaced client for the
3+
* `/v2/reference-data/locations/cities` endpoints
4+
*
5+
* Access via the {@link Amadeus} object
6+
*
7+
* ```js
8+
* let amadeus = new Amadeus();
9+
* amadeus.referenceData.locations.cities;
10+
* ```
11+
*
12+
* @param {Client} client
13+
*/
14+
class Cities {
15+
constructor(client) {
16+
this.client = client;
17+
}
18+
19+
/**
20+
* Return a list of cities matching a given keyword..
21+
*
22+
* @param {Object} params
23+
* @param {string} params.keyword keyword that should represent
24+
* the start of a word in a city name
25+
* @return {Promise.<Response,ResponseError>} a Promise
26+
*
27+
* Return a list of cities matching a keyword 'France'
28+
*
29+
* ```js
30+
* amadeus.referenceData.locations.cities.get({
31+
* keyword: 'FRANCE'
32+
* });
33+
* ```
34+
*/
35+
get(params = {}) {
36+
return this.client.get('/v1/reference-data/locations/cities', params);
37+
}
38+
}
39+
40+
export default Cities;

0 commit comments

Comments
 (0)