use crate::{
cores::{endpoint::Endpoint, params::QueryParams},
types::common::PaginationObject,
};
use derive_builder::Builder;
use ethers_core::types::Address;
use http::Method;
use serde::{Deserialize, Serialize};
#[derive(Default, Debug, Builder, Clone, Serialize, Deserialize)]
#[builder(setter(into, strip_option))]
pub struct GetWebhookAddresses {
#[builder(setter)]
webhook_id: String,
#[builder(default)]
limit: Option<u64>,
#[builder(default)]
after: Option<String>,
}
impl GetWebhookAddresses {
pub fn builder() -> GetWebhookAddressesBuilder {
GetWebhookAddressesBuilder::default()
}
}
impl Endpoint for GetWebhookAddresses {
fn method(&self) -> http::Method {
Method::GET
}
fn endpoint(&self) -> std::borrow::Cow<'static, str> {
"api/webhook-addresses".into()
}
fn parameters(&self) -> crate::cores::params::QueryParams<'_> {
let mut params = QueryParams::default();
params.push("webhook_id", self.webhook_id.clone());
params.push_opt("limit", self.limit);
params.push_opt("after", self.after.clone());
params
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetWebhookAddressesResponse {
data: Vec<Address>,
pagination: PaginationObject,
}
impl GetWebhookAddressesResponse {
pub fn data(&self) -> Vec<Address> {
self.data.clone()
}
pub fn pagination(&self) -> PaginationObject {
self.pagination.clone()
}
}