authy/authy-ruby

View on GitHub
lib/authy/response.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Authy
  class Response < Hash
    attr_reader :raw_response
    def initialize(response)
      @raw_response = response
      @errors = {}
      parse_body
    end

    def id
      self["id"]
    end

    def ok?
      @raw_response.status == 200
    end
    alias :success? :ok?

    def body
      @raw_response.body
    end

    def code
      @raw_response.status
    end

    def error_msg
      if ok?
        "No error"
      elsif self.empty?
        self.body
      else
        self["message"] || "No error"
      end
    end

    def errors
      self["errors"] || @errors
    end

    protected

    def method_missing(name, *args, &block)
      if self.include?(name.to_s)
        self[name.to_s]
      else
        super(name, *args, &block)
      end
    end

    def parse_body
      body = JSON.parse(@raw_response.body)
      body.each do |k,v|
        self[k] = v
      end
    rescue
      self['message'] = 'invalid json'
    end
  end
end