/* * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.services.sns; import org.w3c.dom.*; import java.util.*; import com.amazonaws.*; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.metrics.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.services.sns.model.*; import com.amazonaws.services.sns.model.transform.*; /** * Client for accessing Amazon Simple Notification Service. All service calls * made using this client are blocking, and will not return until the service * call completes. * <p> * <fullname>Amazon Simple Notification Service</fullname> * <p> * Amazon Simple Notification Service (Amazon SNS) is a web service that enables * you to build distributed web-enabled applications. Applications can use * Amazon SNS to easily push real-time notification messages to interested * subscribers over multiple delivery protocols. For more information about this * product see <a * href="http://aws.amazon.com/sns/">http://aws.amazon.com/sns</a>. For detailed * information about Amazon SNS features and their associated API calls, see the * <a href="http://docs.aws.amazon.com/sns/latest/dg/">Amazon SNS Developer * Guide</a>. * </p> * <p> * We also provide SDKs that enable you to access Amazon SNS from your preferred * programming language. The SDKs contain functionality that automatically takes * care of tasks such as: cryptographically signing your service requests, * retrying requests, and handling error responses. For a list of available * SDKs, go to <a href="http://aws.amazon.com/tools/">Tools for Amazon Web * Services</a>. * </p> */ public class AmazonSNSClient extends AmazonWebServiceClient implements AmazonSNS { /** Provider for AWS credentials. */ private AWSCredentialsProvider awsCredentialsProvider; /** * List of exception unmarshallers for all Amazon Simple Notification * Service exceptions. */ protected final List<Unmarshaller<AmazonServiceException, Node>> exceptionUnmarshallers = new ArrayList<Unmarshaller<AmazonServiceException, Node>>(); /** * Constructs a new client to invoke service methods on AmazonSNS. A * credentials provider chain will be used that searches for credentials in * this order: * <ul> * <li>Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY</li> * <li>Java System Properties - aws.accessKeyId and aws.secretKey</li> * <li>Instance profile credentials delivered through the Amazon EC2 * metadata service</li> * </ul> * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ @Deprecated public AmazonSNSClient() { this(new DefaultAWSCredentialsProviderChain(), new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on AmazonSNS. A * credentials provider chain will be used that searches for credentials in * this order: * <ul> * <li>Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY</li> * <li>Java System Properties - aws.accessKeyId and aws.secretKey</li> * <li>Instance profile credentials delivered through the Amazon EC2 * metadata service</li> * </ul> * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). * @see DefaultAWSCredentialsProviderChain */ @Deprecated public AmazonSNSClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials. * <p> * If AWS session credentials are passed in, then those credentials will be * used to authenticate requests. Otherwise, if AWS long-term credentials * are passed in, then session management will be handled automatically by * the SDK. Callers are encouraged to use long-term credentials and let the * SDK handle starting and renewing sessions. * <p> * Automatically managed sessions will be shared among all clients that use * the same credentials and service endpoint. To opt out of this behavior, * explicitly provide an instance of {@link AWSCredentialsProvider} that * returns {@link AWSSessionCredentials}. * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. */ public AmazonSNSClient(AWSCredentials awsCredentials) { this(awsCredentials, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials and client configuration options. * <p> * If AWS session credentials are passed in, then those credentials will be * used to authenticate requests. Otherwise, if AWS long-term credentials * are passed in, then session management will be handled automatically by * the SDK. Callers are encouraged to use long-term credentials and let the * SDK handle starting and renewing sessions. * <p> * Automatically managed sessions will be shared among all clients that use * the same credentials and service endpoint. To opt out of this behavior, * explicitly provide an instance of {@link AWSCredentialsProvider} that * returns {@link AWSSessionCredentials}. * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). */ public AmazonSNSClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { this(new StaticCredentialsProvider(awsCredentials), clientConfiguration); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider. * <p> * If AWS session credentials are passed in, then those credentials will be * used to authenticate requests. Otherwise, if AWS long-term credentials * are passed in, then session management will be handled automatically by * the SDK. Callers are encouraged to use long-term credentials and let the * SDK handle starting and renewing sessions. * <p> * Automatically managed sessions will be shared among all clients that use * the same credentials and service endpoint. To opt out of this behavior, * explicitly provide an instance of {@link AWSCredentialsProvider} that * returns {@link AWSSessionCredentials}. * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider and client configuration * options. * <p> * If AWS session credentials are passed in, then those credentials will be * used to authenticate requests. Otherwise, if AWS long-term credentials * are passed in, then session management will be handled automatically by * the SDK. Callers are encouraged to use long-term credentials and let the * SDK handle starting and renewing sessions. * <p> * Automatically managed sessions will be shared among all clients that use * the same credentials and service endpoint. To opt out of this behavior, * explicitly provide an instance of {@link AWSCredentialsProvider} that * returns {@link AWSSessionCredentials}. * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, new UrlHttpClient(clientConfiguration)); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider, client configuration options * and request metric collector. * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). * @param requestMetricCollector optional request metric collector */ @Deprecated public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(adjustClientConfiguration(clientConfiguration), requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider, client configuration options * and request metric collector. * <p> * All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). * @param httpClient A http client */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, HttpClient httpClient) { super(adjustClientConfiguration(clientConfiguration), httpClient); this.awsCredentialsProvider = awsCredentialsProvider; init(); } private void init() { exceptionUnmarshallers.add(new AuthorizationErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new EndpointDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new InternalErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterValueExceptionUnmarshaller()); exceptionUnmarshallers.add(new NotFoundExceptionUnmarshaller()); exceptionUnmarshallers.add(new PlatformApplicationDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new SubscriptionLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new ThrottledExceptionUnmarshaller()); exceptionUnmarshallers.add(new TopicLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new StandardErrorUnmarshaller()); // calling this.setEndPoint(...) will also modify the signer accordingly this.setEndpoint("sns.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/sns/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/sns/request.handler2s")); } private static ClientConfiguration adjustClientConfiguration(ClientConfiguration orig) { ClientConfiguration config = orig; return config; } /** * <p> * Adds a statement to a topic's access control policy, granting access for * the specified AWS accounts to the specified actions. * </p> * * @param addPermissionRequest * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void addPermission(AddPermissionRequest addPermissionRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(addPermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<AddPermissionRequest> request = null; Response<Void> response = null; try { request = new AddPermissionRequestMarshaller().marshall(addPermissionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Accepts a phone number and indicates whether the phone holder has opted * out of receiving SMS messages from your account. You cannot send SMS * messages to a number that is opted out. * </p> * <p> * To resume sending messages, you can opt in the number by using the * <code>OptInPhoneNumber</code> action. * </p> * * @param checkIfPhoneNumberIsOptedOutRequest <p> * The input for the <code>CheckIfPhoneNumberIsOptedOut</code> * action. * </p> * @return checkIfPhoneNumberIsOptedOutResult The response from the * CheckIfPhoneNumberIsOptedOut service method, as returned by * Amazon Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CheckIfPhoneNumberIsOptedOutResult checkIfPhoneNumberIsOptedOut( CheckIfPhoneNumberIsOptedOutRequest checkIfPhoneNumberIsOptedOutRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(checkIfPhoneNumberIsOptedOutRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CheckIfPhoneNumberIsOptedOutRequest> request = null; Response<CheckIfPhoneNumberIsOptedOutResult> response = null; try { request = new CheckIfPhoneNumberIsOptedOutRequestMarshaller() .marshall(checkIfPhoneNumberIsOptedOutRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CheckIfPhoneNumberIsOptedOutResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Verifies an endpoint owner's intent to receive messages by validating the * token sent to the endpoint by an earlier <code>Subscribe</code> action. * If the token is valid, the action creates a new subscription and returns * its Amazon Resource Name (ARN). This call requires an AWS signature only * when the <code>AuthenticateOnUnsubscribe</code> flag is set to "true". * </p> * * @param confirmSubscriptionRequest <p> * Input for ConfirmSubscription action. * </p> * @return confirmSubscriptionResult The response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription( ConfirmSubscriptionRequest confirmSubscriptionRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(confirmSubscriptionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ConfirmSubscriptionRequest> request = null; Response<ConfirmSubscriptionResult> response = null; try { request = new ConfirmSubscriptionRequestMarshaller() .marshall(confirmSubscriptionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ConfirmSubscriptionResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a platform application object for one of the supported push * notification services, such as APNS and GCM, to which devices and mobile * apps may register. You must specify PlatformPrincipal and * PlatformCredential attributes when using the * <code>CreatePlatformApplication</code> action. The PlatformPrincipal is * received from the notification service. For APNS/APNS_SANDBOX, * PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not * applicable. For ADM, PlatformPrincipal is "client id". The * PlatformCredential is also received from the notification service. For * WNS, PlatformPrincipal is "Package Security Identifier". For MPNS, * PlatformPrincipal is "TLS certificate". For Baidu, PlatformPrincipal is * "API key". * </p> * <p> * For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, * PlatformCredential is "API key". For ADM, PlatformCredential is * "client secret". For WNS, PlatformCredential is "secret key". For MPNS, * PlatformCredential is "private key". For Baidu, PlatformCredential is * "secret key". The PlatformApplicationArn that is returned when using * <code>CreatePlatformApplication</code> is then used as an attribute for * the <code>CreatePlatformEndpoint</code> action. For more information, see * <a href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html"> * Using Amazon SNS Mobile Push Notifications</a>. For more information * about obtaining the PlatformPrincipal and PlatformCredential for each of * the supported push notification services, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html" * >Getting Started with Apple Push Notification Service</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-adm.html" * >Getting Started with Amazon Device Messaging</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-baidu.html" * >Getting Started with Baidu Cloud Push</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-gcm.html" * >Getting Started with Google Cloud Messaging for Android</a>, <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-mpns.html" * >Getting Started with MPNS</a>, or <a * href="http://docs.aws.amazon.com/sns/latest/dg/mobile-push-wns.html" * >Getting Started with WNS</a>. * </p> * * @param createPlatformApplicationRequest <p> * Input for CreatePlatformApplication action. * </p> * @return createPlatformApplicationResult The response from the * CreatePlatformApplication service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreatePlatformApplicationResult createPlatformApplication( CreatePlatformApplicationRequest createPlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createPlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreatePlatformApplicationRequest> request = null; Response<CreatePlatformApplicationResult> response = null; try { request = new CreatePlatformApplicationRequestMarshaller() .marshall(createPlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreatePlatformApplicationResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates an endpoint for a device and mobile app on one of the supported * push notification services, such as GCM and APNS. * <code>CreatePlatformEndpoint</code> requires the PlatformApplicationArn * that is returned from <code>CreatePlatformApplication</code>. The * EndpointArn that is returned when using * <code>CreatePlatformEndpoint</code> can then be used by the * <code>Publish</code> action to send a message to a mobile app or by the * <code>Subscribe</code> action for subscription to a topic. The * <code>CreatePlatformEndpoint</code> action is idempotent, so if the * requester already owns an endpoint with the same device token and * attributes, that endpoint's ARN is returned without creating a new * endpoint. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * <p> * When using <code>CreatePlatformEndpoint</code> with Baidu, two attributes * must be provided: ChannelId and UserId. The token field must also contain * the ChannelId. For more information, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePushBaiduEndpoint.html" * >Creating an Amazon SNS Endpoint for Baidu</a>. * </p> * * @param createPlatformEndpointRequest <p> * Input for CreatePlatformEndpoint action. * </p> * @return createPlatformEndpointResult The response from the * CreatePlatformEndpoint service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreatePlatformEndpointResult createPlatformEndpoint( CreatePlatformEndpointRequest createPlatformEndpointRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createPlatformEndpointRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreatePlatformEndpointRequest> request = null; Response<CreatePlatformEndpointResult> response = null; try { request = new CreatePlatformEndpointRequestMarshaller() .marshall(createPlatformEndpointRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreatePlatformEndpointResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a topic to which notifications can be published. Users can create * at most 100,000 topics. For more information, see <a * href="http://aws.amazon.com/sns/">http://aws.amazon.com/sns</a>. This * action is idempotent, so if the requester already owns a topic with the * specified name, that topic's ARN is returned without creating a new * topic. * </p> * * @param createTopicRequest <p> * Input for CreateTopic action. * </p> * @return createTopicResult The response from the CreateTopic service * method, as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws TopicLimitExceededException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreateTopicResult createTopic(CreateTopicRequest createTopicRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateTopicRequest> request = null; Response<CreateTopicResult> response = null; try { request = new CreateTopicRequestMarshaller().marshall(createTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreateTopicResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes the endpoint for a device and mobile app from Amazon SNS. This * action is idempotent. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * <p> * When you delete an endpoint that is also subscribed to a topic, then you * must also unsubscribe the endpoint from the topic. * </p> * * @param deleteEndpointRequest <p> * Input for DeleteEndpoint action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deleteEndpoint(DeleteEndpointRequest deleteEndpointRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteEndpointRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteEndpointRequest> request = null; Response<Void> response = null; try { request = new DeleteEndpointRequestMarshaller().marshall(deleteEndpointRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes a platform application object for one of the supported push * notification services, such as APNS and GCM. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param deletePlatformApplicationRequest <p> * Input for DeletePlatformApplication action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deletePlatformApplication( DeletePlatformApplicationRequest deletePlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deletePlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeletePlatformApplicationRequest> request = null; Response<Void> response = null; try { request = new DeletePlatformApplicationRequestMarshaller() .marshall(deletePlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes a topic and all its subscriptions. Deleting a topic might prevent * some messages previously sent to the topic from being delivered to * subscribers. This action is idempotent, so deleting a topic that does not * exist does not result in an error. * </p> * * @param deleteTopicRequest * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deleteTopic(DeleteTopicRequest deleteTopicRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteTopicRequest> request = null; Response<Void> response = null; try { request = new DeleteTopicRequestMarshaller().marshall(deleteTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Retrieves the endpoint attributes for a device on one of the supported * push notification services, such as GCM and APNS. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param getEndpointAttributesRequest <p> * Input for GetEndpointAttributes action. * </p> * @return getEndpointAttributesResult The response from the * GetEndpointAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetEndpointAttributesResult getEndpointAttributes( GetEndpointAttributesRequest getEndpointAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getEndpointAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetEndpointAttributesRequest> request = null; Response<GetEndpointAttributesResult> response = null; try { request = new GetEndpointAttributesRequestMarshaller() .marshall(getEndpointAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetEndpointAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Retrieves the attributes of the platform application object for the * supported push notification services, such as APNS and GCM. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param getPlatformApplicationAttributesRequest <p> * Input for GetPlatformApplicationAttributes action. * </p> * @return getPlatformApplicationAttributesResult The response from the * GetPlatformApplicationAttributes service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetPlatformApplicationAttributesResult getPlatformApplicationAttributes( GetPlatformApplicationAttributesRequest getPlatformApplicationAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getPlatformApplicationAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetPlatformApplicationAttributesRequest> request = null; Response<GetPlatformApplicationAttributesResult> response = null; try { request = new GetPlatformApplicationAttributesRequestMarshaller() .marshall(getPlatformApplicationAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetPlatformApplicationAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns the settings for sending SMS messages from your account. * </p> * <p> * These settings are set with the <code>SetSMSAttributes</code> action. * </p> * * @param getSMSAttributesRequest <p> * The input for the <code>GetSMSAttributes</code> request. * </p> * @return getSMSAttributesResult The response from the GetSMSAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSMSAttributesResult getSMSAttributes(GetSMSAttributesRequest getSMSAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getSMSAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetSMSAttributesRequest> request = null; Response<GetSMSAttributesResult> response = null; try { request = new GetSMSAttributesRequestMarshaller().marshall(getSMSAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetSMSAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns all of the properties of a subscription. * </p> * * @param getSubscriptionAttributesRequest <p> * Input for GetSubscriptionAttributes. * </p> * @return getSubscriptionAttributesResult The response from the * GetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSubscriptionAttributesResult getSubscriptionAttributes( GetSubscriptionAttributesRequest getSubscriptionAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getSubscriptionAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetSubscriptionAttributesRequest> request = null; Response<GetSubscriptionAttributesResult> response = null; try { request = new GetSubscriptionAttributesRequestMarshaller() .marshall(getSubscriptionAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetSubscriptionAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns all of the properties of a topic. Topic properties returned might * differ based on the authorization of the user. * </p> * * @param getTopicAttributesRequest <p> * Input for GetTopicAttributes action. * </p> * @return getTopicAttributesResult The response from the GetTopicAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetTopicAttributesResult getTopicAttributes( GetTopicAttributesRequest getTopicAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getTopicAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetTopicAttributesRequest> request = null; Response<GetTopicAttributesResult> response = null; try { request = new GetTopicAttributesRequestMarshaller().marshall(getTopicAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetTopicAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Lists the endpoints and endpoint attributes for devices in a supported * push notification service, such as GCM and APNS. The results for * <code>ListEndpointsByPlatformApplication</code> are paginated and return * a limited list of endpoints, up to 100. If additional records are * available after the first page results, then a NextToken string will be * returned. To receive the next page, you call * <code>ListEndpointsByPlatformApplication</code> again using the NextToken * string received from the previous call. When there are no more records to * return, NextToken will be null. For more information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param listEndpointsByPlatformApplicationRequest <p> * Input for ListEndpointsByPlatformApplication action. * </p> * @return listEndpointsByPlatformApplicationResult The response from the * ListEndpointsByPlatformApplication service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListEndpointsByPlatformApplicationResult listEndpointsByPlatformApplication( ListEndpointsByPlatformApplicationRequest listEndpointsByPlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listEndpointsByPlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListEndpointsByPlatformApplicationRequest> request = null; Response<ListEndpointsByPlatformApplicationResult> response = null; try { request = new ListEndpointsByPlatformApplicationRequestMarshaller() .marshall(listEndpointsByPlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListEndpointsByPlatformApplicationResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of phone numbers that are opted out, meaning you cannot * send SMS messages to them. * </p> * <p> * The results for <code>ListPhoneNumbersOptedOut</code> are paginated, and * each page returns up to 100 phone numbers. If additional phone numbers * are available after the first page of results, then a * <code>NextToken</code> string will be returned. To receive the next page, * you call <code>ListPhoneNumbersOptedOut</code> again using the * <code>NextToken</code> string received from the previous call. When there * are no more records to return, <code>NextToken</code> will be null. * </p> * * @param listPhoneNumbersOptedOutRequest <p> * The input for the <code>ListPhoneNumbersOptedOut</code> * action. * </p> * @return listPhoneNumbersOptedOutResult The response from the * ListPhoneNumbersOptedOut service method, as returned by Amazon * Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListPhoneNumbersOptedOutResult listPhoneNumbersOptedOut( ListPhoneNumbersOptedOutRequest listPhoneNumbersOptedOutRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listPhoneNumbersOptedOutRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListPhoneNumbersOptedOutRequest> request = null; Response<ListPhoneNumbersOptedOutResult> response = null; try { request = new ListPhoneNumbersOptedOutRequestMarshaller() .marshall(listPhoneNumbersOptedOutRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListPhoneNumbersOptedOutResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Lists the platform application objects for the supported push * notification services, such as APNS and GCM. The results for * <code>ListPlatformApplications</code> are paginated and return a limited * list of applications, up to 100. If additional records are available * after the first page results, then a NextToken string will be returned. * To receive the next page, you call <code>ListPlatformApplications</code> * using the NextToken string received from the previous call. When there * are no more records to return, NextToken will be null. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param listPlatformApplicationsRequest <p> * Input for ListPlatformApplications action. * </p> * @return listPlatformApplicationsResult The response from the * ListPlatformApplications service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListPlatformApplicationsResult listPlatformApplications( ListPlatformApplicationsRequest listPlatformApplicationsRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listPlatformApplicationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListPlatformApplicationsRequest> request = null; Response<ListPlatformApplicationsResult> response = null; try { request = new ListPlatformApplicationsRequestMarshaller() .marshall(listPlatformApplicationsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListPlatformApplicationsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of the requester's subscriptions. Each call returns a * limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new <code>ListSubscriptions</code> * call to get further results. * </p> * * @param listSubscriptionsRequest <p> * Input for ListSubscriptions action. * </p> * @return listSubscriptionsResult The response from the ListSubscriptions * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions( ListSubscriptionsRequest listSubscriptionsRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listSubscriptionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListSubscriptionsRequest> request = null; Response<ListSubscriptionsResult> response = null; try { request = new ListSubscriptionsRequestMarshaller().marshall(listSubscriptionsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListSubscriptionsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of the subscriptions to a specific topic. Each call * returns a limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new * <code>ListSubscriptionsByTopic</code> call to get further results. * </p> * * @param listSubscriptionsByTopicRequest <p> * Input for ListSubscriptionsByTopic action. * </p> * @return listSubscriptionsByTopicResult The response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic( ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listSubscriptionsByTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListSubscriptionsByTopicRequest> request = null; Response<ListSubscriptionsByTopicResult> response = null; try { request = new ListSubscriptionsByTopicRequestMarshaller() .marshall(listSubscriptionsByTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListSubscriptionsByTopicResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Returns a list of the requester's topics. Each call returns a limited * list of topics, up to 100. If there are more topics, a * <code>NextToken</code> is also returned. Use the <code>NextToken</code> * parameter in a new <code>ListTopics</code> call to get further results. * </p> * * @param listTopicsRequest * @return listTopicsResult The response from the ListTopics service method, * as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTopicsResult listTopics(ListTopicsRequest listTopicsRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listTopicsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListTopicsRequest> request = null; Response<ListTopicsResult> response = null; try { request = new ListTopicsRequestMarshaller().marshall(listTopicsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListTopicsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Use this request to opt in a phone number that is opted out, which * enables you to resume sending SMS messages to the number. * </p> * <p> * You can opt in a phone number only once every 30 days. * </p> * * @param optInPhoneNumberRequest <p> * Input for the OptInPhoneNumber action. * </p> * @return optInPhoneNumberResult The response from the OptInPhoneNumber * service method, as returned by Amazon Simple Notification * Service. * @throws ThrottledException * @throws InternalErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public OptInPhoneNumberResult optInPhoneNumber(OptInPhoneNumberRequest optInPhoneNumberRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(optInPhoneNumberRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<OptInPhoneNumberRequest> request = null; Response<OptInPhoneNumberResult> response = null; try { request = new OptInPhoneNumberRequestMarshaller().marshall(optInPhoneNumberRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new OptInPhoneNumberResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Sends a message to all of a topic's subscribed endpoints. When a * <code>messageId</code> is returned, the message has been saved and Amazon * SNS will attempt to deliver it to the topic's subscribers shortly. The * format of the outgoing message to each subscribed endpoint depends on the * notification protocol. * </p> * <p> * To use the <code>Publish</code> action for sending a message to a mobile * endpoint, such as an app on a Kindle device or mobile phone, you must * specify the EndpointArn for the TargetArn parameter. The EndpointArn is * returned when making a call with the <code>CreatePlatformEndpoint</code> * action. The second example below shows a request and response for * publishing to a mobile endpoint. * </p> * <p> * For more information about formatting messages, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html" * >Send Custom Platform-Specific Payloads in Messages to Mobile * Devices</a>. * </p> * * @param publishRequest <p> * Input for Publish action. * </p> * @return publishResult The response from the Publish service method, as * returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishResult publish(PublishRequest publishRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(publishRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<PublishRequest> request = null; Response<PublishResult> response = null; try { request = new PublishRequestMarshaller().marshall(publishRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new PublishResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Removes a statement from a topic's access control policy. * </p> * * @param removePermissionRequest <p> * Input for RemovePermission action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void removePermission(RemovePermissionRequest removePermissionRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(removePermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<RemovePermissionRequest> request = null; Response<Void> response = null; try { request = new RemovePermissionRequestMarshaller().marshall(removePermissionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Sets the attributes for an endpoint for a device on one of the supported * push notification services, such as GCM and APNS. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @param setEndpointAttributesRequest <p> * Input for SetEndpointAttributes action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setEndpointAttributes(SetEndpointAttributesRequest setEndpointAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setEndpointAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<SetEndpointAttributesRequest> request = null; Response<Void> response = null; try { request = new SetEndpointAttributesRequestMarshaller() .marshall(setEndpointAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Sets the attributes of the platform application object for the supported * push notification services, such as APNS and GCM. For more information, * see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. For information on configuring * attributes for message delivery status, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/sns-msg-status.html">Using * Amazon SNS Application Attributes for Message Delivery Status</a>. * </p> * * @param setPlatformApplicationAttributesRequest <p> * Input for SetPlatformApplicationAttributes action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setPlatformApplicationAttributes( SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setPlatformApplicationAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<SetPlatformApplicationAttributesRequest> request = null; Response<Void> response = null; try { request = new SetPlatformApplicationAttributesRequestMarshaller() .marshall(setPlatformApplicationAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Use this request to set the default settings for sending SMS messages and * receiving daily SMS usage reports. * </p> * <p> * You can override some of these settings for a single message when you use * the <code>Publish</code> action with the * <code>MessageAttributes.entry.N</code> parameter. For more information, * see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html" * >Sending an SMS Message</a> in the <i>Amazon SNS Developer Guide</i>. * </p> * * @param setSMSAttributesRequest <p> * The input for the SetSMSAttributes action. * </p> * @return setSMSAttributesResult The response from the SetSMSAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws ThrottledException * @throws InternalErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public SetSMSAttributesResult setSMSAttributes(SetSMSAttributesRequest setSMSAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setSMSAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<SetSMSAttributesRequest> request = null; Response<SetSMSAttributesResult> response = null; try { request = new SetSMSAttributesRequestMarshaller().marshall(setSMSAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new SetSMSAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Allows a subscription owner to set an attribute of the topic to a new * value. * </p> * * @param setSubscriptionAttributesRequest <p> * Input for SetSubscriptionAttributes action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setSubscriptionAttributes( SetSubscriptionAttributesRequest setSubscriptionAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setSubscriptionAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<SetSubscriptionAttributesRequest> request = null; Response<Void> response = null; try { request = new SetSubscriptionAttributesRequestMarshaller() .marshall(setSubscriptionAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Allows a topic owner to set an attribute of the topic to a new value. * </p> * * @param setTopicAttributesRequest <p> * Input for SetTopicAttributes action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setTopicAttributes(SetTopicAttributesRequest setTopicAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setTopicAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<SetTopicAttributesRequest> request = null; Response<Void> response = null; try { request = new SetTopicAttributesRequestMarshaller().marshall(setTopicAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Prepares to subscribe an endpoint by sending the endpoint a confirmation * message. To actually create a subscription, the endpoint owner must call * the <code>ConfirmSubscription</code> action with the token from the * confirmation message. Confirmation tokens are valid for three days. * </p> * * @param subscribeRequest <p> * Input for Subscribe action. * </p> * @return subscribeResult The response from the Subscribe service method, * as returned by Amazon Simple Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public SubscribeResult subscribe(SubscribeRequest subscribeRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(subscribeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<SubscribeRequest> request = null; Response<SubscribeResult> response = null; try { request = new SubscribeRequestMarshaller().marshall(subscribeRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new SubscribeResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Deletes a subscription. If the subscription requires authentication for * deletion, only the owner of the subscription or the topic's owner can * unsubscribe, and an AWS signature is required. If the * <code>Unsubscribe</code> call does not require authentication and the * requester is not the subscription owner, a final cancellation message is * delivered to the endpoint, so that the endpoint owner can easily * resubscribe to the topic if the <code>Unsubscribe</code> request was * unintended. * </p> * * @param unsubscribeRequest <p> * Input for Unsubscribe action. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void unsubscribe(UnsubscribeRequest unsubscribeRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(unsubscribeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<UnsubscribeRequest> request = null; Response<Void> response = null; try { request = new UnsubscribeRequestMarshaller().marshall(unsubscribeRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Allows a subscription owner to set an attribute of the topic to a new * value. * </p> * * @param subscriptionArn <p> * The ARN of the subscription to modify. * </p> * @param attributeName <p> * The name of the attribute you want to set. Only a subset of * the subscriptions attributes are mutable. * </p> * <p> * Valid values: <code>DeliveryPolicy</code> | * <code>RawMessageDelivery</code> * </p> * @param attributeValue <p> * The new value for the attribute in JSON format. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setSubscriptionAttributes(String subscriptionArn, String attributeName, String attributeValue) throws AmazonServiceException, AmazonClientException { SetSubscriptionAttributesRequest setSubscriptionAttributesRequest = new SetSubscriptionAttributesRequest(); setSubscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); setSubscriptionAttributesRequest.setAttributeName(attributeName); setSubscriptionAttributesRequest.setAttributeValue(attributeValue); setSubscriptionAttributes(setSubscriptionAttributesRequest); } /** * <p> * Returns all of the properties of a subscription. * </p> * * @param subscriptionArn <p> * The ARN of the subscription whose properties you want to get. * </p> * @return getSubscriptionAttributesResult The response from the * GetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSubscriptionAttributesResult getSubscriptionAttributes(String subscriptionArn) throws AmazonServiceException, AmazonClientException { GetSubscriptionAttributesRequest getSubscriptionAttributesRequest = new GetSubscriptionAttributesRequest(); getSubscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); return getSubscriptionAttributes(getSubscriptionAttributesRequest); } /** * <p> * Prepares to subscribe an endpoint by sending the endpoint a confirmation * message. To actually create a subscription, the endpoint owner must call * the <code>ConfirmSubscription</code> action with the token from the * confirmation message. Confirmation tokens are valid for three days. * </p> * * @param topicArn <p> * The ARN of the topic you want to subscribe to. * </p> * @param protocol <p> * The protocol you want to use. Supported protocols include: * </p> * <ul> * <li> * <p> * <code>http</code> -- delivery of JSON-encoded message via HTTP * POST * </p> * </li> * <li> * <p> * <code>https</code> -- delivery of JSON-encoded message via * HTTPS POST * </p> * </li> * <li> * <p> * <code>email</code> -- delivery of message via SMTP * </p> * </li> * <li> * <p> * <code>email-json</code> -- delivery of JSON-encoded message * via SMTP * </p> * </li> * <li> * <p> * <code>sms</code> -- delivery of message via SMS * </p> * </li> * <li> * <p> * <code>sqs</code> -- delivery of JSON-encoded message to an * Amazon SQS queue * </p> * </li> * <li> * <p> * <code>application</code> -- delivery of JSON-encoded message * to an EndpointArn for a mobile app and device. * </p> * </li> * <li> * <p> * <code>lambda</code> -- delivery of JSON-encoded message to an * AWS Lambda function. * </p> * </li> * </ul> * @param endpoint <p> * The endpoint that you want to receive notifications. Endpoints * vary by protocol: * </p> * <ul> * <li> * <p> * For the <code>http</code> protocol, the endpoint is an URL * beginning with "http://" * </p> * </li> * <li> * <p> * For the <code>https</code> protocol, the endpoint is a URL * beginning with "https://" * </p> * </li> * <li> * <p> * For the <code>email</code> protocol, the endpoint is an email * address * </p> * </li> * <li> * <p> * For the <code>email-json</code> protocol, the endpoint is an * email address * </p> * </li> * <li> * <p> * For the <code>sms</code> protocol, the endpoint is a phone * number of an SMS-enabled device * </p> * </li> * <li> * <p> * For the <code>sqs</code> protocol, the endpoint is the ARN of * an Amazon SQS queue * </p> * </li> * <li> * <p> * For the <code>application</code> protocol, the endpoint is the * EndpointArn of a mobile app and device. * </p> * </li> * <li> * <p> * For the <code>lambda</code> protocol, the endpoint is the ARN * of an AWS Lambda function. * </p> * </li> * </ul> * @return subscribeResult The response from the Subscribe service method, * as returned by Amazon Simple Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public SubscribeResult subscribe(String topicArn, String protocol, String endpoint) throws AmazonServiceException, AmazonClientException { SubscribeRequest subscribeRequest = new SubscribeRequest(); subscribeRequest.setTopicArn(topicArn); subscribeRequest.setProtocol(protocol); subscribeRequest.setEndpoint(endpoint); return subscribe(subscribeRequest); } /** * <p> * Adds a statement to a topic's access control policy, granting access for * the specified AWS accounts to the specified actions. * </p> * * @param topicArn <p> * The ARN of the topic whose access control policy you wish to * modify. * </p> * @param label <p> * A unique identifier for the new policy statement. * </p> * @param aWSAccountIds <p> * The AWS account IDs of the users (principals) who will be * given access to the specified actions. The users must have AWS * accounts, but do not need to be signed up for this service. * </p> * @param actionNames <p> * The action you want to allow for the specified principal(s). * </p> * <p> * Valid values: any Amazon SNS action name. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void addPermission(String topicArn, String label, java.util.List<String> aWSAccountIds, java.util.List<String> actionNames) throws AmazonServiceException, AmazonClientException { AddPermissionRequest addPermissionRequest = new AddPermissionRequest(); addPermissionRequest.setTopicArn(topicArn); addPermissionRequest.setLabel(label); addPermissionRequest.setAWSAccountIds(aWSAccountIds); addPermissionRequest.setActionNames(actionNames); addPermission(addPermissionRequest); } /** * <p> * Returns all of the properties of a topic. Topic properties returned might * differ based on the authorization of the user. * </p> * * @param topicArn <p> * The ARN of the topic whose properties you want to get. * </p> * @return getTopicAttributesResult The response from the GetTopicAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetTopicAttributesResult getTopicAttributes(String topicArn) throws AmazonServiceException, AmazonClientException { GetTopicAttributesRequest getTopicAttributesRequest = new GetTopicAttributesRequest(); getTopicAttributesRequest.setTopicArn(topicArn); return getTopicAttributes(getTopicAttributesRequest); } /** * <p> * Removes a statement from a topic's access control policy. * </p> * * @param topicArn <p> * The ARN of the topic whose access control policy you wish to * modify. * </p> * @param label <p> * The unique label of the statement you want to remove. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void removePermission(String topicArn, String label) throws AmazonServiceException, AmazonClientException { RemovePermissionRequest removePermissionRequest = new RemovePermissionRequest(); removePermissionRequest.setTopicArn(topicArn); removePermissionRequest.setLabel(label); removePermission(removePermissionRequest); } /** * <p> * Returns a list of the requester's topics. Each call returns a limited * list of topics, up to 100. If there are more topics, a * <code>NextToken</code> is also returned. Use the <code>NextToken</code> * parameter in a new <code>ListTopics</code> call to get further results. * </p> * * @return listTopicsResult The response from the ListTopics service method, * as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTopicsResult listTopics() throws AmazonServiceException, AmazonClientException { ListTopicsRequest listTopicsRequest = new ListTopicsRequest(); return listTopics(listTopicsRequest); } /** * <p> * Returns a list of the requester's topics. Each call returns a limited * list of topics, up to 100. If there are more topics, a * <code>NextToken</code> is also returned. Use the <code>NextToken</code> * parameter in a new <code>ListTopics</code> call to get further results. * </p> * * @param nextToken <p> * Token returned by the previous <code>ListTopics</code> * request. * </p> * @return listTopicsResult The response from the ListTopics service method, * as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTopicsResult listTopics(String nextToken) throws AmazonServiceException, AmazonClientException { ListTopicsRequest listTopicsRequest = new ListTopicsRequest(); listTopicsRequest.setNextToken(nextToken); return listTopics(listTopicsRequest); } /** * <p> * Verifies an endpoint owner's intent to receive messages by validating the * token sent to the endpoint by an earlier <code>Subscribe</code> action. * If the token is valid, the action creates a new subscription and returns * its Amazon Resource Name (ARN). This call requires an AWS signature only * when the <code>AuthenticateOnUnsubscribe</code> flag is set to "true". * </p> * * @param topicArn <p> * The ARN of the topic for which you wish to confirm a * subscription. * </p> * @param token <p> * Short-lived token sent to an endpoint during the * <code>Subscribe</code> action. * </p> * @param authenticateOnUnsubscribe <p> * Disallows unauthenticated unsubscribes of the subscription. If * the value of this parameter is <code>true</code> and the * request has an AWS signature, then only the topic owner and * the subscription owner can unsubscribe the endpoint. The * unsubscribe action requires AWS authentication. * </p> * @return confirmSubscriptionResult The response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(String topicArn, String token, String authenticateOnUnsubscribe) throws AmazonServiceException, AmazonClientException { ConfirmSubscriptionRequest confirmSubscriptionRequest = new ConfirmSubscriptionRequest(); confirmSubscriptionRequest.setTopicArn(topicArn); confirmSubscriptionRequest.setToken(token); confirmSubscriptionRequest.setAuthenticateOnUnsubscribe(authenticateOnUnsubscribe); return confirmSubscription(confirmSubscriptionRequest); } /** * <p> * Verifies an endpoint owner's intent to receive messages by validating the * token sent to the endpoint by an earlier <code>Subscribe</code> action. * If the token is valid, the action creates a new subscription and returns * its Amazon Resource Name (ARN). This call requires an AWS signature only * when the <code>AuthenticateOnUnsubscribe</code> flag is set to "true". * </p> * * @param topicArn <p> * The ARN of the topic for which you wish to confirm a * subscription. * </p> * @param token <p> * Short-lived token sent to an endpoint during the * <code>Subscribe</code> action. * </p> * @return confirmSubscriptionResult The response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(String topicArn, String token) throws AmazonServiceException, AmazonClientException { ConfirmSubscriptionRequest confirmSubscriptionRequest = new ConfirmSubscriptionRequest(); confirmSubscriptionRequest.setTopicArn(topicArn); confirmSubscriptionRequest.setToken(token); return confirmSubscription(confirmSubscriptionRequest); } /** * <p> * Allows a topic owner to set an attribute of the topic to a new value. * </p> * * @param topicArn <p> * The ARN of the topic to modify. * </p> * @param attributeName <p> * The name of the attribute you want to set. Only a subset of * the topic's attributes are mutable. * </p> * <p> * Valid values: <code>Policy</code> | <code>DisplayName</code> | * <code>DeliveryPolicy</code> * </p> * @param attributeValue <p> * The new value for the attribute. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setTopicAttributes(String topicArn, String attributeName, String attributeValue) throws AmazonServiceException, AmazonClientException { SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest(); setTopicAttributesRequest.setTopicArn(topicArn); setTopicAttributesRequest.setAttributeName(attributeName); setTopicAttributesRequest.setAttributeValue(attributeValue); setTopicAttributes(setTopicAttributesRequest); } /** * <p> * Creates a topic to which notifications can be published. Users can create * at most 100,000 topics. For more information, see <a * href="http://aws.amazon.com/sns/">http://aws.amazon.com/sns</a>. This * action is idempotent, so if the requester already owns a topic with the * specified name, that topic's ARN is returned without creating a new * topic. * </p> * * @param name <p> * The name of the topic you want to create. * </p> * <p> * Constraints: Topic names must be made up of only uppercase and * lowercase ASCII letters, numbers, underscores, and hyphens, * and must be between 1 and 256 characters long. * </p> * @return createTopicResult The response from the CreateTopic service * method, as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws TopicLimitExceededException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreateTopicResult createTopic(String name) throws AmazonServiceException, AmazonClientException { CreateTopicRequest createTopicRequest = new CreateTopicRequest(); createTopicRequest.setName(name); return createTopic(createTopicRequest); } /** * <p> * Deletes a topic and all its subscriptions. Deleting a topic might prevent * some messages previously sent to the topic from being delivered to * subscribers. This action is idempotent, so deleting a topic that does not * exist does not result in an error. * </p> * * @param topicArn <p> * The ARN of the topic you want to delete. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deleteTopic(String topicArn) throws AmazonServiceException, AmazonClientException { DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(); deleteTopicRequest.setTopicArn(topicArn); deleteTopic(deleteTopicRequest); } /** * <p> * Deletes a subscription. If the subscription requires authentication for * deletion, only the owner of the subscription or the topic's owner can * unsubscribe, and an AWS signature is required. If the * <code>Unsubscribe</code> call does not require authentication and the * requester is not the subscription owner, a final cancellation message is * delivered to the endpoint, so that the endpoint owner can easily * resubscribe to the topic if the <code>Unsubscribe</code> request was * unintended. * </p> * * @param subscriptionArn <p> * The ARN of the subscription to be deleted. * </p> * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void unsubscribe(String subscriptionArn) throws AmazonServiceException, AmazonClientException { UnsubscribeRequest unsubscribeRequest = new UnsubscribeRequest(); unsubscribeRequest.setSubscriptionArn(subscriptionArn); unsubscribe(unsubscribeRequest); } /** * <p> * Sends a message to all of a topic's subscribed endpoints. When a * <code>messageId</code> is returned, the message has been saved and Amazon * SNS will attempt to deliver it to the topic's subscribers shortly. The * format of the outgoing message to each subscribed endpoint depends on the * notification protocol. * </p> * <p> * To use the <code>Publish</code> action for sending a message to a mobile * endpoint, such as an app on a Kindle device or mobile phone, you must * specify the EndpointArn for the TargetArn parameter. The EndpointArn is * returned when making a call with the <code>CreatePlatformEndpoint</code> * action. The second example below shows a request and response for * publishing to a mobile endpoint. * </p> * <p> * For more information about formatting messages, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html" * >Send Custom Platform-Specific Payloads in Messages to Mobile * Devices</a>. * </p> * * @param topicArn <p> * The topic you want to publish to. * </p> * <p> * If you don't specify a value for the <code>TopicArn</code> * parameter, you must specify a value for the * <code>PhoneNumber</code> or <code>TargetArn</code> parameters. * </p> * @param message <p> * The message you want to send to the topic. * </p> * <p> * If you want to send the same message to all transport * protocols, include the text of the message as a String value. * </p> * <p> * If you want to send different messages for each transport * protocol, set the value of the <code>MessageStructure</code> * parameter to <code>json</code> and use a JSON object for the * <code>Message</code> parameter. See the Examples section for * the format of the JSON object. * </p> * <p> * Constraints: Messages must be UTF-8 encoded strings at most * 256 KB in size (262144 bytes, not 262144 characters). * </p> * <p> * JSON-specific constraints: * </p> * <ul> * <li> * <p> * Keys in the JSON object that correspond to supported transport * protocols must have simple JSON string values. * </p> * </li> * <li> * <p> * The values will be parsed (unescaped) before they are used in * outgoing messages. * </p> * </li> * <li> * <p> * Outbound notifications are JSON encoded (meaning that the * characters will be reescaped for sending). * </p> * </li> * <li> * <p> * Values have a minimum length of 0 (the empty string, "", is * allowed). * </p> * </li> * <li> * <p> * Values have a maximum length bounded by the overall message * size (so, including multiple protocols may limit message * sizes). * </p> * </li> * <li> * <p> * Non-string values will cause the key to be ignored. * </p> * </li> * <li> * <p> * Keys that do not correspond to supported transport protocols * are ignored. * </p> * </li> * <li> * <p> * Duplicate keys are not allowed. * </p> * </li> * <li> * <p> * Failure to parse or validate any key or value in the message * will cause the <code>Publish</code> call to return an error * (no partial delivery). * </p> * </li> * </ul> * @return publishResult The response from the Publish service method, as * returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishResult publish(String topicArn, String message) throws AmazonServiceException, AmazonClientException { PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); return publish(publishRequest); } /** * <p> * Sends a message to all of a topic's subscribed endpoints. When a * <code>messageId</code> is returned, the message has been saved and Amazon * SNS will attempt to deliver it to the topic's subscribers shortly. The * format of the outgoing message to each subscribed endpoint depends on the * notification protocol. * </p> * <p> * To use the <code>Publish</code> action for sending a message to a mobile * endpoint, such as an app on a Kindle device or mobile phone, you must * specify the EndpointArn for the TargetArn parameter. The EndpointArn is * returned when making a call with the <code>CreatePlatformEndpoint</code> * action. The second example below shows a request and response for * publishing to a mobile endpoint. * </p> * <p> * For more information about formatting messages, see <a href= * "http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html" * >Send Custom Platform-Specific Payloads in Messages to Mobile * Devices</a>. * </p> * * @param topicArn <p> * The topic you want to publish to. * </p> * <p> * If you don't specify a value for the <code>TopicArn</code> * parameter, you must specify a value for the * <code>PhoneNumber</code> or <code>TargetArn</code> parameters. * </p> * @param message <p> * The message you want to send to the topic. * </p> * <p> * If you want to send the same message to all transport * protocols, include the text of the message as a String value. * </p> * <p> * If you want to send different messages for each transport * protocol, set the value of the <code>MessageStructure</code> * parameter to <code>json</code> and use a JSON object for the * <code>Message</code> parameter. See the Examples section for * the format of the JSON object. * </p> * <p> * Constraints: Messages must be UTF-8 encoded strings at most * 256 KB in size (262144 bytes, not 262144 characters). * </p> * <p> * JSON-specific constraints: * </p> * <ul> * <li> * <p> * Keys in the JSON object that correspond to supported transport * protocols must have simple JSON string values. * </p> * </li> * <li> * <p> * The values will be parsed (unescaped) before they are used in * outgoing messages. * </p> * </li> * <li> * <p> * Outbound notifications are JSON encoded (meaning that the * characters will be reescaped for sending). * </p> * </li> * <li> * <p> * Values have a minimum length of 0 (the empty string, "", is * allowed). * </p> * </li> * <li> * <p> * Values have a maximum length bounded by the overall message * size (so, including multiple protocols may limit message * sizes). * </p> * </li> * <li> * <p> * Non-string values will cause the key to be ignored. * </p> * </li> * <li> * <p> * Keys that do not correspond to supported transport protocols * are ignored. * </p> * </li> * <li> * <p> * Duplicate keys are not allowed. * </p> * </li> * <li> * <p> * Failure to parse or validate any key or value in the message * will cause the <code>Publish</code> call to return an error * (no partial delivery). * </p> * </li> * </ul> * @param subject <p> * Optional parameter to be used as the "Subject" line when the * message is delivered to email endpoints. This field will also * be included, if present, in the standard JSON messages * delivered to other endpoints. * </p> * <p> * Constraints: Subjects must be ASCII text that begins with a * letter, number, or punctuation mark; must not include line * breaks or control characters; and must be less than 100 * characters long. * </p> * @return publishResult The response from the Publish service method, as * returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishResult publish(String topicArn, String message, String subject) throws AmazonServiceException, AmazonClientException { PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); publishRequest.setSubject(subject); return publish(publishRequest); } /** * <p> * Returns a list of the requester's subscriptions. Each call returns a * limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new <code>ListSubscriptions</code> * call to get further results. * </p> * * @return listSubscriptionsResult The response from the ListSubscriptions * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions() throws AmazonServiceException, AmazonClientException { ListSubscriptionsRequest listSubscriptionsRequest = new ListSubscriptionsRequest(); return listSubscriptions(listSubscriptionsRequest); } /** * <p> * Returns a list of the requester's subscriptions. Each call returns a * limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new <code>ListSubscriptions</code> * call to get further results. * </p> * * @param nextToken <p> * Token returned by the previous <code>ListSubscriptions</code> * request. * </p> * @return listSubscriptionsResult The response from the ListSubscriptions * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions(String nextToken) throws AmazonServiceException, AmazonClientException { ListSubscriptionsRequest listSubscriptionsRequest = new ListSubscriptionsRequest(); listSubscriptionsRequest.setNextToken(nextToken); return listSubscriptions(listSubscriptionsRequest); } /** * <p> * Returns a list of the subscriptions to a specific topic. Each call * returns a limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new * <code>ListSubscriptionsByTopic</code> call to get further results. * </p> * * @param topicArn <p> * The ARN of the topic for which you wish to find subscriptions. * </p> * @return listSubscriptionsByTopicResult The response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(String topicArn) throws AmazonServiceException, AmazonClientException { ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(); listSubscriptionsByTopicRequest.setTopicArn(topicArn); return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } /** * <p> * Returns a list of the subscriptions to a specific topic. Each call * returns a limited list of subscriptions, up to 100. If there are more * subscriptions, a <code>NextToken</code> is also returned. Use the * <code>NextToken</code> parameter in a new * <code>ListSubscriptionsByTopic</code> call to get further results. * </p> * * @param topicArn <p> * The ARN of the topic for which you wish to find subscriptions. * </p> * @param nextToken <p> * Token returned by the previous * <code>ListSubscriptionsByTopic</code> request. * </p> * @return listSubscriptionsByTopicResult The response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(String topicArn, String nextToken) throws AmazonServiceException, AmazonClientException { ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(); listSubscriptionsByTopicRequest.setTopicArn(topicArn); listSubscriptionsByTopicRequest.setNextToken(nextToken); return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } /** * <p> * Lists the platform application objects for the supported push * notification services, such as APNS and GCM. The results for * <code>ListPlatformApplications</code> are paginated and return a limited * list of applications, up to 100. If additional records are available * after the first page results, then a NextToken string will be returned. * To receive the next page, you call <code>ListPlatformApplications</code> * using the NextToken string received from the previous call. When there * are no more records to return, NextToken will be null. For more * information, see <a * href="http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html">Using * Amazon SNS Mobile Push Notifications</a>. * </p> * * @return listPlatformApplicationsResult The response from the * ListPlatformApplications service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListPlatformApplicationsResult listPlatformApplications() throws AmazonServiceException, AmazonClientException { ListPlatformApplicationsRequest listPlatformApplicationsRequest = new ListPlatformApplicationsRequest(); return listPlatformApplications(listPlatformApplicationsRequest); } /** * Returns additional metadata for a previously executed successful, * request, typically used for debugging issues where a service isn't acting * as expected. This data isn't considered part of the result data returned * by an operation, so it's available through this separate, diagnostic * interface. * <p> * Response metadata is only cached for a limited period of time, so if you * need to access this extra diagnostic information for an executed request, * you should use this method to retrieve it as soon as possible after * executing the request. * * @param request The originally executed request * @return The response metadata for the specified request, or null if none * is available. * @deprecated ResponseMetadata cache can hold up to 50 requests and * responses in memory and will cause memory issue. This method * now always returns null. */ @Deprecated public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } private <X, Y extends AmazonWebServiceRequest> Response<X> invoke(Request<Y> request, Unmarshaller<X, StaxUnmarshallerContext> unmarshaller, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); AmazonWebServiceRequest originalRequest = request.getOriginalRequest(); AWSCredentials credentials = awsCredentialsProvider.getCredentials(); if (originalRequest.getRequestCredentials() != null) { credentials = originalRequest.getRequestCredentials(); } executionContext.setCredentials(credentials); StaxResponseHandler<X> responseHandler = new StaxResponseHandler<X>(unmarshaller); DefaultErrorResponseHandler errorResponseHandler = new DefaultErrorResponseHandler( exceptionUnmarshallers); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }