Sha256: 400548b676d6f680f762ecc702da4972ceb243a18f0fccb7ae1344286e6c7caa

Contents?: true

Size: 710 Bytes

Versions: 24

Compression:

Stored size: 710 Bytes

Contents

class Kapellmeister::Responder
  Result = Struct.new(:success?, :response, :payload)
  attr_reader :response, :payload

  delegate :body, :status, to: :response

  def initialize(response, **args)
    @response = response
    @payload = args.merge(status: status) # rubocop:disable Style/HashSyntax (for support ruby 2.4+)
  end

  def result
    error = !/2\d{2}/.match?(status.to_s)

    Result.new(!error, parsed_body, payload)
  rescue JSON::ParserError => e
    Result.new(false, { message: e.message }, payload)
  end

  private

  def parsed_body
    return body if body.empty?

    case body
    when Hash then body
    else JSON.parse(body, symbolize_names: true, quirks_mode: true)
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
kapellmeister-0.10.2 lib/kapellmeister/responder.rb
kapellmeister-0.10.1 lib/kapellmeister/responder.rb
kapellmeister-0.10.0 lib/kapellmeister/responder.rb
kapellmeister-0.9.9.rc3 lib/kapellmeister/responder.rb
kapellmeister-0.9.9.rc2 lib/kapellmeister/responder.rb
kapellmeister-0.9.9.rc1 lib/kapellmeister/responder.rb
kapellmeister-0.9.8.rc1 lib/kapellmeister/responder.rb
kapellmeister-0.9.8.pre.rc1 lib/kapellmeister/responder.rb
kapellmeister-0.9.8 lib/kapellmeister/responder.rb
kapellmeister-0.9.7 lib/kapellmeister/responder.rb
kapellmeister-0.9.6 lib/kapellmeister/responder.rb
kapellmeister-0.9.5 lib/kapellmeister/responder.rb
kapellmeister-0.9.4 lib/kapellmeister/responder.rb
kapellmeister-0.9.3 lib/kapellmeister/responder.rb
kapellmeister-0.9.2 lib/kapellmeister/responder.rb
kapellmeister-0.9.1 lib/kapellmeister/responder.rb
kapellmeister-0.9.0 lib/kapellmeister/responder.rb
kapellmeister-0.8.0 lib/kapellmeister/responder.rb
kapellmeister-0.7.3 lib/kapellmeister/responder.rb
kapellmeister-0.7.2 lib/kapellmeister/responder.rb