chainable: defining request objects more dynamically; also, fixed the call with multiple uris

This commit is contained in:
HoneyryderChuck 2018-01-13 17:50:22 +00:00
parent 0e6cbee92e
commit 2a2d5e0b7a
2 changed files with 9 additions and 40 deletions

View File

@ -2,40 +2,10 @@
module HTTPX
module Chainable
def head(uri, **options)
request(:head, uri, **options)
end
def get(uri, **options)
request(:get, uri, **options)
end
def post(uri, **options)
request(:post, uri, **options)
end
def put(uri, **options)
request(:put, uri, **options)
end
def delete(uri, **options)
request(:delete, uri, **options)
end
def trace(uri, **options)
request(:trace, uri, **options)
end
def options(uri, **options)
request(:options, uri, **options)
end
def connect(uri, **options)
request(:connect, uri, **options)
end
def patch(uri, **options)
request(:patch, uri, **options)
%i[head get post put delete trace options connect patch].each do |meth|
define_method meth do |*uri, **options|
request(meth, *uri, **options)
end
end
def request(verb, uri, **options)

View File

@ -58,18 +58,17 @@ module HTTPX
case args.size
when 1
reqs = args.first
requests = reqs.map do |verb, uri, opts = {}|
__build_req(verb, uri, options.merge(opts))
requests = reqs.map do |verb, uri|
__build_req(verb, uri, options)
end
when 2, 3
verb, uris, opts = args
opts ||= {}
verb, *uris = args
if uris.respond_to?(:each)
requests = uris.map do |uri|
__build_req(verb, uri, options.merge(opts))
__build_req(verb, uri, options)
end
else
[ __build_req(verb, uris, options.merge(opts)) ]
[ __build_req(verb, uris, options) ]
end
else
raise ArgumentError, "unsupported number of arguments"