#![allow(missing_docs, trivial_casts, unused_variables, unused_mut, unused_imports, unused_extern_crates, non_camel_case_types)] use chrono::NaiveDate; use async_trait::async_trait; use futures::Stream; use std::error::Error; use std::task::{Poll, Context}; use swagger::{ApiError, ContextWrapper}; use serde::{Serialize, Deserialize}; type ServiceError = Box; pub const BASE_PATH: &'static str = ""; pub const API_VERSION: &'static str = "0.8.1"; /// API #[async_trait] pub trait Api { fn poll_ready(&self, _cx: &mut Context) -> Poll>> { Poll::Ready(Ok(())) } } /// API where `Context` isn't passed on every API call #[async_trait] pub trait ApiNoContext { fn poll_ready(&self, _cx: &mut Context) -> Poll>>; fn context(&self) -> &C; } /// Trait to extend an API to make it easy to bind it to a context. pub trait ContextWrapperExt where Self: Sized { /// Binds this API to a context. fn with_context(self: Self, context: C) -> ContextWrapper; } impl + Send + Sync, C: Clone + Send + Sync> ContextWrapperExt for T { fn with_context(self: T, context: C) -> ContextWrapper { ContextWrapper::::new(self, context) } } #[async_trait] impl + Send + Sync, C: Clone + Send + Sync> ApiNoContext for ContextWrapper { fn poll_ready(&self, cx: &mut Context) -> Poll> { self.api().poll_ready(cx) } fn context(&self) -> &C { ContextWrapper::context(self) } } #[cfg(feature = "client")] pub mod client; // Re-export Client as a top-level name #[cfg(feature = "client")] pub use client::Client; #[cfg(feature = "server")] pub mod server; // Re-export router() as a top-level name #[cfg(feature = "server")] pub use self::server::Service; #[cfg(feature = "server")] pub mod context; pub mod models; #[cfg(any(feature = "client", feature = "server"))] pub(crate) mod header;