1#[cfg(feature = "actix-base")]
5mod actix;
6mod extensions;
7pub mod models;
8#[cfg(feature = "codegen")]
9mod resolver;
10pub mod schema;
11
12#[cfg(feature = "actix-base")]
13pub use self::actix::{
14 AcceptedJson, CreatedJson, NoContent, OperationModifier, ResponderWrapper, ResponseWrapper,
15};
16
17#[cfg(feature = "actix4")]
18pub use self::actix::HttpResponseWrapper;
19
20pub use self::{
21 models::{DefaultSchema, ResolvableApi},
22 schema::Schema,
23};
24pub use paperclip_macros::*;
25pub use serde_json;
26
27#[cfg(feature = "codegen")]
28pub(crate) use self::resolver::Resolver;
29#[cfg(feature = "codegen")]
30pub(crate) use crate::error::ValidationError;
31
32#[cfg(feature = "codegen")]
33impl<S: Schema + Default> ResolvableApi<S> {
34 pub fn resolve(self) -> Result<ResolvableApi<S>, ValidationError> {
41 let mut resolver = Resolver::from((
42 self.definitions,
43 self.paths,
44 self.parameters,
45 self.responses,
46 ));
47 resolver.resolve()?;
48 Ok(ResolvableApi {
49 swagger: self.swagger,
50 info: self.info,
51 definitions: resolver.defs,
52 paths: resolver.paths,
53 base_path: self.base_path,
54 host: self.host,
55 schemes: self.schemes,
56 consumes: self.consumes,
57 produces: self.produces,
58 coders: self.coders,
59 support_crates: self.support_crates,
60 parameters: resolver.params,
61 responses: resolver.resp,
62 spec_format: self.spec_format,
63 external_docs: self.external_docs,
64 security: self.security,
65 security_definitions: self.security_definitions,
66 tags: self.tags,
67 extensions: self.extensions,
68 })
69 }
70}