-
Notifications
You must be signed in to change notification settings - Fork 21.4k
/
message.rb
33 lines (28 loc) · 873 Bytes
/
message.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# frozen_string_literal: true
module ActiveRecord
module Encryption
# A message defines the structure of the data we store in encrypted attributes. It contains:
#
# * An encrypted payload
# * A list of unencrypted headers
#
# See Encryptor#encrypt
class Message
attr_accessor :payload, :headers
def initialize(payload: nil, headers: {})
validate_payload_type(payload)
@payload = payload
@headers = Properties.new(headers)
end
def ==(other_message)
payload == other_message.payload && headers == other_message.headers
end
private
def validate_payload_type(payload)
unless payload.is_a?(String) || payload.nil?
raise ActiveRecord::Encryption::Errors::ForbiddenClass, "Only string payloads allowed"
end
end
end
end
end