Skip to content

Commit a22a453

Browse files
authored
Merge pull request #216 from amadeus4dev/HotelBookingV2
Added Hotel booking v2
2 parents 04c6938 + 6b18472 commit a22a453

File tree

6 files changed

+87
-12
lines changed

6 files changed

+87
-12
lines changed

README.md

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -405,14 +405,28 @@ amadeus.shopping.hotelOffersSearch.get({
405405
// Check offer conditions of a specific offer id
406406
amadeus.shopping.hotelOfferSearch('XXX').get()
407407

408-
// Hotel Booking API
408+
// Hotel Booking API v2
409+
amadeus.booking.hotelOrders.post(
410+
JSON.stringfy({
411+
'data': {
412+
'type': 'hotel-order',
413+
'guests': [],
414+
'travelAgent': {},
415+
'roomAssociations': [],
416+
'payment': {}
417+
}})
418+
)
419+
420+
421+
// Hotel Booking API v1
409422
amadeus.booking.hotelBookings.post(
410423
JSON.stringify({
411-
'offerId': 'XXX',
412-
'guests': [],
413-
'payments': []
414-
}
415-
)
424+
'data': {
425+
'offerId': 'XXXX',
426+
'guests': [],
427+
'payments': [],
428+
'rooms': []
429+
}})
416430
)
417431

418432
// On-Demand Flight Status

spec/amadeus/namespaces.test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ describe('Namespaces', () => {
156156
expect(amadeus.shopping.flightOffers.pricing.post).toBeDefined();
157157
expect(amadeus.shopping.seatmaps.post).toBeDefined();
158158
expect(amadeus.booking.hotelBookings.post).toBeDefined();
159+
expect(amadeus.booking.hotelOrders.post).toBeDefined();
159160
expect(amadeus.shopping.transferOffers.post).toBeDefined();
160161
expect(amadeus.ordering.transferOrders.post).toBeDefined();
161162
expect(amadeus.ordering.transferOrder('XXX').transfers.cancellation.post).toBeDefined();
@@ -447,6 +448,13 @@ describe('Namespaces', () => {
447448
.toHaveBeenCalledWith('/v1/booking/hotel-bookings', {});
448449
});
449450

451+
it('.amadeus.booking.hotelOrders.post', () => {
452+
amadeus.client.post = jest.fn();
453+
amadeus.booking.hotelOrders.post();
454+
expect(amadeus.client.post)
455+
.toHaveBeenCalledWith('/v2/booking/hotel-orders', {});
456+
});
457+
450458
it('.amadeus.eReputation.hotelSentiments.get', () => {
451459
amadeus.client.get = jest.fn();
452460
amadeus.eReputation.hotelSentiments.get();

src/amadeus/namespaces/booking.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import FlightOrders from './booking/flight_orders';
22
import FlightOrder from './booking/flight_order';
33
import HotelBookings from './booking/hotel_bookings';
4+
import HotelOrders from './booking/hotel_orders';
45

56
/**
67
* A namespaced client for the
@@ -17,13 +18,15 @@ import HotelBookings from './booking/hotel_bookings';
1718
* @property {FlightOrders} flightOrders
1819
* @property {FlightOrder} flightOrder
1920
* @property {HotelBookings} hotelBookings
21+
* @property {HotelOrders} hotelOrders
2022
* @protected
2123
*/
2224
class Booking {
2325
constructor(client) {
2426
this.client = client;
2527
this.flightOrders = new FlightOrders(client);
2628
this.hotelBookings = new HotelBookings(client);
29+
this.hotelOrders = new HotelOrders(client);
2730
}
2831

2932
flightOrder (orderId) {

src/amadeus/namespaces/booking/flight_orders.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class FlightOrders {
2828
* amadeus.booking.flightOrders.post({
2929
* 'type': 'flight-order',
3030
* 'flightOffers': [],
31-
* 'travelers_info': []
31+
* 'travelers': []
3232
* });
3333
* ```
3434
*/

src/amadeus/namespaces/booking/hotel_bookings.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,15 @@ class HotelBookings {
2525
* To book the hotel offer with ID 'XXX' with guests & payments info
2626
*
2727
* ```js
28-
* amadeus.booking.hotelBookings.post({
29-
* 'offerId': 'XXX',
30-
* 'guests': [],
31-
* 'payments': []
32-
* });
28+
* amadeus.booking.hotelBookings.post(
29+
* JSON.stringify({
30+
* 'data': {
31+
* 'offerId': 'XXXX',
32+
* 'guests': [],
33+
* 'payments': [],
34+
* 'rooms': []
35+
* }})
36+
* )
3337
* ```
3438
*/
3539
post(params = {}) {
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* A namespaced client for the
3+
* `/v2/booking/hotel-orders` endpoints
4+
*
5+
* Access via the {@link Amadeus} object
6+
*
7+
* ```js
8+
* let amadeus = new Amadeus();
9+
* amadeus.booking.hotelOrders;
10+
* ```
11+
*
12+
* @param {Client} client
13+
*/
14+
class HotelOrders {
15+
constructor(client) {
16+
this.client = client;
17+
}
18+
19+
/**
20+
* To book the offer retrieved from Hotel Search API.
21+
*
22+
* @param {Object} params
23+
* @return {Promise.<Response,ResponseError>} a Promise
24+
*
25+
* To book the hotel offer with ID 'XXX' with guests, travel agents and payment info
26+
*
27+
* ```js
28+
* amadeus.booking.hotelOrders.post(
29+
* JSON.stringfy({
30+
* 'data': {
31+
* 'type': 'hotel-order',
32+
* 'guests': [],
33+
* 'travelAgent': {},
34+
* 'roomAssociations': [],
35+
* 'payment': {}
36+
* }})
37+
*)
38+
* ```
39+
*/
40+
post(params = {}) {
41+
42+
return this.client.post('/v2/booking/hotel-orders', params);
43+
}
44+
}
45+
46+
export default HotelOrders;

0 commit comments

Comments
 (0)