Sha256: 73a3bd9c531da3ddea7564beaafb3e20cdbb04a5fff2694d6083932251fa4614

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

module Fire
  module Connection
    class Request
      require 'httpclient'
      require 'json'

      def initialize
        @client = HTTPClient.new(base_url: Fire.config.base_uri)
        @client.default_header['Content-Type'] = 'application/json'
      end

      [ :get, :delete ].each do |method_type|
        method = <<METHOD
        def #{method_type}(path, query={})
          process(:#{method_type}, path, query)
        end
METHOD
        class_eval(method)
      end

      [ :post, :put, :patch ].each do |method_type|
        method = <<METHOD
        def #{method_type}(path, value, query={})
          process(:#{method_type}, path, query, value.to_json)
        end
METHOD
        class_eval(method)
      end

      alias_method :set, :put

      protected

      def process(method, path, query={}, body=nil)
        response = @client.request(method, "#{path}.json", body: body, query: prepare_options(query), follow_redirect: true)
        Fire::Connection::Response.new(response)
      end

      def prepare_options(query_options)
        query_options.merge(Fire.config.auth)
      end

    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
fire-model-0.0.14 lib/connection/request.rb
fire-model-0.0.12 lib/connection/request.rb
fire-model-0.0.11 lib/connection/request.rb
fire-model-0.0.10 lib/connection/request.rb
fire-model-0.0.9 lib/connection/request.rb
fire-model-0.0.8 lib/connection/request.rb
fire-model-0.0.7 lib/connection/request.rb
fire-model-0.0.6 lib/connection/request.rb
fire-model-0.0.2 lib/connection/request.rb
fire-model-0.0.1 lib/connection/request.rb