class WADL::HTTPRequest
Constants
- DEFAULT_CONTENT_TYPE
- DEFAULT_METHOD
- DEFAULT_USER_AGENT
- OAUTH_HEADER
- OAUTH_PREFIX
Attributes
http[RW]
uri[RW]
Public Class Methods
execute(uri, *args)
click to toggle source
# File lib/wadl/http_request.rb, line 48 def execute(uri, *args) new(uri).execute(*args) end
new(uri)
click to toggle source
# File lib/wadl/http_request.rb, line 63 def initialize(uri) self.uri = URI(uri) end
oauth_header(args)
click to toggle source
# File lib/wadl/http_request.rb, line 52 def oauth_header(args) return unless valid_oauth_args?(args) [OAUTH_HEADER, "#{OAUTH_PREFIX}#{args.to_yaml}"] end
valid_oauth_args?(args)
click to toggle source
# File lib/wadl/http_request.rb, line 57 def valid_oauth_args?(args) args.is_a?(Array) && args.size == 4 end
Public Instance Methods
execute(*args)
click to toggle source
# File lib/wadl/http_request.rb, line 85 def execute(*args) start unless started? req = prepare_request(*args) res = http.request(req) HTTPResponse.new(res) end
finish()
click to toggle source
# File lib/wadl/http_request.rb, line 76 def finish http.finish if started? self end
start()
click to toggle source
# File lib/wadl/http_request.rb, line 67 def start self.http = Net::HTTP.start( uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) self end
started?()
click to toggle source
# File lib/wadl/http_request.rb, line 81 def started? http && http.started? end
Private Instance Methods
make_request(method)
click to toggle source
# File lib/wadl/http_request.rb, line 107 def make_request(method) Net::HTTP.const_get(method.to_s.capitalize).new(uri) rescue NameError raise ArgumentError, "method not supported: #{method}" end
prepare_request(method, body, headers)
click to toggle source
# File lib/wadl/http_request.rb, line 98 def prepare_request(method, body, headers) req = make_request(method || DEFAULT_METHOD) req.body = body if req.request_body_permitted? set_headers(req, headers) req end
set_headers(req, headers)
click to toggle source
# File lib/wadl/http_request.rb, line 113 def set_headers(req, headers) set_oauth_header(req, headers) headers['User-Agent'] ||= DEFAULT_USER_AGENT headers['Content-Type'] ||= DEFAULT_CONTENT_TYPE headers.each { |key, value| Array(value).each { |val| req.add_field(key, val) } } end
set_oauth_header(req, headers)
click to toggle source
# File lib/wadl/http_request.rb, line 124 def set_oauth_header(req, headers) args = SafeYAML.load($') if headers[OAUTH_HEADER] =~ /\A#{OAUTH_PREFIX}/ return unless self.class.valid_oauth_args?(args) headers[OAUTH_HEADER] = OAuth::Client::Helper.new(req, request_uri: req.request_uri, consumer: consumer = OAuth::Consumer.new(*args[0, 2]), token: OAuth::AccessToken.new(consumer, *args[2, 2]), scheme: 'header', signature_method: 'HMAC-SHA1' ).header end