use crate::service::{ProvidedArgument, RequiredArgument};
use serde::Serialize;
macro_rules! return_type {
($self:ident) => {
TimeserviceRequest {
placeid: $self.placeid,
query: $self.query,
qlimit: $self.qlimit,
geo: $self.geo,
lang: $self.lang,
radius: $self.radius,
sun: $self.sun,
time: $self.time,
timechanges: $self.timechanges,
tz: $self.tz,
verbosetime: $self.verbosetime,
_a: Default::default(),
}
};
}
#[derive(Default, Serialize)]
pub struct TimeserviceRequest<A = ProvidedArgument> {
placeid: Option<String>,
query: Option<String>,
qlimit: Option<u8>,
geo: Option<u8>,
lang: Option<String>,
radius: Option<i32>,
sun: Option<u8>,
time: Option<u8>,
timechanges: Option<u8>,
tz: Option<u8>,
verbosetime: Option<u8>,
_a: std::marker::PhantomData<A>,
}
impl TimeserviceRequest {
pub fn new() -> TimeserviceRequest<RequiredArgument> {
Default::default()
}
}
impl<A> TimeserviceRequest<A> {
pub fn set_placeid(
mut self,
placeid: impl Into<String>,
) -> TimeserviceRequest<ProvidedArgument> {
self.placeid.insert(placeid.into());
return_type!(self)
}
pub fn set_query(mut self, query: impl Into<String>) -> TimeserviceRequest<ProvidedArgument> {
self.query.insert(query.into());
return_type!(self)
}
pub fn set_qlimit(mut self, qlimit: u8) -> Self {
self.qlimit.insert(qlimit);
self
}
pub fn set_geo(mut self, enable: bool) -> Self {
self.geo.insert(enable.into());
self
}
pub fn set_lang(mut self, lang: impl Into<String>) -> Self {
self.lang.insert(lang.into());
self
}
pub fn set_radius(mut self, radius: i32) -> Self {
self.radius.insert(radius);
self
}
pub fn set_sun(mut self, enable: bool) -> Self {
self.sun.insert(enable.into());
self
}
pub fn set_time(mut self, enable: bool) -> Self {
self.time.insert(enable.into());
self
}
pub fn set_timechanges(mut self, enable: bool) -> Self {
self.timechanges.insert(enable.into());
self
}
pub fn set_tz(mut self, enable: bool) -> Self {
self.tz.insert(enable.into());
self
}
pub fn set_verbosetime(mut self, enable: bool) -> Self {
self.verbosetime.insert(enable.into());
self
}
}