Class: X::Connection
- Inherits:
-
Object
- Object
- X::Connection
- Extended by:
- Forwardable
- Defined in:
- lib/x/connection.rb
Overview
Manages HTTP connections to the X API
Constant Summary collapse
- DEFAULT_HOST =
Default host for the X API
"api.twitter.com".freeze
- DEFAULT_PORT =
Default port for HTTPS connections
443- DEFAULT_OPEN_TIMEOUT =
Default timeout for opening connections in seconds
60- DEFAULT_READ_TIMEOUT =
Default timeout for reading responses in seconds
60- DEFAULT_WRITE_TIMEOUT =
Default timeout for writing requests in seconds
60- DEFAULT_DEBUG_OUTPUT =
Default debug output destination
File.open(IO::NULL, "w")
- NETWORK_ERRORS =
Network errors that should be wrapped in NetworkError
[ Errno::ECONNREFUSED, Errno::ECONNRESET, Net::OpenTimeout, Net::ReadTimeout, OpenSSL::SSL::SSLError ].freeze
Instance Attribute Summary collapse
-
#debug_output ⇒ IO
The IO object for debug output.
-
#open_timeout ⇒ Integer
The timeout for opening connections in seconds.
-
#proxy_uri ⇒ URI?
readonly
The parsed proxy URI.
-
#proxy_url ⇒ String?
The proxy URL for requests.
-
#read_timeout ⇒ Integer
The timeout for reading responses in seconds.
-
#write_timeout ⇒ Integer
The timeout for writing requests in seconds.
Instance Method Summary collapse
-
#initialize(open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT, write_timeout: DEFAULT_WRITE_TIMEOUT, debug_output: DEFAULT_DEBUG_OUTPUT, proxy_url: nil) ⇒ Connection
constructor
Initialize a new connection.
-
#perform(request:) ⇒ Net::HTTPResponse
Perform an HTTP request.
Constructor Details
#initialize(open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT, write_timeout: DEFAULT_WRITE_TIMEOUT, debug_output: DEFAULT_DEBUG_OUTPUT, proxy_url: nil) ⇒ Connection
Initialize a new connection
94 95 96 97 98 99 100 101 |
# File 'lib/x/connection.rb', line 94 def initialize(open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT, write_timeout: DEFAULT_WRITE_TIMEOUT, debug_output: DEFAULT_DEBUG_OUTPUT, proxy_url: nil) @open_timeout = open_timeout @read_timeout = read_timeout @write_timeout = write_timeout @debug_output = debug_output self.proxy_url = proxy_url unless proxy_url.nil? end |
Instance Attribute Details
#debug_output ⇒ IO
The IO object for debug output
60 61 62 |
# File 'lib/x/connection.rb', line 60 def debug_output @debug_output end |
#open_timeout ⇒ Integer
The timeout for opening connections in seconds
39 40 41 |
# File 'lib/x/connection.rb', line 39 def open_timeout @open_timeout end |
#proxy_uri ⇒ URI? (readonly)
The parsed proxy URI
74 75 76 |
# File 'lib/x/connection.rb', line 74 def proxy_uri @proxy_uri end |
#proxy_url ⇒ String?
The proxy URL for requests
67 68 69 |
# File 'lib/x/connection.rb', line 67 def proxy_url @proxy_url end |
#read_timeout ⇒ Integer
The timeout for reading responses in seconds
46 47 48 |
# File 'lib/x/connection.rb', line 46 def read_timeout @read_timeout end |
#write_timeout ⇒ Integer
The timeout for writing requests in seconds
53 54 55 |
# File 'lib/x/connection.rb', line 53 def write_timeout @write_timeout end |
Instance Method Details
#perform(request:) ⇒ Net::HTTPResponse
Perform an HTTP request
111 112 113 114 115 116 117 118 119 |
# File 'lib/x/connection.rb', line 111 def perform(request:) host = request.uri.host || DEFAULT_HOST port = request.uri.port || DEFAULT_PORT http_client = build_http_client(host, port) http_client.use_ssl = request.uri.scheme.eql?("https") http_client.request(request) rescue *NETWORK_ERRORS => e raise NetworkError, "Network error: #{e}" end |