Class: Aptabase::Transport
- Inherits:
-
Object
- Object
- Aptabase::Transport
- Defined in:
- lib/aptabase/transport.rb
Overview
Thin HTTP layer over Net::HTTP. Raises NetworkError for any failure so the client only has one error type to handle.
Constant Summary collapse
- EVENTS_PATH =
"/api/v0/events"
Instance Method Summary collapse
-
#initialize(base_url:, app_key:, timeout: 30.0) ⇒ Transport
constructor
A new instance of Transport.
- #post_events(payload) ⇒ Object
Constructor Details
#initialize(base_url:, app_key:, timeout: 30.0) ⇒ Transport
Returns a new instance of Transport.
14 15 16 17 18 |
# File 'lib/aptabase/transport.rb', line 14 def initialize(base_url:, app_key:, timeout: 30.0) @uri = URI.parse(base_url.chomp("/") + EVENTS_PATH) @app_key = app_key @timeout = timeout end |
Instance Method Details
#post_events(payload) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/aptabase/transport.rb', line 20 def post_events(payload) request = Net::HTTP::Post.new(@uri) request["App-Key"] = @app_key request["Content-Type"] = "application/json" request.body = JSON.generate(payload) response = Net::HTTP.start( @uri.host, @uri.port, use_ssl: @uri.scheme == "https", open_timeout: @timeout, read_timeout: @timeout, write_timeout: @timeout ) { |http| http.request(request) } return if response.is_a?(Net::HTTPSuccess) raise NetworkError.new( "HTTP error #{response.code}: #{response.body}", status_code: response.code.to_i ) rescue Timeout::Error, SystemCallError, SocketError, IOError, OpenSSL::SSL::SSLError => e raise NetworkError, "Network error: #{e.}" end |