Skip to content

Commit b248c59

Browse files
authored
Support for Hotel Booking (#56)
* support for hotel booking * add tests * fix intendation * update return type to array and add example * fix readme * update HotelBooking model and change examples directory * fix typo
1 parent 15d1011 commit b248c59

File tree

8 files changed

+176
-0
lines changed

8 files changed

+176
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,11 @@ HotelOffer[] offers = amadeus.shopping.hotelOffers.get(Params
309309
HotelOffer hotelOffer = amadeus.shopping.hotelOffersByHotel.get(Params.with("hotelId", "BGLONBGB"));
310310
// Confirm the availability of a specific offer
311311
HotelOffer offer = amadeus.shopping.hotelOffer("4BA070CE929E135B3268A9F2D0C51E9D4A6CF318BA10485322FA2C7E78C7852E").get();
312+
313+
// Hotel Booking
314+
// The body can be a String version of your JSON or a JsonObject
315+
HotelBooking[] hotel = amadeus.booking.hotelBookings.post(body);
316+
312317
// Hotel Ratings / Sentiments
313318
HotelSentiment[] hotelSentiments = amadeus.ereputation.hotelSentiments.get(Params.with("hotelIds", "ELONMFS,ADNYCCTB"));
314319

src/main/java/examples/flight/createorders/FlightCreateOrders.java renamed to src/examples/flight/createorders/FlightCreateOrders.java

File renamed without changes.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package examples.hotel.booking;
2+
3+
import com.amadeus.Amadeus;
4+
import com.amadeus.exceptions.ResponseException;
5+
import com.amadeus.resources.HotelBooking;
6+
7+
public class HotelBookings {
8+
/**
9+
* <p>
10+
* An example to call hotel Booking API
11+
* <code>/v1/booking/hotel-bookings</code> endpoints.
12+
* </p>
13+
*
14+
* <p>
15+
* Access via the Amadeus client object.
16+
* </p>
17+
*
18+
* <pre>
19+
* Amadeus amadeus = Amadeus.builder("clientId", "secret").build();
20+
* amadeus.booking.hotelBookings;</pre>
21+
*/
22+
public static void main(String[] args) throws ResponseException {
23+
24+
Amadeus amadeus = Amadeus
25+
.builder("REPLACE_BY_YOUR_API_KEY","REPLACE_BY_YOUR_API_SECRET")
26+
.build();
27+
String body = "{\"data\""
28+
+ ":{\"offerId\":\"2F5B1C3B215FA11FD5A44BE210315B18FF91BDA2FEDDD879907A3798F41D1C28\""
29+
+ ",\"guests\":[{\"id\":1,\"name\":{\"title\":\"MR\",\"firstName\":\"BOB\","
30+
+ "\"lastName\" :\"SMITH\"},\"contact\":{\"phone\":\"+33679278416\",\""
31+
+ "email\":\"[email protected]\"}}],\""
32+
+ "payments\":[{\"id\":1,\"method\":\"creditCard\",\""
33+
+ "card\":{\"vendorCode\":\"VI\",\"cardNumber\""
34+
+ ":\"4151289722471370\",\"expiryDate\":\"2021-08\"}}]}}";
35+
HotelBooking[] hotel = amadeus.booking.hotelBookings.post(body);
36+
System.out.println(hotel[0].getId());
37+
}
38+
}
File renamed without changes.

src/main/java/com/amadeus/Booking.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.amadeus.booking.FlightOrder;
44
import com.amadeus.booking.FlightOrders;
5+
import com.amadeus.booking.HotelBookings;
56

67
public class Booking {
78
private Amadeus client;
@@ -22,9 +23,22 @@ public class Booking {
2223
*/
2324
public FlightOrders flightOrders;
2425

26+
/**
27+
* <p>
28+
* A namespaced client for the
29+
* <code>/v1/booking/hotelBookings</code> endpoints.
30+
* </p>
31+
*/
32+
public HotelBookings hotelBookings;
33+
34+
/**
35+
* Constructor.
36+
* @hide
37+
*/
2538
public Booking(Amadeus client) {
2639
this.client = client;
2740
this.flightOrders = new FlightOrders(client);
41+
this.hotelBookings = new HotelBookings(client);
2842
}
2943

3044
public FlightOrder flightOrder(String flightOrderId) {
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.amadeus.booking;
2+
3+
import com.amadeus.Amadeus;
4+
import com.amadeus.Response;
5+
import com.amadeus.exceptions.ResponseException;
6+
import com.amadeus.resources.HotelBooking;
7+
import com.amadeus.resources.Resource;
8+
import com.google.gson.JsonObject;
9+
10+
/**
11+
* <p>
12+
* A namespaced client for the
13+
* <code>/v1/booking/hotel-bookings</code> endpoints.
14+
* </p>
15+
*
16+
* <p>
17+
* Access via the Amadeus client object.
18+
* </p>
19+
*
20+
* <pre>
21+
* Amadeus amadeus = Amadeus.builder(API_KEY, API_SECRET).build();
22+
* amadeus.booking.hotelBookings;</pre>
23+
*/
24+
public class HotelBookings {
25+
private Amadeus client;
26+
27+
/**
28+
* Constructor.
29+
*
30+
* @hide
31+
*/
32+
public HotelBookings(Amadeus client) {
33+
this.client = client;
34+
}
35+
36+
/**
37+
* <p>
38+
* The Hotel Booking API allows you to perform hotel booking.
39+
* </p>
40+
*
41+
* <pre>
42+
* amadeus.booking.hotelBookings.post(body);</pre>
43+
*
44+
* @param body the parameters to send to the API as a JSonObject
45+
* @return an API resource
46+
* @throws ResponseException when an exception occurs
47+
*/
48+
public HotelBooking[] post(JsonObject body) throws ResponseException {
49+
Response response = client.post("/v1/booking/hotel-bookings", body);
50+
return (HotelBooking[]) Resource.fromArray(response, HotelBooking[].class);
51+
}
52+
53+
/**
54+
* <p>
55+
* The Hotel Booking API allows you to perform hotel booking.
56+
* </p>
57+
*
58+
* <pre>
59+
* amadeus.booking.hotelBookings.post(body);</pre>
60+
*
61+
* @param body the parameters to send to the API as a String
62+
* @return an API resource
63+
* @throws ResponseException when an exception occurs
64+
*/
65+
public HotelBooking[] post(String body) throws ResponseException {
66+
Response response = client.post("/v1/booking/hotel-bookings", body);
67+
return (HotelBooking[]) Resource.fromArray(response, HotelBooking[].class);
68+
}
69+
70+
/**
71+
* Convenience method for calling <code>post</code> without any parameters.
72+
*
73+
* @see HotelBookings#post()
74+
*/
75+
public HotelBooking[] post() throws ResponseException {
76+
return post((String) null);
77+
}
78+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.amadeus.resources;
2+
3+
import lombok.Getter;
4+
import lombok.ToString;
5+
6+
/**
7+
* An HotelBooking object as returned by the Hotel Booking API.
8+
* @see com.amadeus.booking.HotelBookings#get()
9+
*/
10+
@ToString
11+
public class HotelBooking extends Resource {
12+
protected HotelBooking() {}
13+
14+
private @Getter String type;
15+
private @Getter String id;
16+
private @Getter String providerConfirmationId;
17+
private @Getter AssociatedRecord associatedRecords;
18+
19+
@ToString
20+
public class AssociatedRecord {
21+
protected AssociatedRecord() {
22+
}
23+
24+
private @Getter String reference;
25+
private @Getter String originSystemCode;
26+
}
27+
28+
}

src/test/java/com/amadeus/NamespaceTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.amadeus.airport.predictions.AirportOnTime;
44
import com.amadeus.booking.FlightOrder;
55
import com.amadeus.booking.FlightOrders;
6+
import com.amadeus.booking.HotelBookings;
67
import com.amadeus.ereputation.HotelSentiments;
78
import com.amadeus.exceptions.ResponseException;
89
import com.amadeus.media.files.GeneratedPhotos;
@@ -69,6 +70,7 @@ public void testAllNamespacesExist() {
6970
TestCase.assertNotNull(client.shopping.hotelOffer("XXX"));
7071
TestCase.assertNotNull(client.airport.predictions.onTime);
7172
TestCase.assertNotNull(client.booking.flightOrder("XXX"));
73+
TestCase.assertNotNull(client.booking.hotelBookings);
7274
TestCase.assertNotNull(client.media.files.generatedPhotos);
7375
}
7476

@@ -376,6 +378,17 @@ public void testPostMethods() throws ResponseException {
376378
SeatMaps seatmap = new SeatMaps(client);
377379
TestCase.assertNotNull(seatmap.post());
378380
TestCase.assertNotNull(seatmap.post(body));
381+
382+
// Test Hotel Booking post
383+
Mockito.when(client.post("/v1/booking/hotel-bookings", (String) null))
384+
.thenReturn(multiResponse);
385+
Mockito.when(client.post("/v1/booking/hotel-bookings", body))
386+
.thenReturn(multiResponse);
387+
Mockito.when(client.post("/v1/booking/hotel-bookings", jsonObject))
388+
.thenReturn(multiResponse);
389+
HotelBookings hotel = new HotelBookings(client);
390+
TestCase.assertNotNull(hotel.post());
391+
TestCase.assertNotNull(hotel.post(body));
379392
}
380393

381394
@Test

0 commit comments

Comments
 (0)