Sha256: ffb8ebdc75f3ed51fd875a83924ec940c89e94fa432b2b97c4e8d890b65ac6eb

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

require 'ur' unless Object.const_defined?(:Ur)

class Ur
  module RequestAndResponse
    module FaradayEntity
      def set_body_from_faraday(env)
        if env[:raw_body].respond_to?(:to_str)
          self.body = env[:raw_body].to_str.dup
        elsif env[:body].respond_to?(:to_str)
          self.body = env[:body].to_str.dup
        elsif env[:body].respond_to?(:read) && env[:body].respond_to?(:rewind)
          env[:body].rewind
          self.body = env[:body].read
          env[:body].rewind
        elsif env[:body]
          # TODO not good
          self['body_parsed'] = env[:body]
        end
      end
    end
    include FaradayEntity

    def content_type
      headers.each do |k, v|
        return ContentType.new(v) if k =~ /\Acontent[-_]type\z/i
      end
      nil
    end

    def media_type
      content_type ? content_type.media_type : nil
    end

    # @return [Boolean] is our content type JSON?
    def json?
      content_type && content_type.json?
    end

    # @return [Boolean] is our content type XML?
    def xml?
      content_type && content_type.json?
    end

    # @return [Boolean] is our content type x-www-form-urlencoded?
    def form_urlencoded?
      content_type && content_type.form_urlencoded?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ur-0.1.0 lib/ur/request_and_response.rb