Sha256: b2be86576414e38ea9b44c62023d2c06fb15f825cdbe74b593cae98c53a10e79

Contents?: true

Size: 831 Bytes

Versions: 1

Compression:

Stored size: 831 Bytes

Contents

module WebClient
  class Base
    include Net

    attr_reader :http

    def initialize(host, port=nil)
      @http = HTTP.new(host, port)
    end

    def get(path, data={}, &block)
      request(HTTP::Get, path, data, &block)
    end

    def post(path, data, &block)
      request(HTTP::Post, path, data, &block)
    end

    def put(path, data, &block)
      request(HTTP::Put, path, data, &block)
    end

    def delete(path, data={}, &block)
      request(HTTP::Delete, path, data, &block)
    end

    private

    def request(method_class, path, data=nil)
      request = method_class.new(path)
      request.set_form_data(data) if data.is_a? Hash
      request.body = data if data.is_a? String
      yield(request, http) if block_given?
      http.request(request)
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
web_client-0.0.1 lib/web_client/base.rb