use futures::{future, stream, Future, Stream}; use hyper; use hyper::header::{HeaderName, HeaderValue, CONTENT_TYPE}; use hyper::{Body, Error, HeaderMap, Request, Response, StatusCode}; use log::warn; use serde_json; #[allow(unused_imports)] use std::convert::{TryFrom, TryInto}; use std::io; use std::marker::PhantomData; #[allow(unused_imports)] use swagger; pub use swagger::auth::Authorization; use swagger::auth::Scopes; use swagger::context::ContextualPayload; use swagger::{ApiError, Has, RequestParser, XSpanIdString}; use url::form_urlencoded; use crate::header; #[allow(unused_imports)] use crate::models; pub use crate::context; use crate::{ AcceptEditgroupResponse, Api, AuthCheckResponse, AuthOidcResponse, CreateAuthTokenResponse, CreateContainerAutoBatchResponse, CreateContainerResponse, CreateCreatorAutoBatchResponse, CreateCreatorResponse, CreateEditgroupAnnotationResponse, CreateEditgroupResponse, CreateFileAutoBatchResponse, CreateFileResponse, CreateFilesetAutoBatchResponse, CreateFilesetResponse, CreateReleaseAutoBatchResponse, CreateReleaseResponse, CreateWebcaptureAutoBatchResponse, CreateWebcaptureResponse, CreateWorkAutoBatchResponse, CreateWorkResponse, DeleteContainerEditResponse, DeleteContainerResponse, DeleteCreatorEditResponse, DeleteCreatorResponse, DeleteFileEditResponse, DeleteFileResponse, DeleteFilesetEditResponse, DeleteFilesetResponse, DeleteReleaseEditResponse, DeleteReleaseResponse, DeleteWebcaptureEditResponse, DeleteWebcaptureResponse, DeleteWorkEditResponse, DeleteWorkResponse, GetChangelogEntryResponse, GetChangelogResponse, GetContainerEditResponse, GetContainerHistoryResponse, GetContainerRedirectsResponse, GetContainerResponse, GetContainerRevisionResponse, GetCreatorEditResponse, GetCreatorHistoryResponse, GetCreatorRedirectsResponse, GetCreatorReleasesResponse, GetCreatorResponse, GetCreatorRevisionResponse, GetEditgroupAnnotationsResponse, GetEditgroupResponse, GetEditgroupsReviewableResponse, GetEditorAnnotationsResponse, GetEditorEditgroupsResponse, GetEditorResponse, GetFileEditResponse, GetFileHistoryResponse, GetFileRedirectsResponse, GetFileResponse, GetFileRevisionResponse, GetFilesetEditResponse, GetFilesetHistoryResponse, GetFilesetRedirectsResponse, GetFilesetResponse, GetFilesetRevisionResponse, GetReleaseEditResponse, GetReleaseFilesResponse, GetReleaseFilesetsResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetReleaseWebcapturesResponse, GetWebcaptureEditResponse, GetWebcaptureHistoryResponse, GetWebcaptureRedirectsResponse, GetWebcaptureResponse, GetWebcaptureRevisionResponse, GetWorkEditResponse, GetWorkHistoryResponse, GetWorkRedirectsResponse, GetWorkReleasesResponse, GetWorkResponse, GetWorkRevisionResponse, LookupContainerResponse, LookupCreatorResponse, LookupFileResponse, LookupReleaseResponse, UpdateContainerResponse, UpdateCreatorResponse, UpdateEditgroupResponse, UpdateEditorResponse, UpdateFileResponse, UpdateFilesetResponse, UpdateReleaseResponse, UpdateWebcaptureResponse, UpdateWorkResponse, }; mod paths { use lazy_static::lazy_static; lazy_static! { pub static ref GLOBAL_REGEX_SET: regex::RegexSet = regex::RegexSet::new(vec![ r"^/v0/auth/check$", r"^/v0/auth/oidc$", r"^/v0/auth/token/(?P[^/?#]*)$", r"^/v0/changelog$", r"^/v0/changelog/(?P[^/?#]*)$", r"^/v0/container/edit/(?P[^/?#]*)$", r"^/v0/container/lookup$", r"^/v0/container/rev/(?P[^/?#]*)$", r"^/v0/container/(?P[^/?#]*)$", r"^/v0/container/(?P[^/?#]*)/history$", r"^/v0/container/(?P[^/?#]*)/redirects$", r"^/v0/creator/edit/(?P[^/?#]*)$", r"^/v0/creator/lookup$", r"^/v0/creator/rev/(?P[^/?#]*)$", r"^/v0/creator/(?P[^/?#]*)$", r"^/v0/creator/(?P[^/?#]*)/history$", r"^/v0/creator/(?P[^/?#]*)/redirects$", r"^/v0/creator/(?P[^/?#]*)/releases$", r"^/v0/editgroup$", r"^/v0/editgroup/auto/container/batch$", r"^/v0/editgroup/auto/creator/batch$", r"^/v0/editgroup/auto/file/batch$", r"^/v0/editgroup/auto/fileset/batch$", r"^/v0/editgroup/auto/release/batch$", r"^/v0/editgroup/auto/webcapture/batch$", r"^/v0/editgroup/auto/work/batch$", r"^/v0/editgroup/reviewable$", r"^/v0/editgroup/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/accept$", r"^/v0/editgroup/(?P[^/?#]*)/annotation$", r"^/v0/editgroup/(?P[^/?#]*)/annotations$", r"^/v0/editgroup/(?P[^/?#]*)/container$", r"^/v0/editgroup/(?P[^/?#]*)/container/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/container/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/creator$", r"^/v0/editgroup/(?P[^/?#]*)/creator/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/creator/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/file$", r"^/v0/editgroup/(?P[^/?#]*)/file/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/file/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/fileset$", r"^/v0/editgroup/(?P[^/?#]*)/fileset/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/fileset/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/release$", r"^/v0/editgroup/(?P[^/?#]*)/release/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/release/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/webcapture$", r"^/v0/editgroup/(?P[^/?#]*)/webcapture/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/webcapture/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/work$", r"^/v0/editgroup/(?P[^/?#]*)/work/edit/(?P[^/?#]*)$", r"^/v0/editgroup/(?P[^/?#]*)/work/(?P[^/?#]*)$", r"^/v0/editor/(?P[^/?#]*)$", r"^/v0/editor/(?P[^/?#]*)/annotations$", r"^/v0/editor/(?P[^/?#]*)/editgroups$", r"^/v0/file/edit/(?P[^/?#]*)$", r"^/v0/file/lookup$", r"^/v0/file/rev/(?P[^/?#]*)$", r"^/v0/file/(?P[^/?#]*)$", r"^/v0/file/(?P[^/?#]*)/history$", r"^/v0/file/(?P[^/?#]*)/redirects$", r"^/v0/fileset/edit/(?P[^/?#]*)$", r"^/v0/fileset/rev/(?P[^/?#]*)$", r"^/v0/fileset/(?P[^/?#]*)$", r"^/v0/fileset/(?P[^/?#]*)/history$", r"^/v0/fileset/(?P[^/?#]*)/redirects$", r"^/v0/release/edit/(?P[^/?#]*)$", r"^/v0/release/lookup$", r"^/v0/release/rev/(?P[^/?#]*)$", r"^/v0/release/(?P[^/?#]*)$", r"^/v0/release/(?P[^/?#]*)/files$", r"^/v0/release/(?P[^/?#]*)/filesets$", r"^/v0/release/(?P[^/?#]*)/history$", r"^/v0/release/(?P[^/?#]*)/redirects$", r"^/v0/release/(?P[^/?#]*)/webcaptures$", r"^/v0/webcapture/edit/(?P[^/?#]*)$", r"^/v0/webcapture/rev/(?P[^/?#]*)$", r"^/v0/webcapture/(?P[^/?#]*)$", r"^/v0/webcapture/(?P[^/?#]*)/history$", r"^/v0/webcapture/(?P[^/?#]*)/redirects$", r"^/v0/work/edit/(?P[^/?#]*)$", r"^/v0/work/rev/(?P[^/?#]*)$", r"^/v0/work/(?P[^/?#]*)$", r"^/v0/work/(?P[^/?#]*)/history$", r"^/v0/work/(?P[^/?#]*)/redirects$", r"^/v0/work/(?P[^/?#]*)/releases$" ]) .expect("Unable to create global regex set"); } pub(crate) static ID_AUTH_CHECK: usize = 0; pub(crate) static ID_AUTH_OIDC: usize = 1; pub(crate) static ID_AUTH_TOKEN_EDITOR_ID: usize = 2; lazy_static! { pub static ref REGEX_AUTH_TOKEN_EDITOR_ID: regex::Regex = regex::Regex::new(r"^/v0/auth/token/(?P[^/?#]*)$") .expect("Unable to create regex for AUTH_TOKEN_EDITOR_ID"); } pub(crate) static ID_CHANGELOG: usize = 3; pub(crate) static ID_CHANGELOG_INDEX: usize = 4; lazy_static! { pub static ref REGEX_CHANGELOG_INDEX: regex::Regex = regex::Regex::new(r"^/v0/changelog/(?P[^/?#]*)$") .expect("Unable to create regex for CHANGELOG_INDEX"); } pub(crate) static ID_CONTAINER_EDIT_EDIT_ID: usize = 5; lazy_static! { pub static ref REGEX_CONTAINER_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/container/edit/(?P[^/?#]*)$") .expect("Unable to create regex for CONTAINER_EDIT_EDIT_ID"); } pub(crate) static ID_CONTAINER_LOOKUP: usize = 6; pub(crate) static ID_CONTAINER_REV_REV_ID: usize = 7; lazy_static! { pub static ref REGEX_CONTAINER_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/container/rev/(?P[^/?#]*)$") .expect("Unable to create regex for CONTAINER_REV_REV_ID"); } pub(crate) static ID_CONTAINER_IDENT: usize = 8; lazy_static! { pub static ref REGEX_CONTAINER_IDENT: regex::Regex = regex::Regex::new(r"^/v0/container/(?P[^/?#]*)$") .expect("Unable to create regex for CONTAINER_IDENT"); } pub(crate) static ID_CONTAINER_IDENT_HISTORY: usize = 9; lazy_static! { pub static ref REGEX_CONTAINER_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/container/(?P[^/?#]*)/history$") .expect("Unable to create regex for CONTAINER_IDENT_HISTORY"); } pub(crate) static ID_CONTAINER_IDENT_REDIRECTS: usize = 10; lazy_static! { pub static ref REGEX_CONTAINER_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/container/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for CONTAINER_IDENT_REDIRECTS"); } pub(crate) static ID_CREATOR_EDIT_EDIT_ID: usize = 11; lazy_static! { pub static ref REGEX_CREATOR_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/creator/edit/(?P[^/?#]*)$") .expect("Unable to create regex for CREATOR_EDIT_EDIT_ID"); } pub(crate) static ID_CREATOR_LOOKUP: usize = 12; pub(crate) static ID_CREATOR_REV_REV_ID: usize = 13; lazy_static! { pub static ref REGEX_CREATOR_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/creator/rev/(?P[^/?#]*)$") .expect("Unable to create regex for CREATOR_REV_REV_ID"); } pub(crate) static ID_CREATOR_IDENT: usize = 14; lazy_static! { pub static ref REGEX_CREATOR_IDENT: regex::Regex = regex::Regex::new(r"^/v0/creator/(?P[^/?#]*)$") .expect("Unable to create regex for CREATOR_IDENT"); } pub(crate) static ID_CREATOR_IDENT_HISTORY: usize = 15; lazy_static! { pub static ref REGEX_CREATOR_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/creator/(?P[^/?#]*)/history$") .expect("Unable to create regex for CREATOR_IDENT_HISTORY"); } pub(crate) static ID_CREATOR_IDENT_REDIRECTS: usize = 16; lazy_static! { pub static ref REGEX_CREATOR_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/creator/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for CREATOR_IDENT_REDIRECTS"); } pub(crate) static ID_CREATOR_IDENT_RELEASES: usize = 17; lazy_static! { pub static ref REGEX_CREATOR_IDENT_RELEASES: regex::Regex = regex::Regex::new(r"^/v0/creator/(?P[^/?#]*)/releases$") .expect("Unable to create regex for CREATOR_IDENT_RELEASES"); } pub(crate) static ID_EDITGROUP: usize = 18; pub(crate) static ID_EDITGROUP_AUTO_CONTAINER_BATCH: usize = 19; pub(crate) static ID_EDITGROUP_AUTO_CREATOR_BATCH: usize = 20; pub(crate) static ID_EDITGROUP_AUTO_FILE_BATCH: usize = 21; pub(crate) static ID_EDITGROUP_AUTO_FILESET_BATCH: usize = 22; pub(crate) static ID_EDITGROUP_AUTO_RELEASE_BATCH: usize = 23; pub(crate) static ID_EDITGROUP_AUTO_WEBCAPTURE_BATCH: usize = 24; pub(crate) static ID_EDITGROUP_AUTO_WORK_BATCH: usize = 25; pub(crate) static ID_EDITGROUP_REVIEWABLE: usize = 26; pub(crate) static ID_EDITGROUP_EDITGROUP_ID: usize = 27; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_ACCEPT: usize = 28; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_ACCEPT: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/accept$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_ACCEPT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_ANNOTATION: usize = 29; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_ANNOTATION: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/annotation$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_ANNOTATION"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_ANNOTATIONS: usize = 30; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_ANNOTATIONS: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/annotations$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_ANNOTATIONS"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_CONTAINER: usize = 31; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/container$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_CONTAINER"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID: usize = 32; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/container/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT: usize = 33; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/container/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_CREATOR: usize = 34; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_CREATOR: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/creator$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_CREATOR"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID: usize = 35; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/creator/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT: usize = 36; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/creator/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_CREATOR_IDENT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_FILE: usize = 37; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_FILE: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/file$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_FILE"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID: usize = 38; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/file/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_FILE_IDENT: usize = 39; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_FILE_IDENT: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/file/(?P[^/?#]*)$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_FILE_IDENT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_FILESET: usize = 40; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_FILESET: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/fileset$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_FILESET"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID: usize = 41; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/fileset/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_FILESET_IDENT: usize = 42; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_FILESET_IDENT: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/fileset/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_FILESET_IDENT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_RELEASE: usize = 43; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_RELEASE: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/release$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_RELEASE"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID: usize = 44; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/release/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT: usize = 45; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/release/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_RELEASE_IDENT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE: usize = 46; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/webcapture$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_WEBCAPTURE"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID: usize = 47; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/webcapture/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT: usize = 48; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/webcapture/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_WORK: usize = 49; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_WORK: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/work$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_WORK"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID: usize = 50; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID: regex::Regex = regex::Regex::new( r"^/v0/editgroup/(?P[^/?#]*)/work/edit/(?P[^/?#]*)$" ) .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID"); } pub(crate) static ID_EDITGROUP_EDITGROUP_ID_WORK_IDENT: usize = 51; lazy_static! { pub static ref REGEX_EDITGROUP_EDITGROUP_ID_WORK_IDENT: regex::Regex = regex::Regex::new(r"^/v0/editgroup/(?P[^/?#]*)/work/(?P[^/?#]*)$") .expect("Unable to create regex for EDITGROUP_EDITGROUP_ID_WORK_IDENT"); } pub(crate) static ID_EDITOR_EDITOR_ID: usize = 52; lazy_static! { pub static ref REGEX_EDITOR_EDITOR_ID: regex::Regex = regex::Regex::new(r"^/v0/editor/(?P[^/?#]*)$") .expect("Unable to create regex for EDITOR_EDITOR_ID"); } pub(crate) static ID_EDITOR_EDITOR_ID_ANNOTATIONS: usize = 53; lazy_static! { pub static ref REGEX_EDITOR_EDITOR_ID_ANNOTATIONS: regex::Regex = regex::Regex::new(r"^/v0/editor/(?P[^/?#]*)/annotations$") .expect("Unable to create regex for EDITOR_EDITOR_ID_ANNOTATIONS"); } pub(crate) static ID_EDITOR_EDITOR_ID_EDITGROUPS: usize = 54; lazy_static! { pub static ref REGEX_EDITOR_EDITOR_ID_EDITGROUPS: regex::Regex = regex::Regex::new(r"^/v0/editor/(?P[^/?#]*)/editgroups$") .expect("Unable to create regex for EDITOR_EDITOR_ID_EDITGROUPS"); } pub(crate) static ID_FILE_EDIT_EDIT_ID: usize = 55; lazy_static! { pub static ref REGEX_FILE_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/file/edit/(?P[^/?#]*)$") .expect("Unable to create regex for FILE_EDIT_EDIT_ID"); } pub(crate) static ID_FILE_LOOKUP: usize = 56; pub(crate) static ID_FILE_REV_REV_ID: usize = 57; lazy_static! { pub static ref REGEX_FILE_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/file/rev/(?P[^/?#]*)$") .expect("Unable to create regex for FILE_REV_REV_ID"); } pub(crate) static ID_FILE_IDENT: usize = 58; lazy_static! { pub static ref REGEX_FILE_IDENT: regex::Regex = regex::Regex::new(r"^/v0/file/(?P[^/?#]*)$") .expect("Unable to create regex for FILE_IDENT"); } pub(crate) static ID_FILE_IDENT_HISTORY: usize = 59; lazy_static! { pub static ref REGEX_FILE_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/file/(?P[^/?#]*)/history$") .expect("Unable to create regex for FILE_IDENT_HISTORY"); } pub(crate) static ID_FILE_IDENT_REDIRECTS: usize = 60; lazy_static! { pub static ref REGEX_FILE_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/file/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for FILE_IDENT_REDIRECTS"); } pub(crate) static ID_FILESET_EDIT_EDIT_ID: usize = 61; lazy_static! { pub static ref REGEX_FILESET_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/fileset/edit/(?P[^/?#]*)$") .expect("Unable to create regex for FILESET_EDIT_EDIT_ID"); } pub(crate) static ID_FILESET_REV_REV_ID: usize = 62; lazy_static! { pub static ref REGEX_FILESET_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/fileset/rev/(?P[^/?#]*)$") .expect("Unable to create regex for FILESET_REV_REV_ID"); } pub(crate) static ID_FILESET_IDENT: usize = 63; lazy_static! { pub static ref REGEX_FILESET_IDENT: regex::Regex = regex::Regex::new(r"^/v0/fileset/(?P[^/?#]*)$") .expect("Unable to create regex for FILESET_IDENT"); } pub(crate) static ID_FILESET_IDENT_HISTORY: usize = 64; lazy_static! { pub static ref REGEX_FILESET_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/fileset/(?P[^/?#]*)/history$") .expect("Unable to create regex for FILESET_IDENT_HISTORY"); } pub(crate) static ID_FILESET_IDENT_REDIRECTS: usize = 65; lazy_static! { pub static ref REGEX_FILESET_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/fileset/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for FILESET_IDENT_REDIRECTS"); } pub(crate) static ID_RELEASE_EDIT_EDIT_ID: usize = 66; lazy_static! { pub static ref REGEX_RELEASE_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/release/edit/(?P[^/?#]*)$") .expect("Unable to create regex for RELEASE_EDIT_EDIT_ID"); } pub(crate) static ID_RELEASE_LOOKUP: usize = 67; pub(crate) static ID_RELEASE_REV_REV_ID: usize = 68; lazy_static! { pub static ref REGEX_RELEASE_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/release/rev/(?P[^/?#]*)$") .expect("Unable to create regex for RELEASE_REV_REV_ID"); } pub(crate) static ID_RELEASE_IDENT: usize = 69; lazy_static! { pub static ref REGEX_RELEASE_IDENT: regex::Regex = regex::Regex::new(r"^/v0/release/(?P[^/?#]*)$") .expect("Unable to create regex for RELEASE_IDENT"); } pub(crate) static ID_RELEASE_IDENT_FILES: usize = 70; lazy_static! { pub static ref REGEX_RELEASE_IDENT_FILES: regex::Regex = regex::Regex::new(r"^/v0/release/(?P[^/?#]*)/files$") .expect("Unable to create regex for RELEASE_IDENT_FILES"); } pub(crate) static ID_RELEASE_IDENT_FILESETS: usize = 71; lazy_static! { pub static ref REGEX_RELEASE_IDENT_FILESETS: regex::Regex = regex::Regex::new(r"^/v0/release/(?P[^/?#]*)/filesets$") .expect("Unable to create regex for RELEASE_IDENT_FILESETS"); } pub(crate) static ID_RELEASE_IDENT_HISTORY: usize = 72; lazy_static! { pub static ref REGEX_RELEASE_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/release/(?P[^/?#]*)/history$") .expect("Unable to create regex for RELEASE_IDENT_HISTORY"); } pub(crate) static ID_RELEASE_IDENT_REDIRECTS: usize = 73; lazy_static! { pub static ref REGEX_RELEASE_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/release/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for RELEASE_IDENT_REDIRECTS"); } pub(crate) static ID_RELEASE_IDENT_WEBCAPTURES: usize = 74; lazy_static! { pub static ref REGEX_RELEASE_IDENT_WEBCAPTURES: regex::Regex = regex::Regex::new(r"^/v0/release/(?P[^/?#]*)/webcaptures$") .expect("Unable to create regex for RELEASE_IDENT_WEBCAPTURES"); } pub(crate) static ID_WEBCAPTURE_EDIT_EDIT_ID: usize = 75; lazy_static! { pub static ref REGEX_WEBCAPTURE_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/webcapture/edit/(?P[^/?#]*)$") .expect("Unable to create regex for WEBCAPTURE_EDIT_EDIT_ID"); } pub(crate) static ID_WEBCAPTURE_REV_REV_ID: usize = 76; lazy_static! { pub static ref REGEX_WEBCAPTURE_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/webcapture/rev/(?P[^/?#]*)$") .expect("Unable to create regex for WEBCAPTURE_REV_REV_ID"); } pub(crate) static ID_WEBCAPTURE_IDENT: usize = 77; lazy_static! { pub static ref REGEX_WEBCAPTURE_IDENT: regex::Regex = regex::Regex::new(r"^/v0/webcapture/(?P[^/?#]*)$") .expect("Unable to create regex for WEBCAPTURE_IDENT"); } pub(crate) static ID_WEBCAPTURE_IDENT_HISTORY: usize = 78; lazy_static! { pub static ref REGEX_WEBCAPTURE_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/webcapture/(?P[^/?#]*)/history$") .expect("Unable to create regex for WEBCAPTURE_IDENT_HISTORY"); } pub(crate) static ID_WEBCAPTURE_IDENT_REDIRECTS: usize = 79; lazy_static! { pub static ref REGEX_WEBCAPTURE_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/webcapture/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for WEBCAPTURE_IDENT_REDIRECTS"); } pub(crate) static ID_WORK_EDIT_EDIT_ID: usize = 80; lazy_static! { pub static ref REGEX_WORK_EDIT_EDIT_ID: regex::Regex = regex::Regex::new(r"^/v0/work/edit/(?P[^/?#]*)$") .expect("Unable to create regex for WORK_EDIT_EDIT_ID"); } pub(crate) static ID_WORK_REV_REV_ID: usize = 81; lazy_static! { pub static ref REGEX_WORK_REV_REV_ID: regex::Regex = regex::Regex::new(r"^/v0/work/rev/(?P[^/?#]*)$") .expect("Unable to create regex for WORK_REV_REV_ID"); } pub(crate) static ID_WORK_IDENT: usize = 82; lazy_static! { pub static ref REGEX_WORK_IDENT: regex::Regex = regex::Regex::new(r"^/v0/work/(?P[^/?#]*)$") .expect("Unable to create regex for WORK_IDENT"); } pub(crate) static ID_WORK_IDENT_HISTORY: usize = 83; lazy_static! { pub static ref REGEX_WORK_IDENT_HISTORY: regex::Regex = regex::Regex::new(r"^/v0/work/(?P[^/?#]*)/history$") .expect("Unable to create regex for WORK_IDENT_HISTORY"); } pub(crate) static ID_WORK_IDENT_REDIRECTS: usize = 84; lazy_static! { pub static ref REGEX_WORK_IDENT_REDIRECTS: regex::Regex = regex::Regex::new(r"^/v0/work/(?P[^/?#]*)/redirects$") .expect("Unable to create regex for WORK_IDENT_REDIRECTS"); } pub(crate) static ID_WORK_IDENT_RELEASES: usize = 85; lazy_static! { pub static ref REGEX_WORK_IDENT_RELEASES: regex::Regex = regex::Regex::new(r"^/v0/work/(?P[^/?#]*)/releases$") .expect("Unable to create regex for WORK_IDENT_RELEASES"); } } pub struct MakeService { api_impl: T, marker: PhantomData, } impl MakeService where T: Api + Clone + Send + 'static, RC: Has + Has> + 'static, { pub fn new(api_impl: T) -> Self { MakeService { api_impl, marker: PhantomData, } } } impl<'a, T, SC, RC> hyper::service::MakeService<&'a SC> for MakeService where T: Api + Clone + Send + 'static, RC: Has + Has> + 'static + Send, { type ReqBody = ContextualPayload; type ResBody = Body; type Error = Error; type Service = Service; type Future = future::FutureResult; type MakeError = Error; fn make_service(&mut self, _ctx: &'a SC) -> Self::Future { future::FutureResult::from(Ok(Service::new(self.api_impl.clone()))) } } type ServiceFuture = Box, Error = Error> + Send>; fn method_not_allowed() -> ServiceFuture { Box::new(future::ok( Response::builder() .status(StatusCode::METHOD_NOT_ALLOWED) .body(Body::empty()) .expect("Unable to create Method Not Allowed response"), )) } pub struct Service { api_impl: T, marker: PhantomData, } impl Service where T: Api + Clone + Send + 'static, RC: Has + Has> + 'static, { pub fn new(api_impl: T) -> Self { Service { api_impl: api_impl, marker: PhantomData, } } } impl hyper::service::Service for Service where T: Api + Clone + Send + 'static, C: Has + Has> + 'static + Send, { type ReqBody = ContextualPayload; type ResBody = Body; type Error = Error; type Future = ServiceFuture; fn call(&mut self, req: Request) -> Self::Future { let api_impl = self.api_impl.clone(); let (parts, body) = req.into_parts(); let (method, uri, headers) = (parts.method, parts.uri, parts.headers); let path = paths::GLOBAL_REGEX_SET.matches(uri.path()); let mut context = body.context; let body = body.inner; match &method { // AcceptEditgroup - POST /editgroup/{editgroup_id}/accept &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ACCEPT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_ACCEPT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_ACCEPT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_ACCEPT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.accept_editgroup( param_editgroup_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { AcceptEditgroupResponse::MergedSuccessfully (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_MERGED_SUCCESSFULLY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AcceptEditgroupResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AcceptEditgroupResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AcceptEditgroupResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AcceptEditgroupResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AcceptEditgroupResponse::EditConflict (body) => { *response.status_mut() = StatusCode::from_u16(409).expect("Unable to turn 409 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_EDIT_CONFLICT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AcceptEditgroupResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for ACCEPT_EDITGROUP_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // AuthCheck - GET /auth/check &hyper::Method::GET if path.matched(paths::ID_AUTH_CHECK) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_role = query_params .iter() .filter(|e| e.0 == "role") .map(|e| e.1.to_owned()) .nth(0); let param_role = param_role.and_then(|param_role| param_role.parse().ok()); Box::new({ { { Box::new( api_impl.auth_check( param_role, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { AuthCheckResponse::Success (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_CHECK_SUCCESS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthCheckResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_CHECK_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthCheckResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_CHECK_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthCheckResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_CHECK_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthCheckResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_CHECK_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // AuthOidc - POST /auth/oidc &hyper::Method::POST if path.matched(paths::ID_AUTH_OIDC) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_oidc_params: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_oidc_params) => param_oidc_params, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter oidc_params - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter oidc_params due to schema"))), } } else { None }; let param_oidc_params = match param_oidc_params { Some(param_oidc_params) => param_oidc_params, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter oidc_params")) .expect("Unable to create Bad Request response for missing body parameter oidc_params"))), }; Box::new( api_impl.auth_oidc( param_oidc_params, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { AuthOidcResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthOidcResponse::Created (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_CREATED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthOidcResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthOidcResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthOidcResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthOidcResponse::Conflict (body) => { *response.status_mut() = StatusCode::from_u16(409).expect("Unable to turn 409 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_CONFLICT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, AuthOidcResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for AUTH_OIDC_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter oidc_params: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter oidc_params"))), } }) ) as Self::Future } // CreateAuthToken - POST /auth/token/{editor_id} &hyper::Method::POST if path.matched(paths::ID_AUTH_TOKEN_EDITOR_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_AUTH_TOKEN_EDITOR_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE AUTH_TOKEN_EDITOR_ID in set but failed match against \"{}\"", path, paths::REGEX_AUTH_TOKEN_EDITOR_ID.as_str()) ); let param_editor_id = match percent_encoding::percent_decode(path_params["editor_id"].as_bytes()).decode_utf8() { Ok(param_editor_id) => match param_editor_id.parse::() { Ok(param_editor_id) => param_editor_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editor_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editor_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_duration_seconds = query_params .iter() .filter(|e| e.0 == "duration_seconds") .map(|e| e.1.to_owned()) .nth(0); let param_duration_seconds = param_duration_seconds .and_then(|param_duration_seconds| param_duration_seconds.parse().ok()); Box::new({ { { Box::new( api_impl.create_auth_token( param_editor_id, param_duration_seconds, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { CreateAuthTokenResponse::Success (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_AUTH_TOKEN_SUCCESS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateAuthTokenResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_AUTH_TOKEN_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateAuthTokenResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_AUTH_TOKEN_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateAuthTokenResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_AUTH_TOKEN_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateAuthTokenResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_AUTH_TOKEN_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // CreateContainer - POST /editgroup/{editgroup_id}/container &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CONTAINER in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_container( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateContainerResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateContainerAutoBatch - POST /editgroup/auto/container/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_CONTAINER_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_container_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateContainerAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateContainerAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CONTAINER_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // CreateCreator - POST /editgroup/{editgroup_id}/creator &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CREATOR in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_creator( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateCreatorResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateCreatorAutoBatch - POST /editgroup/auto/creator/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_CREATOR_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_creator_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateCreatorAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateCreatorAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_CREATOR_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // CreateEditgroup - POST /editgroup &hyper::Method::POST if path.matched(paths::ID_EDITGROUP) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_editgroup: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_editgroup) => param_editgroup, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter editgroup - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter editgroup due to schema"))), } } else { None }; let param_editgroup = match param_editgroup { Some(param_editgroup) => param_editgroup, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter editgroup")) .expect("Unable to create Bad Request response for missing body parameter editgroup"))), }; Box::new( api_impl.create_editgroup( param_editgroup, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateEditgroupResponse::SuccessfullyCreated (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_SUCCESSFULLY_CREATED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter editgroup: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter editgroup"))), } }) ) as Self::Future } // CreateEditgroupAnnotation - POST /editgroup/{editgroup_id}/annotation &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ANNOTATION) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_ANNOTATION .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_ANNOTATION in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_ANNOTATION.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_annotation: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_annotation) => param_annotation, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter annotation - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter annotation due to schema"))), } } else { None }; let param_annotation = match param_annotation { Some(param_annotation) => param_annotation, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter annotation")) .expect("Unable to create Bad Request response for missing body parameter annotation"))), }; Box::new( api_impl.create_editgroup_annotation( param_editgroup_id, param_annotation, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateEditgroupAnnotationResponse::Created (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_ANNOTATION_CREATED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupAnnotationResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_ANNOTATION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupAnnotationResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_ANNOTATION_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupAnnotationResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_ANNOTATION_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupAnnotationResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_ANNOTATION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateEditgroupAnnotationResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_EDITGROUP_ANNOTATION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter annotation: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter annotation"))), } }) ) as Self::Future } // CreateFile - POST /editgroup/{editgroup_id}/file &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILE in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_file( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateFileResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateFileAutoBatch - POST /editgroup/auto/file/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_FILE_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_file_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateFileAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFileAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILE_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // CreateFileset - POST /editgroup/{editgroup_id}/fileset &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILESET in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_fileset( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateFilesetResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateFilesetAutoBatch - POST /editgroup/auto/fileset/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_FILESET_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_fileset_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateFilesetAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateFilesetAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_FILESET_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // CreateRelease - POST /editgroup/{editgroup_id}/release &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_RELEASE in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_release( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateReleaseResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateReleaseAutoBatch - POST /editgroup/auto/release/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_RELEASE_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_release_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateReleaseAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateReleaseAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_RELEASE_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // CreateWebcapture - POST /editgroup/{editgroup_id}/webcapture &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WEBCAPTURE in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_webcapture( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateWebcaptureResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateWebcaptureAutoBatch - POST /editgroup/auto/webcapture/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_WEBCAPTURE_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_webcapture_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateWebcaptureAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWebcaptureAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WEBCAPTURE_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // CreateWork - POST /editgroup/{editgroup_id}/work &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WORK in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.create_work( param_editgroup_id, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateWorkResponse::CreatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_CREATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // CreateWorkAutoBatch - POST /editgroup/auto/work/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_WORK_BATCH) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_auto_batch: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_auto_batch) => param_auto_batch, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter auto_batch - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter auto_batch due to schema"))), } } else { None }; let param_auto_batch = match param_auto_batch { Some(param_auto_batch) => param_auto_batch, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter auto_batch")) .expect("Unable to create Bad Request response for missing body parameter auto_batch"))), }; Box::new( api_impl.create_work_auto_batch( param_auto_batch, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { CreateWorkAutoBatchResponse::CreatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_AUTO_BATCH_CREATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkAutoBatchResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_AUTO_BATCH_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkAutoBatchResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_AUTO_BATCH_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkAutoBatchResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_AUTO_BATCH_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkAutoBatchResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_AUTO_BATCH_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, CreateWorkAutoBatchResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for CREATE_WORK_AUTO_BATCH_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter auto_batch: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter auto_batch"))), } }) ) as Self::Future } // DeleteContainer - DELETE /editgroup/{editgroup_id}/container/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_container( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteContainerResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteContainerEdit - DELETE /editgroup/{editgroup_id}/container/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_container_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteContainerEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteContainerEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CONTAINER_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteCreator - DELETE /editgroup/{editgroup_id}/creator/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CREATOR_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_creator( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteCreatorResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteCreatorEdit - DELETE /editgroup/{editgroup_id}/creator/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_creator_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteCreatorEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteCreatorEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_CREATOR_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteFile - DELETE /editgroup/{editgroup_id}/file/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_file( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteFileResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteFileEdit - DELETE /editgroup/{editgroup_id}/file/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_file_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteFileEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFileEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILE_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteFileset - DELETE /editgroup/{editgroup_id}/fileset/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILESET_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_fileset( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteFilesetResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteFilesetEdit - DELETE /editgroup/{editgroup_id}/fileset/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_fileset_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteFilesetEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteFilesetEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_FILESET_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteRelease - DELETE /editgroup/{editgroup_id}/release/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_RELEASE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_release( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteReleaseResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteReleaseEdit - DELETE /editgroup/{editgroup_id}/release/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_release_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteReleaseEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteReleaseEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_RELEASE_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteWebcapture - DELETE /editgroup/{editgroup_id}/webcapture/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_webcapture( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteWebcaptureResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteWebcaptureEdit - DELETE /editgroup/{editgroup_id}/webcapture/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_webcapture_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteWebcaptureEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWebcaptureEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WEBCAPTURE_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteWork - DELETE /editgroup/{editgroup_id}/work/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WORK_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_work( param_editgroup_id, param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteWorkResponse::DeletedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_DELETED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // DeleteWorkEdit - DELETE /editgroup/{editgroup_id}/work/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.delete_work_edit( param_editgroup_id, param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { DeleteWorkEditResponse::DeletedEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_EDIT_DELETED_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkEditResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_EDIT_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkEditResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_EDIT_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, DeleteWorkEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for DELETE_WORK_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetChangelog - GET /changelog &hyper::Method::GET if path.matched(paths::ID_CHANGELOG) => { // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_changelog( param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetChangelogResponse::Success (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_SUCCESS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetChangelogResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetChangelogResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetChangelogEntry - GET /changelog/{index} &hyper::Method::GET if path.matched(paths::ID_CHANGELOG_INDEX) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CHANGELOG_INDEX .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CHANGELOG_INDEX in set but failed match against \"{}\"", path, paths::REGEX_CHANGELOG_INDEX.as_str()) ); let param_index = match percent_encoding::percent_decode(path_params["index"].as_bytes()).decode_utf8() { Ok(param_index) => match param_index.parse::() { Ok(param_index) => param_index, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter index: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["index"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_changelog_entry( param_index, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetChangelogEntryResponse::FoundChangelogEntry (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_ENTRY_FOUND_CHANGELOG_ENTRY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetChangelogEntryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_ENTRY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetChangelogEntryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_ENTRY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetChangelogEntryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CHANGELOG_ENTRY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetContainer - GET /container/{ident} &hyper::Method::GET if path.matched(paths::ID_CONTAINER_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CONTAINER_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CONTAINER_IDENT in set but failed match against \"{}\"", path, paths::REGEX_CONTAINER_IDENT.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_container( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetContainerResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetContainerEdit - GET /container/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_CONTAINER_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CONTAINER_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CONTAINER_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_CONTAINER_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_container_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetContainerEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetContainerHistory - GET /container/{ident}/history &hyper::Method::GET if path.matched(paths::ID_CONTAINER_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CONTAINER_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CONTAINER_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_CONTAINER_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_container_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetContainerHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetContainerRedirects - GET /container/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_CONTAINER_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CONTAINER_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CONTAINER_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_CONTAINER_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_container_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetContainerRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetContainerRevision - GET /container/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_CONTAINER_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CONTAINER_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CONTAINER_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_CONTAINER_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_container_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetContainerRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetContainerRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CONTAINER_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetCreator - GET /creator/{ident} &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CREATOR_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CREATOR_IDENT in set but failed match against \"{}\"", path, paths::REGEX_CREATOR_IDENT.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_creator( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetCreatorResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetCreatorEdit - GET /creator/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_CREATOR_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CREATOR_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CREATOR_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_CREATOR_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_creator_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetCreatorEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetCreatorHistory - GET /creator/{ident}/history &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CREATOR_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CREATOR_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_CREATOR_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_creator_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetCreatorHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetCreatorRedirects - GET /creator/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CREATOR_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CREATOR_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_CREATOR_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_creator_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetCreatorRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetCreatorReleases - GET /creator/{ident}/releases &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT_RELEASES) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CREATOR_IDENT_RELEASES .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CREATOR_IDENT_RELEASES in set but failed match against \"{}\"", path, paths::REGEX_CREATOR_IDENT_RELEASES.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_creator_releases( param_ident, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetCreatorReleasesResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_RELEASES_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorReleasesResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_RELEASES_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorReleasesResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_RELEASES_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorReleasesResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_RELEASES_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetCreatorRevision - GET /creator/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_CREATOR_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_CREATOR_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE CREATOR_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_CREATOR_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_creator_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetCreatorRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetCreatorRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_CREATOR_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetEditgroup - GET /editgroup/{editgroup_id} &hyper::Method::GET if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_editgroup( param_editgroup_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetEditgroupResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetEditgroupAnnotations - GET /editgroup/{editgroup_id}/annotations &hyper::Method::GET if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ANNOTATIONS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_ANNOTATIONS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_ANNOTATIONS in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_ANNOTATIONS.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); Box::new({ { { Box::new( api_impl.get_editgroup_annotations( param_editgroup_id, param_expand, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetEditgroupAnnotationsResponse::Success (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_ANNOTATIONS_SUCCESS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupAnnotationsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_ANNOTATIONS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupAnnotationsResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_ANNOTATIONS_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupAnnotationsResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_ANNOTATIONS_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupAnnotationsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_ANNOTATIONS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupAnnotationsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUP_ANNOTATIONS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetEditgroupsReviewable - GET /editgroup/reviewable &hyper::Method::GET if path.matched(paths::ID_EDITGROUP_REVIEWABLE) => { // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); let param_before = query_params .iter() .filter(|e| e.0 == "before") .map(|e| e.1.to_owned()) .nth(0); let param_before = param_before.and_then(|param_before| param_before.parse().ok()); let param_since = query_params .iter() .filter(|e| e.0 == "since") .map(|e| e.1.to_owned()) .nth(0); let param_since = param_since.and_then(|param_since| param_since.parse().ok()); Box::new({ { { Box::new( api_impl.get_editgroups_reviewable( param_expand, param_limit, param_before, param_since, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetEditgroupsReviewableResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUPS_REVIEWABLE_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupsReviewableResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUPS_REVIEWABLE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupsReviewableResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUPS_REVIEWABLE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditgroupsReviewableResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITGROUPS_REVIEWABLE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetEditor - GET /editor/{editor_id} &hyper::Method::GET if path.matched(paths::ID_EDITOR_EDITOR_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITOR_EDITOR_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITOR_EDITOR_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITOR_EDITOR_ID.as_str()) ); let param_editor_id = match percent_encoding::percent_decode(path_params["editor_id"].as_bytes()).decode_utf8() { Ok(param_editor_id) => match param_editor_id.parse::() { Ok(param_editor_id) => param_editor_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editor_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editor_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_editor( param_editor_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetEditorResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetEditorAnnotations - GET /editor/{editor_id}/annotations &hyper::Method::GET if path.matched(paths::ID_EDITOR_EDITOR_ID_ANNOTATIONS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITOR_EDITOR_ID_ANNOTATIONS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITOR_EDITOR_ID_ANNOTATIONS in set but failed match against \"{}\"", path, paths::REGEX_EDITOR_EDITOR_ID_ANNOTATIONS.as_str()) ); let param_editor_id = match percent_encoding::percent_decode(path_params["editor_id"].as_bytes()).decode_utf8() { Ok(param_editor_id) => match param_editor_id.parse::() { Ok(param_editor_id) => param_editor_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editor_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editor_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); let param_before = query_params .iter() .filter(|e| e.0 == "before") .map(|e| e.1.to_owned()) .nth(0); let param_before = param_before.and_then(|param_before| param_before.parse().ok()); let param_since = query_params .iter() .filter(|e| e.0 == "since") .map(|e| e.1.to_owned()) .nth(0); let param_since = param_since.and_then(|param_since| param_since.parse().ok()); Box::new({ { { Box::new( api_impl.get_editor_annotations( param_editor_id, param_limit, param_before, param_since, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetEditorAnnotationsResponse::Success (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_ANNOTATIONS_SUCCESS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorAnnotationsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_ANNOTATIONS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorAnnotationsResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_ANNOTATIONS_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorAnnotationsResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_ANNOTATIONS_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorAnnotationsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_ANNOTATIONS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorAnnotationsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_ANNOTATIONS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetEditorEditgroups - GET /editor/{editor_id}/editgroups &hyper::Method::GET if path.matched(paths::ID_EDITOR_EDITOR_ID_EDITGROUPS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITOR_EDITOR_ID_EDITGROUPS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITOR_EDITOR_ID_EDITGROUPS in set but failed match against \"{}\"", path, paths::REGEX_EDITOR_EDITOR_ID_EDITGROUPS.as_str()) ); let param_editor_id = match percent_encoding::percent_decode(path_params["editor_id"].as_bytes()).decode_utf8() { Ok(param_editor_id) => match param_editor_id.parse::() { Ok(param_editor_id) => param_editor_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editor_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editor_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); let param_before = query_params .iter() .filter(|e| e.0 == "before") .map(|e| e.1.to_owned()) .nth(0); let param_before = param_before.and_then(|param_before| param_before.parse().ok()); let param_since = query_params .iter() .filter(|e| e.0 == "since") .map(|e| e.1.to_owned()) .nth(0); let param_since = param_since.and_then(|param_since| param_since.parse().ok()); Box::new({ { { Box::new( api_impl.get_editor_editgroups( param_editor_id, param_limit, param_before, param_since, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetEditorEditgroupsResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_EDITGROUPS_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorEditgroupsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_EDITGROUPS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorEditgroupsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_EDITGROUPS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetEditorEditgroupsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_EDITOR_EDITGROUPS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFile - GET /file/{ident} &hyper::Method::GET if path.matched(paths::ID_FILE_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILE_IDENT.captures(&path).unwrap_or_else(|| { panic!( "Path {} matched RE FILE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_FILE_IDENT.as_str() ) }); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_file( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFileResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFileEdit - GET /file/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_FILE_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILE_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILE_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_FILE_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_file_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFileEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFileHistory - GET /file/{ident}/history &hyper::Method::GET if path.matched(paths::ID_FILE_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILE_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILE_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_FILE_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_file_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFileHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFileRedirects - GET /file/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_FILE_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILE_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILE_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_FILE_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_file_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFileRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFileRevision - GET /file/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_FILE_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILE_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILE_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_FILE_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_file_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFileRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFileRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILE_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFileset - GET /fileset/{ident} &hyper::Method::GET if path.matched(paths::ID_FILESET_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILESET_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILESET_IDENT in set but failed match against \"{}\"", path, paths::REGEX_FILESET_IDENT.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_fileset( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFilesetResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFilesetEdit - GET /fileset/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_FILESET_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILESET_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILESET_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_FILESET_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_fileset_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFilesetEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFilesetHistory - GET /fileset/{ident}/history &hyper::Method::GET if path.matched(paths::ID_FILESET_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILESET_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILESET_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_FILESET_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_fileset_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFilesetHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFilesetRedirects - GET /fileset/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_FILESET_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILESET_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILESET_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_FILESET_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_fileset_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFilesetRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetFilesetRevision - GET /fileset/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_FILESET_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_FILESET_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE FILESET_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_FILESET_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_fileset_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetFilesetRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetFilesetRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_FILESET_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetRelease - GET /release/{ident} &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_IDENT.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_release( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseEdit - GET /release/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_RELEASE_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_release_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseFiles - GET /release/{ident}/files &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_FILES) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_IDENT_FILES .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_IDENT_FILES in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_IDENT_FILES.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_release_files( param_ident, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseFilesResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILES_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseFilesResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILES_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseFilesResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILES_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseFilesResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILES_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseFilesets - GET /release/{ident}/filesets &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_FILESETS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_IDENT_FILESETS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_IDENT_FILESETS in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_IDENT_FILESETS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_release_filesets( param_ident, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseFilesetsResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILESETS_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseFilesetsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILESETS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseFilesetsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILESETS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseFilesetsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_FILESETS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseHistory - GET /release/{ident}/history &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_release_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseRedirects - GET /release/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_release_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseRevision - GET /release/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_RELEASE_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_release_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetReleaseWebcaptures - GET /release/{ident}/webcaptures &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_WEBCAPTURES) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_RELEASE_IDENT_WEBCAPTURES .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE RELEASE_IDENT_WEBCAPTURES in set but failed match against \"{}\"", path, paths::REGEX_RELEASE_IDENT_WEBCAPTURES.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_release_webcaptures( param_ident, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetReleaseWebcapturesResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_WEBCAPTURES_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseWebcapturesResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_WEBCAPTURES_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseWebcapturesResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_WEBCAPTURES_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetReleaseWebcapturesResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_RELEASE_WEBCAPTURES_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWebcapture - GET /webcapture/{ident} &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WEBCAPTURE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WEBCAPTURE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_WEBCAPTURE_IDENT.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_webcapture( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWebcaptureResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWebcaptureEdit - GET /webcapture/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WEBCAPTURE_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WEBCAPTURE_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_WEBCAPTURE_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_webcapture_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWebcaptureEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWebcaptureHistory - GET /webcapture/{ident}/history &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WEBCAPTURE_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WEBCAPTURE_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_WEBCAPTURE_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_webcapture_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWebcaptureHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWebcaptureRedirects - GET /webcapture/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WEBCAPTURE_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WEBCAPTURE_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_WEBCAPTURE_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_webcapture_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWebcaptureRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWebcaptureRevision - GET /webcapture/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WEBCAPTURE_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WEBCAPTURE_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_WEBCAPTURE_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_webcapture_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWebcaptureRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWebcaptureRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WEBCAPTURE_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWork - GET /work/{ident} &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WORK_IDENT.captures(&path).unwrap_or_else(|| { panic!( "Path {} matched RE WORK_IDENT in set but failed match against \"{}\"", path, paths::REGEX_WORK_IDENT.as_str() ) }); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_work( param_ident, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWorkResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWorkEdit - GET /work/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_WORK_EDIT_EDIT_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WORK_EDIT_EDIT_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WORK_EDIT_EDIT_ID in set but failed match against \"{}\"", path, paths::REGEX_WORK_EDIT_EDIT_ID.as_str()) ); let param_edit_id = match percent_encoding::percent_decode(path_params["edit_id"].as_bytes()).decode_utf8() { Ok(param_edit_id) => match param_edit_id.parse::() { Ok(param_edit_id) => param_edit_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter edit_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["edit_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_work_edit( param_edit_id, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWorkEditResponse::FoundEdit (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_EDIT_FOUND_EDIT")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkEditResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_EDIT_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkEditResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_EDIT_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkEditResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_EDIT_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWorkHistory - GET /work/{ident}/history &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT_HISTORY) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WORK_IDENT_HISTORY .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WORK_IDENT_HISTORY in set but failed match against \"{}\"", path, paths::REGEX_WORK_IDENT_HISTORY.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_limit = query_params .iter() .filter(|e| e.0 == "limit") .map(|e| e.1.to_owned()) .nth(0); let param_limit = param_limit.and_then(|param_limit| param_limit.parse().ok()); Box::new({ { { Box::new( api_impl.get_work_history( param_ident, param_limit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWorkHistoryResponse::FoundEntityHistory (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_HISTORY_FOUND_ENTITY_HISTORY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkHistoryResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_HISTORY_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkHistoryResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_HISTORY_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkHistoryResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_HISTORY_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWorkRedirects - GET /work/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT_REDIRECTS) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WORK_IDENT_REDIRECTS .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WORK_IDENT_REDIRECTS in set but failed match against \"{}\"", path, paths::REGEX_WORK_IDENT_REDIRECTS.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; Box::new({ { { Box::new( api_impl.get_work_redirects( param_ident, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWorkRedirectsResponse::FoundEntityRedirects (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REDIRECTS_FOUND_ENTITY_REDIRECTS")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkRedirectsResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REDIRECTS_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkRedirectsResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REDIRECTS_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkRedirectsResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REDIRECTS_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWorkReleases - GET /work/{ident}/releases &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT_RELEASES) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WORK_IDENT_RELEASES .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WORK_IDENT_RELEASES in set but failed match against \"{}\"", path, paths::REGEX_WORK_IDENT_RELEASES.as_str()) ); let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_work_releases( param_ident, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWorkReleasesResponse::Found (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_RELEASES_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkReleasesResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_RELEASES_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkReleasesResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_RELEASES_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkReleasesResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_RELEASES_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // GetWorkRevision - GET /work/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_WORK_REV_REV_ID) => { // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_WORK_REV_REV_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE WORK_REV_REV_ID in set but failed match against \"{}\"", path, paths::REGEX_WORK_REV_REV_ID.as_str()) ); let param_rev_id = match percent_encoding::percent_decode(path_params["rev_id"].as_bytes()).decode_utf8() { Ok(param_rev_id) => match param_rev_id.parse::() { Ok(param_rev_id) => param_rev_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter rev_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["rev_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.get_work_revision( param_rev_id, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { GetWorkRevisionResponse::FoundEntityRevision (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REVISION_FOUND_ENTITY_REVISION")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkRevisionResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REVISION_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkRevisionResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REVISION_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, GetWorkRevisionResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for GET_WORK_REVISION_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // LookupContainer - GET /container/lookup &hyper::Method::GET if path.matched(paths::ID_CONTAINER_LOOKUP) => { // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_issnl = query_params .iter() .filter(|e| e.0 == "issnl") .map(|e| e.1.to_owned()) .nth(0); let param_issnl = param_issnl.and_then(|param_issnl| param_issnl.parse().ok()); let param_wikidata_qid = query_params .iter() .filter(|e| e.0 == "wikidata_qid") .map(|e| e.1.to_owned()) .nth(0); let param_wikidata_qid = param_wikidata_qid .and_then(|param_wikidata_qid| param_wikidata_qid.parse().ok()); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.lookup_container( param_issnl, param_wikidata_qid, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { LookupContainerResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CONTAINER_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupContainerResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CONTAINER_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupContainerResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CONTAINER_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupContainerResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CONTAINER_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // LookupCreator - GET /creator/lookup &hyper::Method::GET if path.matched(paths::ID_CREATOR_LOOKUP) => { // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_orcid = query_params .iter() .filter(|e| e.0 == "orcid") .map(|e| e.1.to_owned()) .nth(0); let param_orcid = param_orcid.and_then(|param_orcid| param_orcid.parse().ok()); let param_wikidata_qid = query_params .iter() .filter(|e| e.0 == "wikidata_qid") .map(|e| e.1.to_owned()) .nth(0); let param_wikidata_qid = param_wikidata_qid .and_then(|param_wikidata_qid| param_wikidata_qid.parse().ok()); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.lookup_creator( param_orcid, param_wikidata_qid, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { LookupCreatorResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CREATOR_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupCreatorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CREATOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupCreatorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CREATOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupCreatorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_CREATOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // LookupFile - GET /file/lookup &hyper::Method::GET if path.matched(paths::ID_FILE_LOOKUP) => { // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_md5 = query_params .iter() .filter(|e| e.0 == "md5") .map(|e| e.1.to_owned()) .nth(0); let param_md5 = param_md5.and_then(|param_md5| param_md5.parse().ok()); let param_sha1 = query_params .iter() .filter(|e| e.0 == "sha1") .map(|e| e.1.to_owned()) .nth(0); let param_sha1 = param_sha1.and_then(|param_sha1| param_sha1.parse().ok()); let param_sha256 = query_params .iter() .filter(|e| e.0 == "sha256") .map(|e| e.1.to_owned()) .nth(0); let param_sha256 = param_sha256.and_then(|param_sha256| param_sha256.parse().ok()); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.lookup_file( param_md5, param_sha1, param_sha256, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { LookupFileResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_FILE_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupFileResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_FILE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupFileResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_FILE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupFileResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_FILE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // LookupRelease - GET /release/lookup &hyper::Method::GET if path.matched(paths::ID_RELEASE_LOOKUP) => { // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_doi = query_params .iter() .filter(|e| e.0 == "doi") .map(|e| e.1.to_owned()) .nth(0); let param_doi = param_doi.and_then(|param_doi| param_doi.parse().ok()); let param_wikidata_qid = query_params .iter() .filter(|e| e.0 == "wikidata_qid") .map(|e| e.1.to_owned()) .nth(0); let param_wikidata_qid = param_wikidata_qid .and_then(|param_wikidata_qid| param_wikidata_qid.parse().ok()); let param_isbn13 = query_params .iter() .filter(|e| e.0 == "isbn13") .map(|e| e.1.to_owned()) .nth(0); let param_isbn13 = param_isbn13.and_then(|param_isbn13| param_isbn13.parse().ok()); let param_pmid = query_params .iter() .filter(|e| e.0 == "pmid") .map(|e| e.1.to_owned()) .nth(0); let param_pmid = param_pmid.and_then(|param_pmid| param_pmid.parse().ok()); let param_pmcid = query_params .iter() .filter(|e| e.0 == "pmcid") .map(|e| e.1.to_owned()) .nth(0); let param_pmcid = param_pmcid.and_then(|param_pmcid| param_pmcid.parse().ok()); let param_core = query_params .iter() .filter(|e| e.0 == "core") .map(|e| e.1.to_owned()) .nth(0); let param_core = param_core.and_then(|param_core| param_core.parse().ok()); let param_arxiv = query_params .iter() .filter(|e| e.0 == "arxiv") .map(|e| e.1.to_owned()) .nth(0); let param_arxiv = param_arxiv.and_then(|param_arxiv| param_arxiv.parse().ok()); let param_jstor = query_params .iter() .filter(|e| e.0 == "jstor") .map(|e| e.1.to_owned()) .nth(0); let param_jstor = param_jstor.and_then(|param_jstor| param_jstor.parse().ok()); let param_ark = query_params .iter() .filter(|e| e.0 == "ark") .map(|e| e.1.to_owned()) .nth(0); let param_ark = param_ark.and_then(|param_ark| param_ark.parse().ok()); let param_mag = query_params .iter() .filter(|e| e.0 == "mag") .map(|e| e.1.to_owned()) .nth(0); let param_mag = param_mag.and_then(|param_mag| param_mag.parse().ok()); let param_expand = query_params .iter() .filter(|e| e.0 == "expand") .map(|e| e.1.to_owned()) .nth(0); let param_expand = param_expand.and_then(|param_expand| param_expand.parse().ok()); let param_hide = query_params .iter() .filter(|e| e.0 == "hide") .map(|e| e.1.to_owned()) .nth(0); let param_hide = param_hide.and_then(|param_hide| param_hide.parse().ok()); Box::new({ { { Box::new( api_impl.lookup_release( param_doi, param_wikidata_qid, param_isbn13, param_pmid, param_pmcid, param_core, param_arxiv, param_jstor, param_ark, param_mag, param_expand, param_hide, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); match result { Ok(rsp) => match rsp { LookupReleaseResponse::FoundEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_RELEASE_FOUND_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupReleaseResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_RELEASE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupReleaseResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_RELEASE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, LookupReleaseResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for LOOKUP_RELEASE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) } } }) as Self::Future } // UpdateContainer - PUT /editgroup/{editgroup_id}/container/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_container( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateContainerResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CONTAINER_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateContainerResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CONTAINER_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateContainerResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CONTAINER_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateContainerResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CONTAINER_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateContainerResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CONTAINER_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateContainerResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CONTAINER_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // UpdateCreator - PUT /editgroup/{editgroup_id}/creator/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_CREATOR_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_creator( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateCreatorResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CREATOR_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateCreatorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CREATOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateCreatorResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CREATOR_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateCreatorResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CREATOR_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateCreatorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CREATOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateCreatorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_CREATOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // UpdateEditgroup - PUT /editgroup/{editgroup_id} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()) .collect::>(); let param_submit = query_params .iter() .filter(|e| e.0 == "submit") .map(|e| e.1.to_owned()) .nth(0); let param_submit = param_submit.and_then(|param_submit| param_submit.parse().ok()); // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_editgroup: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_editgroup) => param_editgroup, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter editgroup - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter editgroup due to schema"))), } } else { None }; let param_editgroup = match param_editgroup { Some(param_editgroup) => param_editgroup, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter editgroup")) .expect("Unable to create Bad Request response for missing body parameter editgroup"))), }; Box::new( api_impl.update_editgroup( param_editgroup_id, param_editgroup, param_submit, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateEditgroupResponse::UpdatedEditgroup (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITGROUP_UPDATED_EDITGROUP")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditgroupResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITGROUP_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditgroupResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITGROUP_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditgroupResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITGROUP_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditgroupResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITGROUP_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditgroupResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITGROUP_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter editgroup: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter editgroup"))), } }) ) as Self::Future } // UpdateEditor - PUT /editor/{editor_id} &hyper::Method::PUT if path.matched(paths::ID_EDITOR_EDITOR_ID) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITOR_EDITOR_ID .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITOR_EDITOR_ID in set but failed match against \"{}\"", path, paths::REGEX_EDITOR_EDITOR_ID.as_str()) ); let param_editor_id = match percent_encoding::percent_decode(path_params["editor_id"].as_bytes()).decode_utf8() { Ok(param_editor_id) => match param_editor_id.parse::() { Ok(param_editor_id) => param_editor_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editor_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editor_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_editor: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_editor) => param_editor, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter editor - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter editor due to schema"))), } } else { None }; let param_editor = match param_editor { Some(param_editor) => param_editor, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter editor")) .expect("Unable to create Bad Request response for missing body parameter editor"))), }; Box::new( api_impl.update_editor( param_editor_id, param_editor, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateEditorResponse::UpdatedEditor (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITOR_UPDATED_EDITOR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditorResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITOR_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditorResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITOR_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditorResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITOR_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditorResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITOR_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateEditorResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_EDITOR_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter editor: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter editor"))), } }) ) as Self::Future } // UpdateFile - PUT /editgroup/{editgroup_id}/file/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILE_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_file( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateFileResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILE_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFileResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFileResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFileResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFileResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFileResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // UpdateFileset - PUT /editgroup/{editgroup_id}/fileset/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_FILESET_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_FILESET_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_fileset( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateFilesetResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILESET_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFilesetResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILESET_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFilesetResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILESET_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFilesetResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILESET_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFilesetResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILESET_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateFilesetResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_FILESET_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // UpdateRelease - PUT /editgroup/{editgroup_id}/release/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_RELEASE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_release( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateReleaseResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_RELEASE_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateReleaseResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_RELEASE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateReleaseResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_RELEASE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateReleaseResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_RELEASE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateReleaseResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_RELEASE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateReleaseResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_RELEASE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // UpdateWebcapture - PUT /editgroup/{editgroup_id}/webcapture/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_webcapture( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateWebcaptureResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WEBCAPTURE_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWebcaptureResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WEBCAPTURE_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWebcaptureResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WEBCAPTURE_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWebcaptureResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WEBCAPTURE_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWebcaptureResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WEBCAPTURE_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWebcaptureResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WEBCAPTURE_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } // UpdateWork - PUT /editgroup/{editgroup_id}/work/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_IDENT) => { { let authorization = match (&context as &dyn Has>).get() { &Some(ref authorization) => authorization, &None => { return Box::new(future::ok( Response::builder() .status(StatusCode::FORBIDDEN) .body(Body::from("Unauthenticated")) .expect("Unable to create Authentication Forbidden response"), )) } }; } // Path parameters let path: &str = &uri.path().to_string(); let path_params = paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK_IDENT .captures(&path) .unwrap_or_else(|| panic!("Path {} matched RE EDITGROUP_EDITGROUP_ID_WORK_IDENT in set but failed match against \"{}\"", path, paths::REGEX_EDITGROUP_EDITGROUP_ID_WORK_IDENT.as_str()) ); let param_editgroup_id = match percent_encoding::percent_decode(path_params["editgroup_id"].as_bytes()).decode_utf8() { Ok(param_editgroup_id) => match param_editgroup_id.parse::() { Ok(param_editgroup_id) => param_editgroup_id, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter editgroup_id: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["editgroup_id"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; let param_ident = match percent_encoding::percent_decode(path_params["ident"].as_bytes()).decode_utf8() { Ok(param_ident) => match param_ident.parse::() { Ok(param_ident) => param_ident, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse path parameter ident: {}", e))) .expect("Unable to create Bad Request response for invalid path parameter"))), }, Err(_) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["ident"]))) .expect("Unable to create Bad Request response for invalid percent decode"))) }; // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for // any unused fields. Box::new(body.concat2() .then(move |result| -> Self::Future { match result { Ok(body) => { let mut unused_elements = Vec::new(); let param_entity: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { Ok(param_entity) => param_entity, Err(e) => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't parse body parameter entity - doesn't match schema: {}", e))) .expect("Unable to create Bad Request response for invalid body parameter entity due to schema"))), } } else { None }; let param_entity = match param_entity { Some(param_entity) => param_entity, None => return Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from("Missing required body parameter entity")) .expect("Unable to create Bad Request response for missing body parameter entity"))), }; Box::new( api_impl.update_work( param_editgroup_id, param_ident, param_entity, &context ).then(move |result| { let mut response = Response::new(Body::empty()); response.headers_mut().insert( HeaderName::from_static("x-span-id"), HeaderValue::from_str((&context as &dyn Has).get().0.clone().to_string().as_str()) .expect("Unable to create X-Span-ID header value")); if !unused_elements.is_empty() { response.headers_mut().insert( HeaderName::from_static("warning"), HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str()) .expect("Unable to create Warning header value")); } match result { Ok(rsp) => match rsp { UpdateWorkResponse::UpdatedEntity (body) => { *response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WORK_UPDATED_ENTITY")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWorkResponse::BadRequest (body) => { *response.status_mut() = StatusCode::from_u16(400).expect("Unable to turn 400 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WORK_BAD_REQUEST")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWorkResponse::NotAuthorized { body, www_authenticate } => { let www_authenticate = match header::IntoHeaderValue(www_authenticate).try_into() { Ok(val) => val, Err(e) => { return future::ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::from(format!("An internal server error occurred handling www_authenticate header - {}", e))) .expect("Unable to create Internal Server Error for invalid response header")) } }; *response.status_mut() = StatusCode::from_u16(401).expect("Unable to turn 401 into a StatusCode"); response.headers_mut().insert( HeaderName::from_static("www_authenticate"), www_authenticate ); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WORK_NOT_AUTHORIZED")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWorkResponse::Forbidden (body) => { *response.status_mut() = StatusCode::from_u16(403).expect("Unable to turn 403 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WORK_FORBIDDEN")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWorkResponse::NotFound (body) => { *response.status_mut() = StatusCode::from_u16(404).expect("Unable to turn 404 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WORK_NOT_FOUND")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, UpdateWorkResponse::GenericError (body) => { *response.status_mut() = StatusCode::from_u16(500).expect("Unable to turn 500 into a StatusCode"); response.headers_mut().insert( CONTENT_TYPE, HeaderValue::from_str("application/json") .expect("Unable to create Content-Type header for UPDATE_WORK_GENERIC_ERROR")); let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); *response.body_mut() = Body::from(body); }, }, Err(_) => { // Application code returned an error. This should not happen, as the implementation should // return a valid response. *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; *response.body_mut() = Body::from("An internal error occurred"); }, } future::ok(response) } )) }, Err(e) => Box::new(future::ok(Response::builder() .status(StatusCode::BAD_REQUEST) .body(Body::from(format!("Couldn't read body parameter entity: {}", e))) .expect("Unable to create Bad Request response due to unable to read body parameter entity"))), } }) ) as Self::Future } _ if path.matched(paths::ID_AUTH_CHECK) => method_not_allowed(), _ if path.matched(paths::ID_AUTH_OIDC) => method_not_allowed(), _ if path.matched(paths::ID_AUTH_TOKEN_EDITOR_ID) => method_not_allowed(), _ if path.matched(paths::ID_CHANGELOG) => method_not_allowed(), _ if path.matched(paths::ID_CHANGELOG_INDEX) => method_not_allowed(), _ if path.matched(paths::ID_CONTAINER_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_CONTAINER_LOOKUP) => method_not_allowed(), _ if path.matched(paths::ID_CONTAINER_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_CONTAINER_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_CONTAINER_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_CONTAINER_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_LOOKUP) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_CREATOR_IDENT_RELEASES) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_CONTAINER_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_CREATOR_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_FILE_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_FILESET_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_RELEASE_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_WEBCAPTURE_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_AUTO_WORK_BATCH) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_REVIEWABLE) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ACCEPT) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ANNOTATION) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ANNOTATIONS) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_IDENT) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK) => method_not_allowed(), _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID) => { method_not_allowed() } _ if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_EDITOR_EDITOR_ID) => method_not_allowed(), _ if path.matched(paths::ID_EDITOR_EDITOR_ID_ANNOTATIONS) => method_not_allowed(), _ if path.matched(paths::ID_EDITOR_EDITOR_ID_EDITGROUPS) => method_not_allowed(), _ if path.matched(paths::ID_FILE_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_FILE_LOOKUP) => method_not_allowed(), _ if path.matched(paths::ID_FILE_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_FILE_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_FILE_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_FILE_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_FILESET_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_FILESET_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_FILESET_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_FILESET_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_FILESET_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_LOOKUP) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_IDENT_FILES) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_IDENT_FILESETS) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_RELEASE_IDENT_WEBCAPTURES) => method_not_allowed(), _ if path.matched(paths::ID_WEBCAPTURE_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_WEBCAPTURE_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_WEBCAPTURE_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_WEBCAPTURE_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_WEBCAPTURE_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_WORK_EDIT_EDIT_ID) => method_not_allowed(), _ if path.matched(paths::ID_WORK_REV_REV_ID) => method_not_allowed(), _ if path.matched(paths::ID_WORK_IDENT) => method_not_allowed(), _ if path.matched(paths::ID_WORK_IDENT_HISTORY) => method_not_allowed(), _ if path.matched(paths::ID_WORK_IDENT_REDIRECTS) => method_not_allowed(), _ if path.matched(paths::ID_WORK_IDENT_RELEASES) => method_not_allowed(), _ => Box::new(future::ok( Response::builder() .status(StatusCode::NOT_FOUND) .body(Body::empty()) .expect("Unable to create Not Found response"), )) as Self::Future, } } } impl Clone for Service where T: Clone, { fn clone(&self) -> Self { Service { api_impl: self.api_impl.clone(), marker: self.marker.clone(), } } } /// Request parser for `Api`. pub struct ApiRequestParser; impl RequestParser for ApiRequestParser { fn parse_operation_id(request: &Request) -> Result<&'static str, ()> { let path = paths::GLOBAL_REGEX_SET.matches(request.uri().path()); match request.method() { // AcceptEditgroup - POST /editgroup/{editgroup_id}/accept &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ACCEPT) => { Ok("AcceptEditgroup") } // AuthCheck - GET /auth/check &hyper::Method::GET if path.matched(paths::ID_AUTH_CHECK) => Ok("AuthCheck"), // AuthOidc - POST /auth/oidc &hyper::Method::POST if path.matched(paths::ID_AUTH_OIDC) => Ok("AuthOidc"), // CreateAuthToken - POST /auth/token/{editor_id} &hyper::Method::POST if path.matched(paths::ID_AUTH_TOKEN_EDITOR_ID) => { Ok("CreateAuthToken") } // CreateContainer - POST /editgroup/{editgroup_id}/container &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER) => { Ok("CreateContainer") } // CreateContainerAutoBatch - POST /editgroup/auto/container/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_CONTAINER_BATCH) => { Ok("CreateContainerAutoBatch") } // CreateCreator - POST /editgroup/{editgroup_id}/creator &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR) => { Ok("CreateCreator") } // CreateCreatorAutoBatch - POST /editgroup/auto/creator/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_CREATOR_BATCH) => { Ok("CreateCreatorAutoBatch") } // CreateEditgroup - POST /editgroup &hyper::Method::POST if path.matched(paths::ID_EDITGROUP) => Ok("CreateEditgroup"), // CreateEditgroupAnnotation - POST /editgroup/{editgroup_id}/annotation &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ANNOTATION) => { Ok("CreateEditgroupAnnotation") } // CreateFile - POST /editgroup/{editgroup_id}/file &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE) => { Ok("CreateFile") } // CreateFileAutoBatch - POST /editgroup/auto/file/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_FILE_BATCH) => { Ok("CreateFileAutoBatch") } // CreateFileset - POST /editgroup/{editgroup_id}/fileset &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET) => { Ok("CreateFileset") } // CreateFilesetAutoBatch - POST /editgroup/auto/fileset/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_FILESET_BATCH) => { Ok("CreateFilesetAutoBatch") } // CreateRelease - POST /editgroup/{editgroup_id}/release &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE) => { Ok("CreateRelease") } // CreateReleaseAutoBatch - POST /editgroup/auto/release/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_RELEASE_BATCH) => { Ok("CreateReleaseAutoBatch") } // CreateWebcapture - POST /editgroup/{editgroup_id}/webcapture &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE) => { Ok("CreateWebcapture") } // CreateWebcaptureAutoBatch - POST /editgroup/auto/webcapture/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_WEBCAPTURE_BATCH) => { Ok("CreateWebcaptureAutoBatch") } // CreateWork - POST /editgroup/{editgroup_id}/work &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK) => { Ok("CreateWork") } // CreateWorkAutoBatch - POST /editgroup/auto/work/batch &hyper::Method::POST if path.matched(paths::ID_EDITGROUP_AUTO_WORK_BATCH) => { Ok("CreateWorkAutoBatch") } // DeleteContainer - DELETE /editgroup/{editgroup_id}/container/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT) => { Ok("DeleteContainer") } // DeleteContainerEdit - DELETE /editgroup/{editgroup_id}/container/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_EDIT_EDIT_ID) => { Ok("DeleteContainerEdit") } // DeleteCreator - DELETE /editgroup/{editgroup_id}/creator/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT) => { Ok("DeleteCreator") } // DeleteCreatorEdit - DELETE /editgroup/{editgroup_id}/creator/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_EDIT_EDIT_ID) => { Ok("DeleteCreatorEdit") } // DeleteFile - DELETE /editgroup/{editgroup_id}/file/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_IDENT) => { Ok("DeleteFile") } // DeleteFileEdit - DELETE /editgroup/{editgroup_id}/file/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_EDIT_EDIT_ID) => { Ok("DeleteFileEdit") } // DeleteFileset - DELETE /editgroup/{editgroup_id}/fileset/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_IDENT) => { Ok("DeleteFileset") } // DeleteFilesetEdit - DELETE /editgroup/{editgroup_id}/fileset/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_EDIT_EDIT_ID) => { Ok("DeleteFilesetEdit") } // DeleteRelease - DELETE /editgroup/{editgroup_id}/release/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT) => { Ok("DeleteRelease") } // DeleteReleaseEdit - DELETE /editgroup/{editgroup_id}/release/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_EDIT_EDIT_ID) => { Ok("DeleteReleaseEdit") } // DeleteWebcapture - DELETE /editgroup/{editgroup_id}/webcapture/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT) => { Ok("DeleteWebcapture") } // DeleteWebcaptureEdit - DELETE /editgroup/{editgroup_id}/webcapture/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_EDIT_EDIT_ID) => { Ok("DeleteWebcaptureEdit") } // DeleteWork - DELETE /editgroup/{editgroup_id}/work/{ident} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_IDENT) => { Ok("DeleteWork") } // DeleteWorkEdit - DELETE /editgroup/{editgroup_id}/work/edit/{edit_id} &hyper::Method::DELETE if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_EDIT_EDIT_ID) => { Ok("DeleteWorkEdit") } // GetChangelog - GET /changelog &hyper::Method::GET if path.matched(paths::ID_CHANGELOG) => Ok("GetChangelog"), // GetChangelogEntry - GET /changelog/{index} &hyper::Method::GET if path.matched(paths::ID_CHANGELOG_INDEX) => { Ok("GetChangelogEntry") } // GetContainer - GET /container/{ident} &hyper::Method::GET if path.matched(paths::ID_CONTAINER_IDENT) => Ok("GetContainer"), // GetContainerEdit - GET /container/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_CONTAINER_EDIT_EDIT_ID) => { Ok("GetContainerEdit") } // GetContainerHistory - GET /container/{ident}/history &hyper::Method::GET if path.matched(paths::ID_CONTAINER_IDENT_HISTORY) => { Ok("GetContainerHistory") } // GetContainerRedirects - GET /container/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_CONTAINER_IDENT_REDIRECTS) => { Ok("GetContainerRedirects") } // GetContainerRevision - GET /container/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_CONTAINER_REV_REV_ID) => { Ok("GetContainerRevision") } // GetCreator - GET /creator/{ident} &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT) => Ok("GetCreator"), // GetCreatorEdit - GET /creator/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_CREATOR_EDIT_EDIT_ID) => { Ok("GetCreatorEdit") } // GetCreatorHistory - GET /creator/{ident}/history &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT_HISTORY) => { Ok("GetCreatorHistory") } // GetCreatorRedirects - GET /creator/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT_REDIRECTS) => { Ok("GetCreatorRedirects") } // GetCreatorReleases - GET /creator/{ident}/releases &hyper::Method::GET if path.matched(paths::ID_CREATOR_IDENT_RELEASES) => { Ok("GetCreatorReleases") } // GetCreatorRevision - GET /creator/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_CREATOR_REV_REV_ID) => { Ok("GetCreatorRevision") } // GetEditgroup - GET /editgroup/{editgroup_id} &hyper::Method::GET if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID) => { Ok("GetEditgroup") } // GetEditgroupAnnotations - GET /editgroup/{editgroup_id}/annotations &hyper::Method::GET if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_ANNOTATIONS) => { Ok("GetEditgroupAnnotations") } // GetEditgroupsReviewable - GET /editgroup/reviewable &hyper::Method::GET if path.matched(paths::ID_EDITGROUP_REVIEWABLE) => { Ok("GetEditgroupsReviewable") } // GetEditor - GET /editor/{editor_id} &hyper::Method::GET if path.matched(paths::ID_EDITOR_EDITOR_ID) => Ok("GetEditor"), // GetEditorAnnotations - GET /editor/{editor_id}/annotations &hyper::Method::GET if path.matched(paths::ID_EDITOR_EDITOR_ID_ANNOTATIONS) => { Ok("GetEditorAnnotations") } // GetEditorEditgroups - GET /editor/{editor_id}/editgroups &hyper::Method::GET if path.matched(paths::ID_EDITOR_EDITOR_ID_EDITGROUPS) => { Ok("GetEditorEditgroups") } // GetFile - GET /file/{ident} &hyper::Method::GET if path.matched(paths::ID_FILE_IDENT) => Ok("GetFile"), // GetFileEdit - GET /file/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_FILE_EDIT_EDIT_ID) => Ok("GetFileEdit"), // GetFileHistory - GET /file/{ident}/history &hyper::Method::GET if path.matched(paths::ID_FILE_IDENT_HISTORY) => { Ok("GetFileHistory") } // GetFileRedirects - GET /file/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_FILE_IDENT_REDIRECTS) => { Ok("GetFileRedirects") } // GetFileRevision - GET /file/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_FILE_REV_REV_ID) => Ok("GetFileRevision"), // GetFileset - GET /fileset/{ident} &hyper::Method::GET if path.matched(paths::ID_FILESET_IDENT) => Ok("GetFileset"), // GetFilesetEdit - GET /fileset/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_FILESET_EDIT_EDIT_ID) => { Ok("GetFilesetEdit") } // GetFilesetHistory - GET /fileset/{ident}/history &hyper::Method::GET if path.matched(paths::ID_FILESET_IDENT_HISTORY) => { Ok("GetFilesetHistory") } // GetFilesetRedirects - GET /fileset/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_FILESET_IDENT_REDIRECTS) => { Ok("GetFilesetRedirects") } // GetFilesetRevision - GET /fileset/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_FILESET_REV_REV_ID) => { Ok("GetFilesetRevision") } // GetRelease - GET /release/{ident} &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT) => Ok("GetRelease"), // GetReleaseEdit - GET /release/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_RELEASE_EDIT_EDIT_ID) => { Ok("GetReleaseEdit") } // GetReleaseFiles - GET /release/{ident}/files &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_FILES) => { Ok("GetReleaseFiles") } // GetReleaseFilesets - GET /release/{ident}/filesets &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_FILESETS) => { Ok("GetReleaseFilesets") } // GetReleaseHistory - GET /release/{ident}/history &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_HISTORY) => { Ok("GetReleaseHistory") } // GetReleaseRedirects - GET /release/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_REDIRECTS) => { Ok("GetReleaseRedirects") } // GetReleaseRevision - GET /release/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_RELEASE_REV_REV_ID) => { Ok("GetReleaseRevision") } // GetReleaseWebcaptures - GET /release/{ident}/webcaptures &hyper::Method::GET if path.matched(paths::ID_RELEASE_IDENT_WEBCAPTURES) => { Ok("GetReleaseWebcaptures") } // GetWebcapture - GET /webcapture/{ident} &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_IDENT) => Ok("GetWebcapture"), // GetWebcaptureEdit - GET /webcapture/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_EDIT_EDIT_ID) => { Ok("GetWebcaptureEdit") } // GetWebcaptureHistory - GET /webcapture/{ident}/history &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_IDENT_HISTORY) => { Ok("GetWebcaptureHistory") } // GetWebcaptureRedirects - GET /webcapture/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_IDENT_REDIRECTS) => { Ok("GetWebcaptureRedirects") } // GetWebcaptureRevision - GET /webcapture/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_WEBCAPTURE_REV_REV_ID) => { Ok("GetWebcaptureRevision") } // GetWork - GET /work/{ident} &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT) => Ok("GetWork"), // GetWorkEdit - GET /work/edit/{edit_id} &hyper::Method::GET if path.matched(paths::ID_WORK_EDIT_EDIT_ID) => Ok("GetWorkEdit"), // GetWorkHistory - GET /work/{ident}/history &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT_HISTORY) => { Ok("GetWorkHistory") } // GetWorkRedirects - GET /work/{ident}/redirects &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT_REDIRECTS) => { Ok("GetWorkRedirects") } // GetWorkReleases - GET /work/{ident}/releases &hyper::Method::GET if path.matched(paths::ID_WORK_IDENT_RELEASES) => { Ok("GetWorkReleases") } // GetWorkRevision - GET /work/rev/{rev_id} &hyper::Method::GET if path.matched(paths::ID_WORK_REV_REV_ID) => Ok("GetWorkRevision"), // LookupContainer - GET /container/lookup &hyper::Method::GET if path.matched(paths::ID_CONTAINER_LOOKUP) => { Ok("LookupContainer") } // LookupCreator - GET /creator/lookup &hyper::Method::GET if path.matched(paths::ID_CREATOR_LOOKUP) => Ok("LookupCreator"), // LookupFile - GET /file/lookup &hyper::Method::GET if path.matched(paths::ID_FILE_LOOKUP) => Ok("LookupFile"), // LookupRelease - GET /release/lookup &hyper::Method::GET if path.matched(paths::ID_RELEASE_LOOKUP) => Ok("LookupRelease"), // UpdateContainer - PUT /editgroup/{editgroup_id}/container/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CONTAINER_IDENT) => { Ok("UpdateContainer") } // UpdateCreator - PUT /editgroup/{editgroup_id}/creator/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_CREATOR_IDENT) => { Ok("UpdateCreator") } // UpdateEditgroup - PUT /editgroup/{editgroup_id} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID) => { Ok("UpdateEditgroup") } // UpdateEditor - PUT /editor/{editor_id} &hyper::Method::PUT if path.matched(paths::ID_EDITOR_EDITOR_ID) => Ok("UpdateEditor"), // UpdateFile - PUT /editgroup/{editgroup_id}/file/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILE_IDENT) => { Ok("UpdateFile") } // UpdateFileset - PUT /editgroup/{editgroup_id}/fileset/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_FILESET_IDENT) => { Ok("UpdateFileset") } // UpdateRelease - PUT /editgroup/{editgroup_id}/release/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_RELEASE_IDENT) => { Ok("UpdateRelease") } // UpdateWebcapture - PUT /editgroup/{editgroup_id}/webcapture/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WEBCAPTURE_IDENT) => { Ok("UpdateWebcapture") } // UpdateWork - PUT /editgroup/{editgroup_id}/work/{ident} &hyper::Method::PUT if path.matched(paths::ID_EDITGROUP_EDITGROUP_ID_WORK_IDENT) => { Ok("UpdateWork") } _ => Err(()), } } }