class Meshchat::Network::Incoming::MessageDecryptor

Attributes

_input[R]
_json[R]
_message[R]
_message_factory[R]

Public Class Methods

new(encoded_message, message_factory) click to toggle source
# File lib/meshchat/network/incoming/message_decryptor.rb, line 9
def initialize(encoded_message, message_factory)
  @_message_factory = message_factory
  @_input = try_decrypt(encoded_message)
  @_json = parse_json(@_input)
  @_message = process_json
end

Public Instance Methods

message() click to toggle source
# File lib/meshchat/network/incoming/message_decryptor.rb, line 16
def message
  _message
end

Private Instance Methods

parse_json(input) click to toggle source
# File lib/meshchat/network/incoming/message_decryptor.rb, line 22
def parse_json(input)
  return JSON.parse(input)
rescue => e
  Display.debug e.message
  Display.debug e.backtrace.join("\n")
  raise Errors::BadRequest, 'could not parse json'
end
process_json() click to toggle source
# File lib/meshchat/network/incoming/message_decryptor.rb, line 44
def process_json
  type = _json['type']
  _message_factory.create(type, data: { payload: _json })
end
try_decrypt(input) click to toggle source
# File lib/meshchat/network/incoming/message_decryptor.rb, line 30
def try_decrypt(input)
  begin
    decoded = Base64.decode64(input)
    input = Encryption.decrypt(decoded, APP_CONFIG.user[:privatekey])
  rescue => e
    Display.debug e.message
    Display.debug e.backtrace.join("\n")
    Display.debug input
    raise Errors::NotAuthorized, e.message
  end

  input
end