vector/sinks/honeycomb/
service.rs1use bytes::Bytes;
4use http::{Request, Uri};
5use snafu::ResultExt;
6use vector_lib::sensitive_string::SensitiveString;
7
8use super::config::HTTP_HEADER_HONEYCOMB;
9use crate::sinks::{
10 HTTPRequestBuilderSnafu,
11 util::{
12 buffer::compression::Compression,
13 http::{HttpRequest, HttpServiceRequestBuilder},
14 },
15};
16
17#[derive(Debug, Clone)]
18pub(super) struct HoneycombSvcRequestBuilder {
19 pub(super) uri: Uri,
20 pub(super) api_key: SensitiveString,
21 pub(super) compression: Compression,
22}
23
24impl HttpServiceRequestBuilder<()> for HoneycombSvcRequestBuilder {
25 fn build(&self, mut request: HttpRequest<()>) -> Result<Request<Bytes>, crate::Error> {
26 let mut builder =
27 Request::post(&self.uri).header(HTTP_HEADER_HONEYCOMB, self.api_key.inner());
28
29 if let Some(ce) = self.compression.content_encoding() {
30 builder = builder.header("Content-Encoding".to_string(), ce.to_string());
31 }
32
33 builder
34 .body(request.take_payload())
35 .context(HTTPRequestBuilderSnafu)
36 .map_err(Into::into)
37 }
38}