in lambda/src/main/java/cn/amazon/aws/rp/spapi/lambda/notification/EventSubscription.java [65:107]
private static void subscribe(SellerCredentials secretsVO) throws Throwable {
logger.info("going to subscribe for seller: " + secretsVO.getSeller_id());
final CreateDestinationRequest createDestinationRequest = new CreateDestinationRequest();
// Prepare parameters for create destination
createDestinationRequest.setName(secretsVO.getSeller_id());
final DestinationResourceSpecification spec = new DestinationResourceSpecification();
final SqsResource sqsRes = new SqsResource();
sqsRes.arn(SQS_ARN);
spec.setSqs(sqsRes);
createDestinationRequest.setResourceSpecification(spec);
// Prepare parameters for create subscription
final CreateSubscriptionRequest createSubscriptionRequest = new CreateSubscriptionRequest();
final String payloadVersion = "1.0"; // Specified by API
createSubscriptionRequest.setPayloadVersion(payloadVersion);
// prepare to invoke createDestination
final ApiProxy<CreateDestinationResponse> createDestinationApi =
new ApiProxy<>(new EventCreateDestination(NotificationsApi.buildNotificationGrantLessApi(secretsVO)));
final HashMap<String, Object> inputForCreateDestination = new HashMap<>();
inputForCreateDestination.put("createDestinationRequest", createDestinationRequest);
final ApiResponse<CreateDestinationResponse> destinationResponse;
destinationResponse = createDestinationApi.invkWithToken(inputForCreateDestination, secretsVO.getSeller_id());
logger.info("sqs destination is created. - " + gson.toJson(destinationResponse));
// prepare to invoke subscription
final String destinationId = destinationResponse.getData().getPayload().getDestinationId();
final HashMap<String, Object> subscriptionRequest = new HashMap<>();
createSubscriptionRequest.setDestinationId(destinationId);
subscriptionRequest.put("createSubscriptionRequest", createSubscriptionRequest);
subscriptionRequest.put("notificationType", "ANY_OFFER_CHANGED");
// If you want to subscribe more event type you need to request subscription one by one.
final ApiProxy<CreateSubscriptionResponse> createSubscriptionResponseApiProxy =
new ApiProxy<>(new EventCreateSubscription(NotificationsApi.buildNotificationApi(secretsVO)));
final ApiResponse<CreateSubscriptionResponse> subscriptionResponse =
createSubscriptionResponseApiProxy.invkWithToken(subscriptionRequest, secretsVO.getSeller_id());
logger.info("subscription response is: " + gson.toJson(subscriptionResponse));
}