Sha256: c7e4b3f5b1c093f70b621f86c3af2f5bd617d563af6e69240417c76a0c978a29

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

require 'faraday'

module Rapidash
  module HTTPClient

    def self.included(base)
      base.extend(ClassMethods)
    end

    attr_accessor :extension, :site
    attr_writer :connection

    def initialize
    end

    def site=(site)
      @site = site
      @connection = nil
    end

    def connection
      @connection ||= Faraday.new(site || self.class.site_url)
    end

    def request(verb, url, options = {})
      if extension
        url = "#{url}.#{(extension)}"
      elsif self.class.respond_to?(:url_extension) && self.class.url_extension
        url = "#{url}.#{(self.class.url_extension)}"
      end
      url = connection.build_url(url, options[:params]).to_s
      response = connection.run_request(verb, url, options[:body], options[:header])

      # "foo"[0] does not work in 1.8.7, "foo"[0,1] is required
      case response.status.to_s[0,1]
      #Handle redirects
      when "3"
        request(verb, response.headers["location"], options)
      when "2"
        return Response.new(response)
      end
    end



    module ClassMethods
      attr_accessor :site_url

      def site(site)
        @site_url = site
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rapidash-0.0.5 lib/rapidash/http_client.rb