class GlassOctopus::Middleware::JsonParser

Public Class Methods

new(app, options={}) click to toggle source
# File lib/glass_octopus/middleware/json_parser.rb, line 7
def initialize(app, options={})
  @app = app
  @klass = options.delete(:class)
  @encoding = options.delete(:encoding)
  @options = options
end

Public Instance Methods

call(ctx) click to toggle source
# File lib/glass_octopus/middleware/json_parser.rb, line 14
def call(ctx)
  message = parse(ensure_encoding(ctx.message.value))
  ctx = ContextWithJsonParsedMessage.new(ctx, message)
  @app.call(ctx)
end

Private Instance Methods

ensure_encoding(value) click to toggle source
# File lib/glass_octopus/middleware/json_parser.rb, line 27
def ensure_encoding(value)
  return value unless @encoding
  value.encode(@encoding, invalid: :replace, undef: :replace, replace: '')
end
parse(str) click to toggle source
# File lib/glass_octopus/middleware/json_parser.rb, line 22
def parse(str)
  hash = JSON.parse(str, { :create_additions => false }.merge(@options))
  @klass ? @klass.new(hash) : hash
end