Skip to content

Commit 5bca284

Browse files
committed
add an example on ad delivery operation
1 parent e4fa1b5 commit 5bca284

File tree

3 files changed

+134
-0
lines changed

3 files changed

+134
-0
lines changed

examples/src/main/java/com/expediagroup/sdk/rapid/examples/RapidSdkDemoApplication.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.expediagroup.sdk.rapid.examples;
22

33
import com.expediagroup.sdk.rapid.examples.salesprofiles.DefaultRapidPartnerProfile;
4+
import com.expediagroup.sdk.rapid.examples.scenarios.addelivery.GetSponsoredContentScenario;
45
import com.expediagroup.sdk.rapid.examples.scenarios.booking.AsyncSingleRoomBookScenario;
56
import com.expediagroup.sdk.rapid.examples.scenarios.booking.MultiRoomHoldAndResumeBookScenario;
67
import com.expediagroup.sdk.rapid.examples.scenarios.booking.SingleRoomBookScenario;
@@ -236,6 +237,20 @@ public static void main(String[] args) throws ExecutionException, InterruptedExc
236237

237238
logger.info("=============================== End of Geography Scenarios ===========================");
238239

240+
logger.info("============================ Running Ad Delivery Scenarios =============================");
241+
242+
/* Run Get Sponsored Content Scenario using the default profile
243+
This scenario demonstrates the following:
244+
1. Shopping for properties
245+
2. Getting property availability for test property
246+
3. Getting sponsored content for the property
247+
*/
248+
GetSponsoredContentScenario getSponsoredContentScenario = new GetSponsoredContentScenario();
249+
getSponsoredContentScenario.setProfile(new DefaultRapidPartnerProfile());
250+
getSponsoredContentScenario.run();
251+
252+
logger.info("=========================== End of Ad Delivery Scenarios ============================");
253+
239254

240255
logger.info("=======================================================================================");
241256
logger.info("=======================================================================================");
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.expediagroup.sdk.rapid.examples.scenarios.addelivery;
2+
3+
import com.expediagroup.sdk.rapid.examples.Constants;
4+
import com.expediagroup.sdk.rapid.examples.salesprofiles.RapidPartnerSalesProfile;
5+
import com.expediagroup.sdk.rapid.examples.scenarios.RapidScenario;
6+
import com.expediagroup.sdk.rapid.examples.services.ShopService;
7+
import com.expediagroup.sdk.rapid.examples.services.SponsoredContentService;
8+
import com.expediagroup.sdk.rapid.models.Property;
9+
import com.expediagroup.sdk.rapid.models.SponsoredContentResponse;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
12+
13+
import java.util.ArrayList;
14+
import java.util.Arrays;
15+
import java.util.List;
16+
17+
public class GetSponsoredContentScenario implements RapidScenario {
18+
19+
private static final Logger logger = LoggerFactory.getLogger(GetSponsoredContentScenario.class);
20+
private SponsoredContentService sponsoredContentService = new SponsoredContentService();
21+
private ShopService shopService = new ShopService();
22+
private RapidPartnerSalesProfile rapidPartnerSalesProfile;
23+
24+
@Override
25+
public void setProfile(RapidPartnerSalesProfile rapidPartnerSalesProfile) {
26+
this.rapidPartnerSalesProfile = rapidPartnerSalesProfile;
27+
}
28+
29+
@Override
30+
public void run() {
31+
32+
logger.info("Running Get Lodging Sponsored Content...");
33+
34+
// Shopping for properties
35+
logger.info("Getting property availability for test property: {}", Constants.TEST_PROPERTY_ID);
36+
37+
List<Property> propertyAvailabilityList = shopService.getPropertiesAvailability(Arrays.asList("2"), this.rapidPartnerSalesProfile).getData();
38+
39+
if (propertyAvailabilityList == null || propertyAvailabilityList.isEmpty()) {
40+
throw new IllegalStateException("No property availability found for the test property.");
41+
}
42+
43+
// Get the property ids from response
44+
ArrayList<String> propertyIds = new ArrayList<>();
45+
propertyAvailabilityList.forEach(property -> propertyIds.add(property.getPropertyId()));
46+
47+
// call Ad Delivery API
48+
logger.info("Calling PostAdDeliveryOperation for property ids:");
49+
propertyIds.forEach(propertyId -> logger.info("Property Id: [{}]", propertyId));
50+
51+
SponsoredContentResponse sponsoredContentResponse = sponsoredContentService.getSponsoredContent(propertyIds).getData();
52+
logger.info("Sponsored content response, number of listings: {}", sponsoredContentResponse.getSponsoredListings().size());
53+
}
54+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.expediagroup.sdk.rapid.examples.services;
2+
3+
import com.expediagroup.sdk.core.model.Response;
4+
import com.expediagroup.sdk.rapid.examples.Constants;
5+
import com.expediagroup.sdk.rapid.models.Coordinates1;
6+
import com.expediagroup.sdk.rapid.models.GuestCounts;
7+
import com.expediagroup.sdk.rapid.models.LineOfBusiness;
8+
import com.expediagroup.sdk.rapid.models.PageType;
9+
import com.expediagroup.sdk.rapid.models.RequestCriteria;
10+
import com.expediagroup.sdk.rapid.models.SalesChannel;
11+
import com.expediagroup.sdk.rapid.models.SearchCriteria;
12+
import com.expediagroup.sdk.rapid.models.SponsoredContentRequest;
13+
import com.expediagroup.sdk.rapid.models.SponsoredContentResponse;
14+
import com.expediagroup.sdk.rapid.operations.PostAdDeliveryOperation;
15+
import com.expediagroup.sdk.rapid.operations.PostAdDeliveryOperationParams;
16+
17+
import java.math.BigDecimal;
18+
import java.time.LocalDate;
19+
import java.util.Arrays;
20+
import java.util.List;
21+
import java.util.UUID;
22+
23+
public class SponsoredContentService extends RapidService {
24+
25+
public Response<SponsoredContentResponse> getSponsoredContent(List<String> propertyIds) {
26+
PostAdDeliveryOperationParams postAdDeliveryOperationParams = getPostAdDeliveryOperationParams();
27+
28+
SponsoredContentRequest sponsoredContentRequest = SponsoredContentRequest.builder()
29+
.searchCriteria(
30+
SearchCriteria.builder()
31+
.checkin(LocalDate.now().plusDays(20).toString())
32+
.checkout(LocalDate.now().plusDays(23).toString())
33+
.occupancy(Arrays.asList(GuestCounts.builder().adultCount(2).childCount(0).build()))
34+
.searchLinesOfBusiness(Arrays.asList(LineOfBusiness.LODGING))
35+
.properties(propertyIds)
36+
.pageType(PageType.SEARCH_RESULTS)
37+
.build()
38+
).requestCriteria(
39+
RequestCriteria.builder()
40+
.salesChannel(SalesChannel.WEBSITE)
41+
.countryCode("US")
42+
.experimentIds(Arrays.asList("1234"))
43+
.language("en-US")
44+
.travelerLocation(Coordinates1.builder()
45+
.latitude(BigDecimal.valueOf(37.7749))
46+
.longitude(BigDecimal.valueOf(-122.4194))
47+
.build())
48+
.build())
49+
.build();
50+
PostAdDeliveryOperation postAdDeliveryOperation =
51+
new PostAdDeliveryOperation(postAdDeliveryOperationParams, sponsoredContentRequest);
52+
53+
return rapidClient.execute(postAdDeliveryOperation);
54+
}
55+
56+
private PostAdDeliveryOperationParams getPostAdDeliveryOperationParams() {
57+
PostAdDeliveryOperationParams postAdDeliveryOperationParams = PostAdDeliveryOperationParams
58+
.builder()
59+
.traceId(UUID.randomUUID())
60+
.customerIp(Constants.CUSTOMER_IP)
61+
.customerSessionId(Constants.CUSTOMER_SESSION_ID)
62+
.build();
63+
return postAdDeliveryOperationParams;
64+
}
65+
}

0 commit comments

Comments
 (0)