Class: AWS::SnsMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/sns_message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sns) ⇒ SnsMessage

Returns a new instance of SnsMessage.



29
30
31
32
33
34
35
36
# File 'lib/aws/sns_message.rb', line 29

def initialize sns
  if sns.is_a? String
    @raw = parse_from sns
  else
    @raw = sns
  end
  @origin = :sns
end

Instance Attribute Details

#originObject

Returns the value of attribute origin.



27
28
29
# File 'lib/aws/sns_message.rb', line 27

def origin
  @origin
end

#rawObject

Returns the value of attribute raw.



27
28
29
# File 'lib/aws/sns_message.rb', line 27

def raw
  @raw
end

Instance Method Details

#[](key) ⇒ Object



38
39
40
# File 'lib/aws/sns_message.rb', line 38

def [] key
  @raw[key]
end

#authentic?Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
50
# File 'lib/aws/sns_message.rb', line 42

def authentic?
  begin
    decoded_from_base64 = decode signature
    public_key = get_public_key_from signing_cert_url
    public_key.verify OpenSSL::Digest::SHA1.new, decoded_from_base64, canonical_string
  rescue MessageWasNotAuthenticError
    false
  end
end

#messageObject



76
77
78
# File 'lib/aws/sns_message.rb', line 76

def message
  @raw['Message']
end

#message_idObject



64
65
66
# File 'lib/aws/sns_message.rb', line 64

def message_id
  @raw['MessageId']
end

#parse_from(json) ⇒ Object



108
109
110
# File 'lib/aws/sns_message.rb', line 108

def parse_from json
  JSON.parse json
end

#signatureObject



84
85
86
# File 'lib/aws/sns_message.rb', line 84

def signature
  @raw['Signature']
end

#signature_versionObject



88
89
90
# File 'lib/aws/sns_message.rb', line 88

def signature_version
  @raw['SignatureVersion']
end

#signing_cert_urlObject



92
93
94
# File 'lib/aws/sns_message.rb', line 92

def signing_cert_url
  @raw['SigningCertURL']
end

#subjectObject



72
73
74
# File 'lib/aws/sns_message.rb', line 72

def subject
  @raw['Subject']
end

#subscribe_urlObject



100
101
102
# File 'lib/aws/sns_message.rb', line 100

def subscribe_url
  @raw['SubscribeURL']
end

#timestampObject



80
81
82
# File 'lib/aws/sns_message.rb', line 80

def timestamp
  @raw['Timestamp']
end

#tokenObject



104
105
106
# File 'lib/aws/sns_message.rb', line 104

def token
  @raw['Token']
end

#topic_arnObject



68
69
70
# File 'lib/aws/sns_message.rb', line 68

def topic_arn
  @raw['TopicArn']
end

#typeObject



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/aws/sns_message.rb', line 52

def type
  case when @raw['Type'] =~ /SubscriptionConfirmation/i
    then :SubscriptionConfirmation
  when @raw['Type'] =~ /Notification/i
    then :Notification
  when @raw['Type'] =~ /UnsubscribeConfirmation/i
    then :UnsubscribeConfirmation
  else
    :unknown
  end
end

#unsubscribe_urlObject



96
97
98
# File 'lib/aws/sns_message.rb', line 96

def unsubscribe_url
  @raw['UnsubscribeURL']
end