private static void subscribe()

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));

    }