/*
* Copyright 2010-2014 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.
*/
/*
* Do not modify this file. This file is generated from the sns-2010-03-31.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SimpleNotificationService.Model
{
///
/// Container for the parameters to the Subscribe operation.
/// Prepares to subscribe an endpoint by sending the endpoint a confirmation message.
/// To actually create a subscription, the endpoint owner must call the ConfirmSubscription
/// action with the token from the confirmation message. Confirmation tokens are valid
/// for three days.
///
///
///
/// This action is throttled at 100 transactions per second (TPS).
///
///
public partial class SubscribeRequest : AmazonSimpleNotificationServiceRequest
{
private Dictionary _attributes = new Dictionary();
private string _endpoint;
private string _protocol;
private bool? _returnSubscriptionArn;
private string _topicArn;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public SubscribeRequest() { }
///
/// Instantiates SubscribeRequest with the parameterized properties
///
/// The ARN of the topic you want to subscribe to.
/// The protocol you want to use. Supported protocols include: -
http
– delivery of JSON-encoded message via HTTP POST -
https
– delivery of JSON-encoded message via HTTPS POST -
email
– delivery of message via SMTP -
email-json
– delivery of JSON-encoded message via SMTP -
sms
– delivery of message via SMS -
sqs
– delivery of JSON-encoded message to an Amazon SQS queue -
application
– delivery of JSON-encoded message to an EndpointArn for a mobile app and device. -
lambda
– delivery of JSON-encoded message to an Amazon Lambda function.
/// The endpoint that you want to receive notifications. Endpoints vary by protocol: - For the
http
protocol, the endpoint is an URL beginning with http://
- For the
https
protocol, the endpoint is a URL beginning with https://
- For the
email
protocol, the endpoint is an email address - For the
email-json
protocol, the endpoint is an email address - For the
sms
protocol, the endpoint is a phone number of an SMS-enabled device - For the
sqs
protocol, the endpoint is the ARN of an Amazon SQS queue - For the
application
protocol, the endpoint is the EndpointArn of a mobile app and device. - For the
lambda
protocol, the endpoint is the ARN of an Amazon Lambda function.
public SubscribeRequest(string topicArn, string protocol, string endpoint)
{
_topicArn = topicArn;
_protocol = protocol;
_endpoint = endpoint;
}
///
/// Gets and sets the property Attributes.
///
/// A map of attributes with their corresponding values.
///
///
///
/// The following lists the names, descriptions, and values of the special request parameters
/// that the SetTopicAttributes
action uses:
///
/// -
///
///
DeliveryPolicy
– The policy that defines how Amazon SNS retries failed
/// deliveries to HTTP/S endpoints.
///
/// -
///
///
FilterPolicy
– The simple JSON object that lets your subscriber receive
/// only a subset of messages, rather than receiving every message published to the topic.
///
/// -
///
///
RawMessageDelivery
– When set to true
, enables raw message
/// delivery to Amazon SQS or HTTP/S endpoints. This eliminates the need for the endpoints
/// to process JSON formatting, which is otherwise created for Amazon SNS metadata.
///
/// -
///
///
RedrivePolicy
– When specified, sends undeliverable messages to the
/// specified Amazon SQS dead-letter queue. Messages that can't be delivered due to client
/// errors (for example, when the subscribed endpoint is unreachable) or server errors
/// (for example, when the service that powers the subscribed endpoint becomes unavailable)
/// are held in the dead-letter queue for further analysis or reprocessing.
///
///
///
public Dictionary Attributes
{
get { return this._attributes; }
set { this._attributes = value; }
}
// Check to see if Attributes property is set
internal bool IsSetAttributes()
{
return this._attributes != null && this._attributes.Count > 0;
}
///
/// Gets and sets the property Endpoint.
///
/// The endpoint that you want to receive notifications. Endpoints vary by protocol:
///
/// -
///
/// For the
http
protocol, the endpoint is an URL beginning with http://
///
///
/// -
///
/// For the
https
protocol, the endpoint is a URL beginning with https://
///
///
/// -
///
/// For the
email
protocol, the endpoint is an email address
///
/// -
///
/// For the
email-json
protocol, the endpoint is an email address
///
/// -
///
/// For the
sms
protocol, the endpoint is a phone number of an SMS-enabled
/// device
///
/// -
///
/// For the
sqs
protocol, the endpoint is the ARN of an Amazon SQS queue
///
/// -
///
/// For the
application
protocol, the endpoint is the EndpointArn of a mobile
/// app and device.
///
/// -
///
/// For the
lambda
protocol, the endpoint is the ARN of an Amazon Lambda
/// function.
///
///
///
public string Endpoint
{
get { return this._endpoint; }
set { this._endpoint = value; }
}
// Check to see if Endpoint property is set
internal bool IsSetEndpoint()
{
return this._endpoint != null;
}
///
/// Gets and sets the property Protocol.
///
/// The protocol you want to use. Supported protocols include:
///
/// -
///
///
http
– delivery of JSON-encoded message via HTTP POST
///
/// -
///
///
https
– delivery of JSON-encoded message via HTTPS POST
///
/// -
///
///
email
– delivery of message via SMTP
///
/// -
///
///
email-json
– delivery of JSON-encoded message via SMTP
///
/// -
///
///
sms
– delivery of message via SMS
///
/// -
///
///
sqs
– delivery of JSON-encoded message to an Amazon SQS queue
///
/// -
///
///
application
– delivery of JSON-encoded message to an EndpointArn for
/// a mobile app and device.
///
/// -
///
///
lambda
– delivery of JSON-encoded message to an Amazon Lambda function.
///
///
///
[AWSProperty(Required=true)]
public string Protocol
{
get { return this._protocol; }
set { this._protocol = value; }
}
// Check to see if Protocol property is set
internal bool IsSetProtocol()
{
return this._protocol != null;
}
///
/// Gets and sets the property ReturnSubscriptionArn.
///
/// Sets whether the response from the Subscribe
request includes the subscription
/// ARN, even if the subscription is not yet confirmed.
///
/// -
///
/// If you have the subscription ARN returned, the response includes the ARN in all cases,
/// even if the subscription is not yet confirmed.
///
///
-
///
/// If you don't have the subscription ARN returned, in addition to the ARN for confirmed
/// subscriptions, the response also includes the
pending subscription
ARN
/// value for subscriptions that aren't yet confirmed. A subscription becomes confirmed
/// when the subscriber calls the ConfirmSubscription
action with a confirmation
/// token.
///
///
///
/// If you set this parameter to true
, .
///
///
///
/// The default value is false
.
///
///
public bool ReturnSubscriptionArn
{
get { return this._returnSubscriptionArn.GetValueOrDefault(); }
set { this._returnSubscriptionArn = value; }
}
// Check to see if ReturnSubscriptionArn property is set
internal bool IsSetReturnSubscriptionArn()
{
return this._returnSubscriptionArn.HasValue;
}
///
/// Gets and sets the property TopicArn.
///
/// The ARN of the topic you want to subscribe to.
///
///
[AWSProperty(Required=true)]
public string TopicArn
{
get { return this._topicArn; }
set { this._topicArn = value; }
}
// Check to see if TopicArn property is set
internal bool IsSetTopicArn()
{
return this._topicArn != null;
}
}
}