Class: ActiveHook::Server::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/activehook/server/message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Message

Returns a new instance of Message.



7
8
9
10
11
# File 'lib/activehook/server/message.rb', line 7

def initialize(options = {})
  options = defaults.merge(options)
  options.each { |key, value| send("#{key}=", value) }
  @errors = {}
end

Instance Attribute Details

#created_atObject

Returns the value of attribute created_at.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def created_at
  @created_at
end

#errorsObject (readonly)

Returns the value of attribute errors.



5
6
7
# File 'lib/activehook/server/message.rb', line 5

def errors
  @errors
end

#idObject

Returns the value of attribute id.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def id
  @id
end

#keyObject

Returns the value of attribute key.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def key
  @key
end

#payloadObject

Returns the value of attribute payload.



5
6
7
# File 'lib/activehook/server/message.rb', line 5

def payload
  @payload
end

#retry_maxObject

Returns the value of attribute retry_max.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def retry_max
  @retry_max
end

#retry_timeObject

Returns the value of attribute retry_time.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def retry_time
  @retry_time
end

#tokenObject

Returns the value of attribute token.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def token
  @token
end

#uriObject

Returns the value of attribute uri.



4
5
6
# File 'lib/activehook/server/message.rb', line 4

def uri
  @uri
end

Instance Method Details

#fail_atObject



41
42
43
# File 'lib/activehook/server/message.rb', line 41

def fail_at
  @created_at.to_i + retry_max_time
end

#final_payloadObject



60
61
62
63
64
65
# File 'lib/activehook/server/message.rb', line 60

def final_payload
  { id: @id,
    key: @key,
    created_at: @created_at,
    payload: @payload }.to_json
end

#retry?Boolean

Returns:



33
34
35
# File 'lib/activehook/server/message.rb', line 33

def retry?
  fail_at > Time.now.to_i
end

#retry_atObject



37
38
39
# File 'lib/activehook/server/message.rb', line 37

def retry_at
  Time.now.to_i + @retry_time.to_i
end

#retry_max_timeObject



45
46
47
# File 'lib/activehook/server/message.rb', line 45

def retry_max_time
  @retry_time.to_i * @retry_max.to_i
end

#saveObject



13
14
15
16
# File 'lib/activehook/server/message.rb', line 13

def save
  return false unless valid?
  save_hook
end

#save!Object

Raises:



18
19
20
21
# File 'lib/activehook/server/message.rb', line 18

def save!
  raise Errors::Message, 'Message is invalid' unless valid?
  save_hook
end

#signatureObject



67
68
69
# File 'lib/activehook/server/message.rb', line 67

def signature
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), @token, final_payload)
end

#to_jsonObject



49
50
51
52
53
54
55
56
57
58
# File 'lib/activehook/server/message.rb', line 49

def to_json
  { id: @id,
    key: @key,
    token: @token,
    created_at: @created_at,
    retry_time: @retry_time,
    retry_max: @retry_max,
    uri: @uri,
    payload: @payload }.to_json
end

#valid?Boolean

Returns:



71
72
73
74
# File 'lib/activehook/server/message.rb', line 71

def valid?
  validate!
  @errors.empty?
end