vector/sinks/honeycomb/
request_builder.rs

1//! `RequestBuilder` implementation for the `honeycomb` sink.
2
3use 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}