Sha256: 1e6aacd069216f957f6a7d32b23291d252c4e2e6785569028dd183880772ea61

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

require 'ostruct'

module Mailgun
  # A Mailgun::Response object is instantiated for each response generated
  # by the Client request. The Response object supports deserialization of
  # the JSON result. Or, if you prefer JSON or YAML formatting, call the
  # method for conversion.
  #
  # See the Github documentation for full examples.
  class Response
    # All responses have a payload and a code corresponding to http, though
    #   slightly different
    attr_accessor :body, :code

    def self.from_hash(h)
      # Create a "fake" response object with the data passed from h
      self.new OpenStruct.new(h)
    end

    def initialize(response)
      @body = response.body
      @code = response.code
    end

    # Return response as Ruby Hash
    #
    # @return [Hash] A standard Ruby Hash containing the HTTP result.

    def to_h
      JSON.parse(@body)
    rescue => err
      raise ParseError.new(err), err
    end

    # Replace @body with Ruby Hash
    #
    # @return [Hash] A standard Ruby Hash containing the HTTP result.
    def to_h!
      @body = JSON.parse(@body)
    rescue => err
      raise ParseError.new(err), err
    end

    # Return response as Yaml
    #
    # @return [String] A string containing response as YAML
    def to_yaml
      YAML.dump(to_h)
    rescue => err
      raise ParseError.new(err), err
    end

    # Replace @body with YAML
    #
    # @return [String] A string containing response as YAML
    def to_yaml!
      @body = YAML.dump(to_h)
    rescue => err
      raise ParseError.new(err), err
    end
    
    # Returns true if response code is 2xx
    # 
    # @return [Boolean] A boolean that binarizes the response code result.
    def success?
      (200..299).include?(code)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mailgun-ruby-1.2.14 lib/mailgun/response.rb
mailgun-ruby-1.2.13 lib/mailgun/response.rb
mailgun-ruby-1.2.12 lib/mailgun/response.rb