# WARNING ABOUT GENERATED CODE # # This file is generated. See the contributing guide for more information: # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md # # WARNING ABOUT GENERATED CODE module Aws::SNS class PlatformEndpoint extend Aws::Deprecations # @overload def initialize(arn, options = {}) # @param [String] arn # @option options [Client] :client # @overload def initialize(options = {}) # @option options [required, String] :arn # @option options [Client] :client def initialize(*args) options = Hash === args.last ? args.pop.dup : {} @arn = extract_arn(args, options) @data = options.delete(:data) @client = options.delete(:client) || Client.new(options) end # @!group Read-Only Attributes # @return [String] def arn @arn end # Attributes include the following: # # * `CustomUserData` – arbitrary user data to associate with the # endpoint. Amazon SNS does not use this data. The data must be in # UTF-8 format and less than 2KB. # # * `Enabled` – flag that enables/disables delivery to the endpoint. # Amazon SNS will set this to false when a notification service # indicates to Amazon SNS that the endpoint is invalid. Users can set # it back to true, typically after updating Token. # # * `Token` – device token, also referred to as a registration id, for # an app and mobile device. This is returned from the notification # service when an app and mobile device are registered with the # notification service. # # The device token for the iOS platform is returned in lowercase. # # # @return [Hash] def attributes data[:attributes] end # @!endgroup # @return [Client] def client @client end # Loads, or reloads {#data} for the current {PlatformEndpoint}. # Returns `self` making it possible to chain methods. # # platform_endpoint.reload.data # # @return [self] def load resp = @client.get_endpoint_attributes(endpoint_arn: @arn) @data = resp.data self end alias :reload :load # @return [Types::GetEndpointAttributesResponse] # Returns the data for this {PlatformEndpoint}. Calls # {Client#get_endpoint_attributes} if {#data_loaded?} is `false`. def data load unless @data @data end # @return [Boolean] # Returns `true` if this resource is loaded. Accessing attributes or # {#data} on an unloaded resource will trigger a call to {#load}. def data_loaded? !!@data end # @!group Actions # @example Request syntax with placeholder values # # platform_endpoint.delete() # @param [Hash] options ({}) # @return [EmptyStructure] def delete(options = {}) options = options.merge(endpoint_arn: @arn) resp = @client.delete_endpoint(options) resp.data end # @example Request syntax with placeholder values # # platform_endpoint.publish({ # topic_arn: "topicARN", # phone_number: "String", # message: "message", # required # subject: "subject", # message_structure: "messageStructure", # message_attributes: { # "String" => { # data_type: "String", # required # string_value: "String", # binary_value: "data", # }, # }, # }) # @param [Hash] options ({}) # @option options [String] :topic_arn # The topic you want to publish to. # # If you don't specify a value for the `TopicArn` parameter, you must # specify a value for the `PhoneNumber` or `TargetArn` parameters. # @option options [String] :phone_number # The phone number to which you want to deliver an SMS message. Use # E.164 format. # # If you don't specify a value for the `PhoneNumber` parameter, you # must specify a value for the `TargetArn` or `TopicArn` parameters. # @option options [required, String] :message # The message you want to send. # # If you are publishing to a topic and you want to send the same message # to all transport protocols, include the text of the message as a # String value. If you want to send different messages for each # transport protocol, set the value of the `MessageStructure` parameter # to `json` and use a JSON object for the `Message` parameter. # # # # Constraints: # # * With the exception of SMS, messages must be UTF-8 encoded strings # and at most 256 KB in size (262,144 bytes, not 262,144 characters). # # * For SMS, each message can contain up to 140 characters. This # character limit depends on the encoding schema. For example, an SMS # message can contain 160 GSM characters, 140 ASCII characters, or 70 # UCS-2 characters. # # If you publish a message that exceeds this size limit, Amazon SNS # sends the message as multiple messages, each fitting within the size # limit. Messages aren't truncated mid-word but are cut off at # whole-word boundaries. # # The total size limit for a single SMS `Publish` action is 1,600 # characters. # # JSON-specific constraints: # # * Keys in the JSON object that correspond to supported transport # protocols must have simple JSON string values. # # * The values will be parsed (unescaped) before they are used in # outgoing messages. # # * Outbound notifications are JSON encoded (meaning that the characters # will be reescaped for sending). # # * Values have a minimum length of 0 (the empty string, "", is # allowed). # # * Values have a maximum length bounded by the overall message size # (so, including multiple protocols may limit message sizes). # # * Non-string values will cause the key to be ignored. # # * Keys that do not correspond to supported transport protocols are # ignored. # # * Duplicate keys are not allowed. # # * Failure to parse or validate any key or value in the message will # cause the `Publish` call to return an error (no partial delivery). # @option options [String] :subject # 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. # # 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. # @option options [String] :message_structure # Set `MessageStructure` to `json` if you want to send a different # message for each protocol. For example, using one publish action, you # can send a short message to your SMS subscribers and a longer message # to your email subscribers. If you set `MessageStructure` to `json`, # the value of the `Message` parameter must: # # * be a syntactically valid JSON object; and # # * contain at least a top-level JSON key of "default" with a value # that is a string. # # You can define other top-level keys that define the message you want # to send to a specific transport protocol (e.g., "http"). # # Valid value: `json` # @option options [Hash] :message_attributes # Message attributes for Publish action. # @return [Types::PublishResponse] def publish(options = {}) options = options.merge(target_arn: @arn) resp = @client.publish(options) resp.data end # @example Request syntax with placeholder values # # platform_endpoint.set_attributes({ # attributes: { # required # "String" => "String", # }, # }) # @param [Hash] options ({}) # @option options [required, Hash] :attributes # A map of the endpoint attributes. Attributes in this map include the # following: # # * `CustomUserData` – arbitrary user data to associate with the # endpoint. Amazon SNS does not use this data. The data must be in # UTF-8 format and less than 2KB. # # * `Enabled` – flag that enables/disables delivery to the endpoint. # Amazon SNS will set this to false when a notification service # indicates to Amazon SNS that the endpoint is invalid. Users can set # it back to true, typically after updating Token. # # * `Token` – device token, also referred to as a registration id, for # an app and mobile device. This is returned from the notification # service when an app and mobile device are registered with the # notification service. # @return [EmptyStructure] def set_attributes(options = {}) options = options.merge(endpoint_arn: @arn) resp = @client.set_endpoint_attributes(options) resp.data end # @deprecated # @api private def identifiers { arn: @arn } end deprecated(:identifiers) private def extract_arn(args, options) value = args[0] || options.delete(:arn) case value when String then value when nil then raise ArgumentError, "missing required option :arn" else msg = "expected :arn to be a String, got #{value.class}" raise ArgumentError, msg end end class Collection < Aws::Resources::Collection; end end end