Skip to content

Commit

Permalink
SDK-1354 update example scenarios to use the links
Browse files Browse the repository at this point in the history
  • Loading branch information
dtayeh committed Jul 2, 2024
1 parent c060ca7 commit 243e48e
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 45 deletions.
2 changes: 1 addition & 1 deletion examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<dependency>
<groupId>com.expediagroup</groupId>
<artifactId>rapid-sdk</artifactId>
<version>4.1.2</version>
<version>4.2.0-SNAPSHOT</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionCoordinatesScenario;
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionDescendantsScenario;
import com.expediagroup.sdk.rapid.examples.scenarios.geography.ParseRegionWithMultiPolygonCoordinatesScenario;
import com.expediagroup.sdk.rapid.examples.scenarios.shopping.GetAdditionalAvailabilityOfPropertyScenario;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -134,5 +135,23 @@ public static void main(String[] args) {
parseRegionCategoriesScenario.setProfile(new DefaultRapidPartnerProfile());
parseRegionCategoriesScenario.run();

/* Run Get Additional Availability Of Property Scenario using the default profile
This scenario demonstrates the following:
1. Getting property availability for a test property
2. Getting additional availability of the first property returned
*/
logger.info("Running Get Additional Availability Of Property Scenario...");
GetAdditionalAvailabilityOfPropertyScenario getAdditionalAvailabilityOfPropertyScenario = new GetAdditionalAvailabilityOfPropertyScenario();
getAdditionalAvailabilityOfPropertyScenario.setProfile(new DefaultRapidPartnerProfile());
getAdditionalAvailabilityOfPropertyScenario.run();

logger.info("=======================================================================================");
logger.info("=======================================================================================");
logger.info("== ==");
logger.info("== That's all folks! Thanks for watching the demonstration of RAPID SDK. ==");
logger.info("== ==");
logger.info("=======================================================================================");
logger.info("=======================================================================================");

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,6 @@ public void run() {
logger.info("Getting itinerary by itinerary id...");
Itinerary itinerary = bookService.getReservationByItineraryId(itineraryCreation).getData();
logger.info("Itinerary: {}", itinerary.getItineraryId());
logger.info("Count of rooms booked: {}", itinerary.getRooms().size());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.expediagroup.sdk.rapid.examples.scenarios.shopping;

import com.expediagroup.sdk.core.model.Response;
import com.expediagroup.sdk.rapid.examples.Constants;
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
import com.expediagroup.sdk.rapid.examples.services.ShopService;
import com.expediagroup.sdk.rapid.models.Property;
import com.expediagroup.sdk.rapid.models.PropertyAvailability;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

public class GetAdditionalAvailabilityOfPropertyScenario implements RapidScenario {

private static final Logger logger = LoggerFactory.getLogger(GetAdditionalAvailabilityOfPropertyScenario.class);
private ShopService shopService = new ShopService();
private RapidPartnerSalesProfile rapidPartnerSalesProfile;

@Override
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
}

@Override
public void run() {

// Shopping for properties
logger.info("Getting property availability for test property: {}", Constants.TEST_PROPERTY_ID);

List<Property> propertyAvailabilityList = shopService.getSingleRoomPropertiesAvailability(this.rapidPartnerSalesProfile).getData();

if (propertyAvailabilityList == null || propertyAvailabilityList.isEmpty()) {
logger.error("No property availability found for the test property.");
return;
}

logger.info("Property Availability: {}", propertyAvailabilityList.get(0).getStatus());

// Get additional availability of the first property returned
Property property = propertyAvailabilityList.get(0);
logger.info("Get additional availability of property id: {}...", property.getPropertyId());

PropertyAvailability propertyAvailability = (PropertyAvailability) property;
Response<List<PropertyAvailability>> additionalPropertyAvailability = shopService.getAdditionalAvailability(propertyAvailability);

// Log the additional availability
logger.info("Additional availability returned:");
additionalPropertyAvailability.getData().forEach(additionalProperty -> {
logger.info("---------------------------------");
logger.info("Property Id: {}", additionalProperty.getPropertyId());
logger.info("Property Rooms Count: {}", additionalProperty.getRooms().size());
logger.info("Property Status: {}", additionalProperty.getStatus());
});

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@
import com.expediagroup.sdk.rapid.models.PhoneRequest;
import com.expediagroup.sdk.rapid.models.RoomPriceCheck;
import com.expediagroup.sdk.rapid.operations.GetReservationByItineraryIdOperation;
import com.expediagroup.sdk.rapid.operations.GetReservationByItineraryIdOperationParams;
import com.expediagroup.sdk.rapid.operations.PostItineraryOperation;
import com.expediagroup.sdk.rapid.operations.PostItineraryOperationParams;
import com.expediagroup.sdk.rapid.operations.PutResumeBookingOperation;
import com.expediagroup.sdk.rapid.operations.PutResumeBookingOperationParams;

Expand All @@ -29,16 +27,9 @@ public class BookService extends RapidService {

public Response<ItineraryCreation> createBooking(RoomPriceCheck roomPriceCheck, List<String> occupancy) {

String bookHref = roomPriceCheck.getLinks().getBook().getHref();

// In the Book request, include corresponding separate instances of room in the rooms array for each room you wish to book. */
List<CreateItineraryRequestRoom> rooms = Collections.nCopies(occupancy.size(), createRoom());

PostItineraryOperationParams params = PostItineraryOperationParams.builder()
.customerIp(Constants.CUSTOMER_IP)
.token(Objects.requireNonNull(rapidClient.helpers.extractToken(bookHref)))
.build();

CreateItineraryRequest createItineraryRequest = CreateItineraryRequest.builder()
.affiliateReferenceId(UUID.randomUUID().toString().substring(0, 28))
.hold(false)
Expand All @@ -51,23 +42,16 @@ public Response<ItineraryCreation> createBooking(RoomPriceCheck roomPriceCheck,
.travelerHandlingInstructions("Please use the card provided for payment. Avoid cancellation as this is for a corporate traveler. Contact traveler if any issues.")
.build();

PostItineraryOperation operation = new PostItineraryOperation(createItineraryRequest, params);

PostItineraryOperation operation = new PostItineraryOperation(roomPriceCheck.getLinks().getBook());
return rapidClient.execute(operation);
}

public Response<ItineraryCreation> createBookingWithHold(RoomPriceCheck roomPriceCheck, List<String> occupancy) {
String bookHref = roomPriceCheck.getLinks().getBook().getHref();

// In the Book request, include corresponding separate instances of room in the rooms array for each room you wish to book. */
List<CreateItineraryRequestRoom> rooms = Collections.nCopies(occupancy.size(), createRoom());

// Create a booking with hold, set hold to true
PostItineraryOperationParams params = PostItineraryOperationParams.builder()
.customerIp(Constants.CUSTOMER_IP)
.token(Objects.requireNonNull(rapidClient.helpers.extractToken(bookHref)))
.build();

// Create a booking with hold, set hold to true in the request
CreateItineraryRequest createItineraryRequest = CreateItineraryRequest.builder()
.affiliateReferenceId(UUID.randomUUID().toString().substring(0, 28))
.hold(true)
Expand All @@ -80,8 +64,7 @@ public Response<ItineraryCreation> createBookingWithHold(RoomPriceCheck roomPric
.travelerHandlingInstructions("Please use the card provided for payment. Avoid cancellation as this is for a corporate traveler. Contact traveler if any issues.")
.build();

PostItineraryOperation operation = new PostItineraryOperation(createItineraryRequest, params);

PostItineraryOperation operation = new PostItineraryOperation(roomPriceCheck.getLinks().getBook());
return rapidClient.execute(operation);
}

Expand All @@ -96,21 +79,17 @@ public Response<Nothing> resumeBooking(ItineraryCreation itineraryCreation) {
.build();

return rapidClient.execute(new PutResumeBookingOperation(params));

// return rapidClient.execute(new PutResumeBookingOperation(itineraryCreation.getLinks().getResume()));
}

public Response<Itinerary> getReservationByItineraryId(ItineraryCreation itineraryCreation) {
return rapidClient.execute(new GetReservationByItineraryIdOperation(itineraryCreation.getLinks().getRetrieve()));
}

GetReservationByItineraryIdOperationParams params = GetReservationByItineraryIdOperationParams.builder()
.customerIp(Constants.CUSTOMER_IP)
.itineraryId(itineraryCreation.getItineraryId())
.customerSessionId("123455656565")
.test("standard")
.token(rapidClient.helpers.extractToken(itineraryCreation.getLinks().getRetrieve().getHref()))
.build();

GetReservationByItineraryIdOperation operation = new GetReservationByItineraryIdOperation(params);

return rapidClient.execute(operation);
public Response<Nothing> cancelHeldReservationByItiniaryId(ItineraryCreation itineraryCreation) {
// return rapidClient.execute(new DeleteHeldBookingOperation(itineraryCreation.getLinks().getCancel()));
return null;
}

/* Helper methods */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
import com.expediagroup.sdk.core.model.Response;
import com.expediagroup.sdk.rapid.examples.Constants;
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
import com.expediagroup.sdk.rapid.models.Link;
import com.expediagroup.sdk.rapid.models.Property;
import com.expediagroup.sdk.rapid.models.PropertyAvailability;
import com.expediagroup.sdk.rapid.models.RoomAvailability;
import com.expediagroup.sdk.rapid.models.RoomPriceCheck;
import com.expediagroup.sdk.rapid.operations.GetAdditionalAvailabilityOperation;
import com.expediagroup.sdk.rapid.operations.GetAvailabilityOperation;
import com.expediagroup.sdk.rapid.operations.GetAvailabilityOperationParams;
import com.expediagroup.sdk.rapid.operations.PriceCheckOperation;
import com.expediagroup.sdk.rapid.operations.PriceCheckOperationParams;

import java.math.BigDecimal;
import java.time.LocalDate;
Expand Down Expand Up @@ -62,18 +62,15 @@ public Response<List<Property>> getMultipleRoomsPropertiesAvailability(RapidPart

public Response<RoomPriceCheck> checkRoomPrices(PropertyAvailability propertyAvailability, int selectedRoomIndex, int selectedRateIndex) {

RoomAvailability roomAvailability = propertyAvailability.getRooms().get(selectedRoomIndex);

PriceCheckOperationParams params = PriceCheckOperationParams.builder()
.propertyId(propertyAvailability.getPropertyId())
.roomId(roomAvailability.getId())
.rateId(roomAvailability.getRates().get(selectedRateIndex).getId())
.token(rapidClient.helpers.extractToken(roomAvailability.getRates().get(selectedRateIndex).getBedGroups().entrySet()
.stream().findFirst().get().getValue().getLinks().getPriceCheck().getHref()))
.build();

PriceCheckOperation operation = new PriceCheckOperation(params);
Link priceCheckLink = propertyAvailability.getRooms().get(selectedRoomIndex).getRates()
.get(selectedRateIndex).getBedGroups().entrySet().stream().findFirst()
.get().getValue().getLinks().getPriceCheck();

PriceCheckOperation operation = new PriceCheckOperation(priceCheckLink);
return rapidClient.execute(operation);
}

public Response<List<PropertyAvailability>> getAdditionalAvailability(PropertyAvailability propertyAvailability) {
return rapidClient.execute(new GetAdditionalAvailabilityOperation(propertyAvailability.getLinks().getAdditionalRates()));
}
}

0 comments on commit 243e48e

Please sign in to comment.