Sha256: 72cab0782c7b13347c925758fe7d46472b5b4bb734e94620b77f13636341388c

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

module RightSupport::Net
  if_require_succeeds('restclient') do
    HAS_REST_CLIENT = true
  end

  class NoProvider < Exception; end

  #
  # A wrapper for the rest-client gem that provides timeouts and other
  # useful features while preserving the simplicity and ease of use of
  # RestClient's simple, static (module-level) interface.
  #
  module REST
    DEFAULT_TIMEOUT = 5
    
    def self.get(url, headers={}, timeout=DEFAULT_TIMEOUT, &block)
      request(:method=>:get, :url=>url, :timeout=>timeout, :headers=>headers, &block)
    end

    def self.post(url, payload, headers={}, timeout=DEFAULT_TIMEOUT, &block)
      request(:method=>:post, :url=>url, :payload=>payload,
              :timeout=>timeout, :headers=>headers, &block)
    end

    def self.put(url, payload, headers={}, timeout=DEFAULT_TIMEOUT, &block)
      request(:method=>:put, :url=>url, :payload=>payload,
              :timeout=>timeout, :headers=>headers, &block)
    end

    def self.delete(url, headers={}, timeout=DEFAULT_TIMEOUT, &block)
      request(:method=>:delete, :url=>url, :timeout=>timeout, :headers=>headers, &block)
    end

    def self.request(options, &block)
      if HAS_REST_CLIENT
        RestClient::Request.execute(options, &block)
      else
        raise NoProvider, "Cannot find a suitable HTTP client library"
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
right_support-0.8.0 lib/right_support/net/rest.rb