Sha256: 6ce6089c69d56fe635d9b45fc1409993ee7cb7c10b338cbf15b0efb188202966

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

require 'json'

module BugherdClient
  module Resources
    module V1

      class Base

        DEFAULT_HEADERS = { content_type: :json, accept: :json }

        #
        # Return a list of available methods in a Resource
        #
        def api_methods
          self.class.instance_methods(false)
        end

        attr_accessor :connection, :options
        def initialize(conn, opts={})
          @connection, @options = conn, opts
        end

        def send_request(method="GET", path="", params={}, headers={})
          headers = DEFAULT_HEADERS.merge(headers)
          params.merge!(headers)
          method_name = method.to_s.downcase
          self.connection[path].__send__(method_name, params)
        end

        [:get, :post, :put, :patch, :delete].each do |method_name|
          define_method("#{method_name}_request") do |path, params={}|
            send_request(method_name, path, params)
          end
        end

        def parse_response(response, root_element=nil)
          if root_element
            JSON.parse(response)[root_element.to_s]
          else
            JSON.parse(response)
          end
        end
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bugherd_client-0.0.5 lib/bugherd_client/resources/v1/base.rb
bugherd_client-0.0.4 lib/bugherd_client/resources/v1/base.rb
bugherd_client-0.0.3 lib/bugherd_client/resources/v1/base.rb
bugherd_client-0.0.2 lib/bugherd_client/resources/v1/base.rb