Class: Pinot::JsonHttpTransport
- Inherits:
-
Object
- Object
- Pinot::JsonHttpTransport
- Defined in:
- lib/pinot/transport.rb
Constant Summary collapse
- DEFAULT_HEADERS =
{ "Content-Type" => "application/json; charset=utf-8" }.freeze
Instance Method Summary collapse
- #execute(broker_address, request) ⇒ Object
-
#initialize(http_client:, extra_headers: {}, timeout_ms: nil) ⇒ JsonHttpTransport
constructor
A new instance of JsonHttpTransport.
Constructor Details
#initialize(http_client:, extra_headers: {}, timeout_ms: nil) ⇒ JsonHttpTransport
Returns a new instance of JsonHttpTransport.
45 46 47 48 49 |
# File 'lib/pinot/transport.rb', line 45 def initialize(http_client:, extra_headers: {}, timeout_ms: nil) @http_client = http_client @extra_headers = extra_headers @timeout_ms = timeout_ms end |
Instance Method Details
#execute(broker_address, request) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pinot/transport.rb', line 51 def execute(broker_address, request) url = build_url(broker_address, request.query_format) body = build_body(request) headers = DEFAULT_HEADERS .merge(@extra_headers) .merge("X-Correlation-Id" => SecureRandom.uuid) resp = @http_client.post(url, body: body, headers: headers) unless resp.code.to_i == 200 raise "http exception with HTTP status code #{resp.code}" end begin BrokerResponse.from_json(resp.body) rescue JSON::ParserError => e raise e. end end |