Sha256: 18eaf8c6a7f826ed092860f0bce8afac545b2aad94627034c7b8582a3ef3b17d

Contents?: true

Size: 665 Bytes

Versions: 3

Compression:

Stored size: 665 Bytes

Contents

# frozen_string_literal: true

require "uri"

module SeaShanty
  class Request
    attr_reader :method, :url, :headers, :body

    def initialize(method:, url:, headers:, body:)
      @method = method
      @url = case url
      when String
        URI.parse(url)
      when URI
        url
      else
        raise ArgumentError, "url should be a String or an URI"
      end
      @headers = headers
      @body = body
    end

    def to_h
      {
        method: method.to_s,
        url: url.to_s,
        headers: headers,
        body: {
          string: body.to_s,
          encoding: body.nil? ? "" : body.encoding.name
        }
      }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sea_shanty-0.2.0 lib/sea_shanty/request.rb
sea_shanty-0.1.1 lib/sea_shanty/request.rb
sea_shanty-0.1.0 lib/sea_shanty/request.rb