Sha256: daacae40c16e72c8257604e0a4ea8c9dfe4498f0d9a6653899b5dd7c2749baac

Contents?: true

Size: 933 Bytes

Versions: 9

Compression:

Stored size: 933 Bytes

Contents

require 'forwardable'

module Poms
  module Api
    # The `Request` object is an implementation-agnostic description of an HTTP
    # request, representing a combination of an HTTP method, URI, body and
    # headers.
    class Request
      extend Forwardable
      def_delegators :@headers, :[], :[]=
      def_delegator :@headers, :each, :each_header

      attr_reader :uri, :body

      def self.get(*args)
        new(:get, *args)
      end

      def self.post(*args)
        new(:post, *args)
      end

      def initialize(method, uri, body = nil, headers = {})
        @method = method.to_sym
        unless %i(get post).include?(@method)
          raise ArgumentError, 'method should be :get or :post'
        end
        @uri = uri
        @body = body.to_s
        @headers = headers.to_h
      end

      def get?
        @method == :get
      end

      def post?
        @method == :post
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
poms-2.1.3 lib/poms/api/request.rb
poms-2.1.2.1 lib/poms/api/request.rb
poms-2.1.2 lib/poms/api/request.rb
poms-2.1.1 lib/poms/api/request.rb
poms-2.1.0 lib/poms/api/request.rb
poms-2.0.1 lib/poms/api/request.rb
poms-2.0.0 lib/poms/api/request.rb
poms-2.0.0.b lib/poms/api/request.rb
poms-2.0.0.a lib/poms/api/request.rb