Skip to content
Snippets Groups Projects

Resolve "feat: raw json (string or serde_json::Value) instead of structs"

5 files
+ 52
14
Compare changes
  • Side-by-side
  • Inline
Files
5
+ 25
5
@@ -12,7 +12,7 @@ use std::fmt::Display;
use prometheus_http_query::Client;
use query::{ops::Operable, IntoQuery};
use reqwest::header::HeaderValue;
use result::{IntoQryResult, QryResult};
use result::{IntoResult, QryResult, RawResult};
use seal::Sealed;
use url::Url;
@@ -86,8 +86,28 @@ impl QueryManager {
builder = builder.timeout(*timeout);
}
match self.method {
Method::Get => builder.get().await.into_qry_result(),
Method::Post => builder.post().await.into_qry_result(),
Method::Get => builder.get().await.into_result(),
Method::Post => builder.post().await.into_result(),
}
}
/// Send a query to the Prometheus server and retreive raw response ([`reqwest::Response`])
///
/// This method accepts any type that implements the `IntoQuery` trait.
/// The trait is implemented for `&str`, `String`, `&String`, and __mquery's__
/// internal types such as [`query::Metric`], [`query::Scalar`] and others that result
/// from the query builder API.
pub async fn query_raw<Q: IntoQuery>(&self, query: Q) -> RawResult {
let mut builder = self.client.query(query.into_query().as_ref());
if let Some((name, val)) = self.auth.get_header() {
builder = builder.header(name, val);
}
if let Some(timeout) = self.timeout.as_ref() {
builder = builder.timeout(*timeout);
}
match self.method {
Method::Get => builder.get_raw().await.into_result(),
Method::Post => builder.post_raw().await.into_result(),
}
}
@@ -146,8 +166,8 @@ impl QueryManager {
builder = builder.timeout(*timeout);
}
match self.method {
Method::Get => builder.get().await.into_qry_result(),
Method::Post => builder.post().await.into_qry_result(),
Method::Get => builder.get().await.into_result(),
Method::Post => builder.post().await.into_result(),
}
}
}
Loading