use crate::Result;
#[derive(Clone, Debug)]
pub struct WebSecurityScanner<T>
where
T: super::stub::WebSecurityScanner + std::fmt::Debug + Send + Sync,
{
inner: T,
duration: gaxi::observability::DurationMetric,
}
impl<T> WebSecurityScanner<T>
where
T: super::stub::WebSecurityScanner + std::fmt::Debug + Send + Sync,
{
pub fn new(inner: T) -> Self {
Self {
inner,
duration: gaxi::observability::DurationMetric::new(&info::INSTRUMENTATION_CLIENT_INFO),
}
}
}
impl<T> super::stub::WebSecurityScanner for WebSecurityScanner<T>
where
T: super::stub::WebSecurityScanner + std::fmt::Debug + Send + Sync,
{
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_scan_config(
&self,
req: crate::model::CreateScanConfigRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ScanConfig>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::create_scan_config",
self.inner.create_scan_config(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_scan_config(
&self,
req: crate::model::DeleteScanConfigRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::delete_scan_config",
self.inner.delete_scan_config(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_scan_config(
&self,
req: crate::model::GetScanConfigRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ScanConfig>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::get_scan_config",
self.inner.get_scan_config(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_scan_configs(
&self,
req: crate::model::ListScanConfigsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListScanConfigsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::list_scan_configs",
self.inner.list_scan_configs(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn update_scan_config(
&self,
req: crate::model::UpdateScanConfigRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ScanConfig>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::update_scan_config",
self.inner.update_scan_config(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn start_scan_run(
&self,
req: crate::model::StartScanRunRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ScanRun>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::start_scan_run",
self.inner.start_scan_run(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_scan_run(
&self,
req: crate::model::GetScanRunRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ScanRun>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::get_scan_run",
self.inner.get_scan_run(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_scan_runs(
&self,
req: crate::model::ListScanRunsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListScanRunsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::list_scan_runs",
self.inner.list_scan_runs(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn stop_scan_run(
&self,
req: crate::model::StopScanRunRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ScanRun>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::stop_scan_run",
self.inner.stop_scan_run(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_crawled_urls(
&self,
req: crate::model::ListCrawledUrlsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListCrawledUrlsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::list_crawled_urls",
self.inner.list_crawled_urls(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_finding(
&self,
req: crate::model::GetFindingRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Finding>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::get_finding",
self.inner.get_finding(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_findings(
&self,
req: crate::model::ListFindingsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListFindingsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::list_findings",
self.inner.list_findings(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_finding_type_stats(
&self,
req: crate::model::ListFindingTypeStatsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListFindingTypeStatsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::WebSecurityScanner::list_finding_type_stats",
self.inner.list_finding_type_stats(req, options));
pending.await
}
}
pub(crate) mod info {
const NAME: &str = env!("CARGO_PKG_NAME");
const VERSION: &str = env!("CARGO_PKG_VERSION");
pub(crate) static INSTRUMENTATION_CLIENT_INFO: std::sync::LazyLock<
gaxi::options::InstrumentationClientInfo,
> = std::sync::LazyLock::new(|| {
let mut info = gaxi::options::InstrumentationClientInfo::default();
info.service_name = "websecurityscanner";
info.client_version = VERSION;
info.client_artifact = NAME;
info.default_host = "websecurityscanner";
info
});
}