use crate::blocking::RequestBuilder;
use crate::{HostMetricsRegistry, RefreshHandle, UserAgent};
use conjure_error::Error;
use conjure_runtime_config::ServiceConfig;
use hyper::Method;
use std::sync::Arc;
use witchcraft_metrics::MetricRegistry;
#[derive(Clone)]
pub struct Client(pub(crate) crate::Client);
impl Client {
pub fn new(
service: &str,
user_agent: UserAgent,
node_health: &Arc<HostMetricsRegistry>,
metrics: &Arc<MetricRegistry>,
config: &ServiceConfig,
) -> Result<Client, Error> {
crate::Client::new(service, user_agent, node_health, metrics, config).map(Client)
}
pub fn set_assume_idempotent(&mut self, assume_idempotent: bool) {
self.0.set_assume_idempotent(assume_idempotent);
}
pub fn assume_idempotent(&self) -> bool {
self.0.assume_idempotent()
}
pub fn set_propagate_qos_errors(&mut self, propagate_qos_errors: bool) {
self.0.set_propagate_qos_errors(propagate_qos_errors);
}
pub fn propagate_qos_errors(&self) -> bool {
self.0.propagate_qos_errors()
}
pub fn set_propagate_service_errors(&mut self, propagate_service_errors: bool) {
self.0
.set_propagate_service_errors(propagate_service_errors);
}
pub fn propagate_service_errors(&self) -> bool {
self.0.propagate_service_errors()
}
pub fn request(&self, method: Method, pattern: &'static str) -> RequestBuilder<'_> {
RequestBuilder::new(self, method, pattern)
}
pub fn get(&self, pattern: &'static str) -> RequestBuilder<'_> {
self.request(Method::GET, pattern)
}
pub fn post(&self, pattern: &'static str) -> RequestBuilder<'_> {
self.request(Method::POST, pattern)
}
pub fn put(&self, pattern: &'static str) -> RequestBuilder<'_> {
self.request(Method::PUT, pattern)
}
pub fn delete(&self, pattern: &'static str) -> RequestBuilder<'_> {
self.request(Method::DELETE, pattern)
}
pub fn patch(&self, pattern: &'static str) -> RequestBuilder<'_> {
self.request(Method::PATCH, pattern)
}
pub fn refresh_handle(&self) -> RefreshHandle {
self.0.refresh_handle()
}
}