Class: OpenTrade::Base::Message
- Inherits:
-
Object
- Object
- OpenTrade::Base::Message
- Defined in:
- lib/open_trade/base/message.rb
Constant Summary collapse
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.register_template(name, fields, validation_proc = nil) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/open_trade/base/message.rb', line 43 def self.register_template name, fields, validation_proc=nil raise "A message template of #{template} is already registered." if @@message.has_key? name fields.each do |field, field_type| if not [ :string, :symbol, :number ].contains? field_type raise "Error while registering message template #{name}: field #{field} has invalid type #{field_type}" end end fields.symbolize_keys! true @@message_templates[name] = fields @@message_validations[name] = validation_proc end |
Instance Method Details
#intialize(template_name, field_data = {}) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/open_trade/base/message.rb', line 55 def intialize template_name, field_data={} if not @@message.has_key? template_name raise "No message template named #{template_name} has been registered yet. Perhaps you forgot to include that gem?" end field_data.symbolize_keys! true @type = template_name @payload = Hash.new @@message_templates[@type].keys.each {|k| @payload[k] = nil} @payload.strict_update field_data end |
#to_s ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/open_trade/base/message.rb', line 68 def to_s verify JSON.dump ({ :type => @type, :created => Time.now.utc.strftime, :uuid => SecureRandom.urlsafe_base64, :data => @payload }) end |
#verify ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/open_trade/base/message.rb', line 78 def verify @@message_templates[@type].each do |field| raise "Required field #{field[:name]} is missing" if field[:required] and @payload[field[:name]] == nil end # Message specific validation @@message_validations[@type].call(@data) unless @@message_validations[@type].nil? end |