vector/sinks/honeycomb/
request_builder.rs1use bytes::Bytes;
4use std::io;
5
6use crate::sinks::{prelude::*, util::http::HttpRequest};
7
8use super::encoder::HoneycombEncoder;
9
10pub(super) struct HoneycombRequestBuilder {
11 pub(super) encoder: HoneycombEncoder,
12 pub(super) compression: Compression,
13}
14
15impl RequestBuilder<Vec<Event>> for HoneycombRequestBuilder {
16 type Metadata = EventFinalizers;
17 type Events = Vec<Event>;
18 type Encoder = HoneycombEncoder;
19 type Payload = Bytes;
20 type Request = HttpRequest<()>;
21 type Error = io::Error;
22
23 fn compression(&self) -> Compression {
24 self.compression
25 }
26
27 fn encoder(&self) -> &Self::Encoder {
28 &self.encoder
29 }
30
31 fn split_input(
32 &self,
33 mut events: Vec<Event>,
34 ) -> (Self::Metadata, RequestMetadataBuilder, Self::Events) {
35 let finalizers = events.take_finalizers();
36 let builder = RequestMetadataBuilder::from_events(&events);
37 (finalizers, builder, events)
38 }
39
40 fn build_request(
41 &self,
42 metadata: Self::Metadata,
43 request_metadata: RequestMetadata,
44 payload: EncodeResult<Self::Payload>,
45 ) -> Self::Request {
46 HttpRequest::new(payload.into_payload(), metadata, request_metadata, ())
47 }
48}