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, logger: nil) ⇒ JsonHttpTransport
constructor
A new instance of JsonHttpTransport.
Constructor Details
#initialize(http_client:, extra_headers: {}, timeout_ms: nil, logger: nil) ⇒ JsonHttpTransport
Returns a new instance of JsonHttpTransport.
111 112 113 114 115 116 |
# File 'lib/pinot/transport.rb', line 111 def initialize(http_client:, extra_headers: {}, timeout_ms: nil, logger: nil) @http_client = http_client @extra_headers = extra_headers @timeout_ms = timeout_ms @logger = logger end |
Instance Method Details
#execute(broker_address, request) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/pinot/transport.rb', line 118 def execute(broker_address, request) logger.debug "Pinot query to #{broker_address}: #{request.query}" 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 logger.error "Pinot broker returned HTTP #{resp.code}" raise TransportError, "http exception with HTTP status code #{resp.code}" end begin BrokerResponse.from_json(resp.body) rescue JSON::ParserError => e raise e. end end |