Skip to content

Commit bb82f4a

Browse files
spirosbatzioanthonyroux
authored andcommitted
Introduce flight offer v2 request (#33)
Add the support for Flight Offers Search (Get) to the SDK
1 parent d7d7f6d commit bb82f4a

File tree

5 files changed

+185
-0
lines changed

5 files changed

+185
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,16 @@ FlightOffer[] flightOffers = amadeus.shopping.flightOffers.get(Params
225225
.and("destination", "MAD")
226226
.and("departureDate", "2019-08-01"));
227227

228+
// Flight Offer Search v2
229+
FlightOfferSearch[] flightOffersSearches = amadeus.shopping.flightOffersSearch.get(
230+
Params.with("originLocationCode", "SYD")
231+
.and("destinationLocationCode", "BKK")
232+
.and("departureDate", "2020-01-01")
233+
.and("returnDate", "2020-01-05")
234+
.and("adults", 2)
235+
.and("max", 3)
236+
);
237+
228238
// Flight Choice Prediction
229239
// Note that the example calls 2 APIs: Flight Low-fare Search & Flight Choice Prediction
230240
FlightOffer[] flightOffers = amadeus.shopping.flightOffers

src/main/java/com/amadeus/Shopping.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.amadeus.shopping.FlightDates;
44
import com.amadeus.shopping.FlightDestinations;
55
import com.amadeus.shopping.FlightOffers;
6+
import com.amadeus.shopping.FlightOffersSearch;
67
import com.amadeus.shopping.HotelOffer;
78
import com.amadeus.shopping.HotelOffers;
89
import com.amadeus.shopping.HotelOffersByHotel;
@@ -50,6 +51,14 @@ public class Shopping {
5051
*/
5152
public FlightOffers flightOffers;
5253

54+
/**
55+
* <p>
56+
* A namespaced client for the
57+
* <code>/v2/shopping/flight-offers</code> endpoints.
58+
* </p>
59+
*/
60+
public FlightOffersSearch flightOffersSearch;
61+
5362
/**
5463
* <p>
5564
* A namespaced client for the
@@ -77,6 +86,7 @@ public Shopping(Amadeus client) {
7786
this.flightOffers = new FlightOffers(client);
7887
this.hotelOffers = new HotelOffers(client);
7988
this.hotelOffersByHotel = new HotelOffersByHotel(client);
89+
this.flightOffersSearch = new FlightOffersSearch(client);
8090
}
8191

8292
/**
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package com.amadeus.resources;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import java.util.Date;
5+
import lombok.Getter;
6+
import lombok.ToString;
7+
8+
9+
@ToString
10+
public class FlightOfferSearch extends Resource {
11+
protected FlightOfferSearch() {}
12+
13+
private @Getter String type;
14+
private @Getter String id;
15+
private @Getter String source;
16+
private @Getter boolean instantTicketingRequired;
17+
private @Getter boolean nonHomogeneous;
18+
private @Getter boolean oneWay;
19+
private @Getter Date lastTicketingDate;
20+
private @Getter int numberOfBookableSeats;
21+
private @Getter Itinerary[] itineraries;
22+
private @Getter SearchPrice price;
23+
private @Getter PricingOptions pricingOptions;
24+
private @Getter String[] validatingAirlineCodes;
25+
private @Getter TravelerPricing[] travelerPricings;
26+
27+
28+
29+
@ToString
30+
public class Itinerary {
31+
protected Itinerary() {
32+
}
33+
34+
private @Getter String duration;
35+
private @Getter SearchSegment[] segments;
36+
37+
}
38+
39+
@ToString
40+
public class SearchSegment {
41+
protected SearchSegment() {
42+
}
43+
44+
private @Getter AirportInfo departure;
45+
private @Getter AirportInfo arrival;
46+
private @Getter String carrierCode;
47+
private @Getter String number;
48+
private @Getter Aircraft aircraft;
49+
private @Getter String duration;
50+
private @Getter String id;
51+
private @Getter int numberOfStops;
52+
private @Getter boolean blacklistedInEU;
53+
}
54+
55+
@ToString
56+
public class AirportInfo {
57+
protected AirportInfo() {
58+
}
59+
60+
private @Getter String iataCode;
61+
private @Getter String terminal;
62+
private @Getter String at;
63+
}
64+
65+
@ToString
66+
public class Aircraft {
67+
protected Aircraft() {
68+
}
69+
70+
private @Getter String code;
71+
}
72+
73+
@ToString
74+
public class SearchPrice {
75+
protected SearchPrice() {
76+
}
77+
78+
private @Getter String currency;
79+
private @Getter double total;
80+
private @Getter double base;
81+
private @Getter Fee[] fees;
82+
private @Getter double grandTotal;
83+
}
84+
85+
@ToString
86+
public class Fee {
87+
protected Fee() {
88+
}
89+
90+
private @Getter double amount;
91+
private @Getter String type;
92+
}
93+
94+
@ToString
95+
public class PricingOptions {
96+
private @Getter boolean includedCheckedBagsOnly;
97+
}
98+
99+
@ToString
100+
public class TravelerPricing {
101+
protected TravelerPricing() {
102+
}
103+
104+
private @Getter String travelerId;
105+
private @Getter String fareOption;
106+
private @Getter String travelerType;
107+
private @Getter SearchPrice price;
108+
private @Getter FareDetailsBySegment[] fareDetailsBySegment;
109+
}
110+
111+
@ToString
112+
public class FareDetailsBySegment {
113+
protected FareDetailsBySegment() {
114+
}
115+
116+
private @Getter String segmentId;
117+
private @Getter String cabin;
118+
private @Getter String fareBasis;
119+
@SerializedName("class")
120+
private @Getter String segmentClass;
121+
private @Getter IncludedCheckedBags includedCheckedBags;
122+
123+
}
124+
125+
@ToString
126+
public class IncludedCheckedBags {
127+
protected IncludedCheckedBags() {
128+
}
129+
130+
private @Getter double weight;
131+
private @Getter String weightUnit;
132+
}
133+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.amadeus.shopping;
2+
3+
import com.amadeus.Amadeus;
4+
import com.amadeus.Params;
5+
import com.amadeus.Response;
6+
import com.amadeus.exceptions.ResponseException;
7+
import com.amadeus.resources.FlightOfferSearch;
8+
import com.amadeus.resources.Resource;
9+
10+
public class FlightOffersSearch {
11+
private Amadeus client;
12+
13+
public FlightOffersSearch(Amadeus client) {
14+
this.client = client;
15+
}
16+
17+
public FlightOfferSearch[] get(Params params) throws ResponseException {
18+
Response response = client.get("/v2/shopping/flight-offers", params);
19+
return (FlightOfferSearch[]) Resource.fromArray(response, FlightOfferSearch[].class);
20+
}
21+
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.amadeus.shopping.FlightDates;
1212
import com.amadeus.shopping.FlightDestinations;
1313
import com.amadeus.shopping.FlightOffers;
14+
import com.amadeus.shopping.FlightOffersSearch;
1415
import com.amadeus.shopping.HotelOffer;
1516
import com.amadeus.shopping.HotelOffers;
1617
import com.amadeus.shopping.HotelOffersByHotel;
@@ -51,6 +52,7 @@ public void testAllNamespacesExist() {
5152
TestCase.assertNotNull(client.shopping.flightDates);
5253
TestCase.assertNotNull(client.shopping.flightDestinations);
5354
TestCase.assertNotNull(client.shopping.flightOffers);
55+
TestCase.assertNotNull(client.shopping.flightOffersSearch);
5456
TestCase.assertNotNull(client.shopping.flightOffers.prediction);
5557
TestCase.assertNotNull(client.shopping.hotelOffers);
5658
TestCase.assertNotNull(client.shopping.hotelOffersByHotel);
@@ -257,6 +259,15 @@ public void testGetMethods() throws ResponseException {
257259
HotelOffer hotelOffer = new HotelOffer(client, "XXX");
258260
TestCase.assertNotNull(hotelOffer.get());
259261
TestCase.assertNotNull(hotelOffer.get(params));
262+
263+
// Test flight offer search v2
264+
Mockito.when(client.get("/v2/shopping/flight-offers", null))
265+
.thenReturn(multiResponse);
266+
Mockito.when(client.get("/v2/shopping/flight-offers", params))
267+
.thenReturn(multiResponse);
268+
FlightOffersSearch flightOfferSearch = new FlightOffersSearch(client);
269+
TestCase.assertNotNull(flightOfferSearch.get(params));
270+
260271
}
261272

262273
@Test

0 commit comments

Comments
 (0)