class Datadog::Transport::HTTP::Adapters::Net
Adapter for Net::HTTP
Constants
- DEFAULT_TIMEOUT
Attributes
hostname[R]
port[R]
ssl[R]
timeout[R]
Public Class Methods
new(hostname, port, options = {})
click to toggle source
# File lib/ddtrace/transport/http/adapters/net.rb, line 19 def initialize(hostname, port, options = {}) @hostname = hostname @port = port @timeout = options[:timeout] || DEFAULT_TIMEOUT @ssl = options.key?(:ssl) ? options[:ssl] == true : false end
Public Instance Methods
call(env)
click to toggle source
# File lib/ddtrace/transport/http/adapters/net.rb, line 38 def call(env) if respond_to?(env.verb) send(env.verb, env) else raise UnknownHTTPMethod, env end end
open(&block)
click to toggle source
# File lib/ddtrace/transport/http/adapters/net.rb, line 26 def open(&block) # DEV Initializing +Net::HTTP+ directly help us avoid expensive # options processing done in +Net::HTTP.start+: # https://github.com/ruby/ruby/blob/b2d96abb42abbe2e01f010ffc9ac51f0f9a50002/lib/net/http.rb#L614-L618 req = ::Net::HTTP.new(hostname, port, nil) req.use_ssl = ssl req.open_timeout = req.read_timeout = timeout req.start(&block) end
post(env)
click to toggle source
# File lib/ddtrace/transport/http/adapters/net.rb, line 46 def post(env) post = nil if env.form.nil? || env.form.empty? post = ::Net::HTTP::Post.new(env.path, env.headers) post.body = env.body else post = ::Datadog::Vendor::Net::HTTP::Post::Multipart.new( env.path, env.form, env.headers ) end # Connect and send the request http_response = open do |http| http.request(post) end # Build and return response Response.new(http_response) end
url()
click to toggle source
# File lib/ddtrace/transport/http/adapters/net.rb, line 69 def url "http://#{hostname}:#{port}?timeout=#{timeout}" end