Sha256: 7eacb07cde3e6c895dd540d0fa07cd8b3949a2a48ac4a93fee1f475c655a56dc

Contents?: true

Size: 1.09 KB

Versions: 4

Compression:

Stored size: 1.09 KB

Contents

require 'uri'
module Restfully
  module HTTP
    
    class Request
      include Headers, Restfully::Parsing
      attr_reader :headers, :uri
      attr_accessor :retries
      
      def initialize(url, options = {})
        options = options.symbolize_keys
        @uri = url.kind_of?(URI) ? url : URI.parse(url)
        @headers = sanitize_http_headers(options.delete(:headers) || {})
        if query = options.delete(:query)
          @uri.query = [@uri.query, query.to_params].compact.join("&")
        end
        @body = options.delete(:body)
        @retries = 0
      end
      
      def body
        if @body.kind_of?(String)
          @unserialized_body ||= unserialize(@body, :content_type => @headers['Content-Type'])
        else
          @body
        end
      end
      
      def raw_body
        if @body.kind_of?(String)
          @body
        else
          @serialized_body ||= serialize(@body, :content_type => @headers['Content-Type'])
        end
      end
      
      def add_headers(headers = {})
        @headers.merge!(sanitize_http_headers(headers || {}))
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
restfully-0.6.3 lib/restfully/http/request.rb
restfully-0.6.2 lib/restfully/http/request.rb
restfully-0.6.1 lib/restfully/http/request.rb
restfully-0.6.0 lib/restfully/http/request.rb