def request(method, uri, *args, &block)
query, body, header, follow_redirect = keyword_argument(args, :query, :body, :header, :follow_redirect)
if [:post, :put].include?(method)
body ||= ''
end
if method == :propfind
header ||= PROPFIND_DEFAULT_EXTHEADER
else
header ||= {}
end
uri = urify(uri)
if block
filtered_block = proc { |res, str|
block.call(str)
}
end
if follow_redirect
follow_redirect(method, uri, query, body, header, &block)
else
do_request(method, uri, query, body, header, &filtered_block)
end
end