pub struct SecuritySchemeBuilder<S> { /* private fields */ }Expand description
Builder for the Security Scheme
Implementations§
Source§impl SecuritySchemeBuilder<()>
impl SecuritySchemeBuilder<()>
Sourcepub fn no_sec(self) -> SecuritySchemeBuilder<SecuritySchemeNoSecTag>
pub fn no_sec(self) -> SecuritySchemeBuilder<SecuritySchemeNoSecTag>
Default no-security scheme
Sourcepub fn auto(self) -> SecuritySchemeBuilder<SecuritySchemeAutoTag>
pub fn auto(self) -> SecuritySchemeBuilder<SecuritySchemeAutoTag>
Auto security scheme
Sourcepub fn combo(self) -> SecuritySchemeBuilder<EmptyComboSecuritySchemeTag>
pub fn combo(self) -> SecuritySchemeBuilder<EmptyComboSecuritySchemeTag>
Combo security scheme
Sourcepub fn basic(self) -> SecuritySchemeBuilder<BasicSecurityScheme>
pub fn basic(self) -> SecuritySchemeBuilder<BasicSecurityScheme>
Basic Authentication RFC7617
Sourcepub fn digest(self) -> SecuritySchemeBuilder<DigestSecurityScheme>
pub fn digest(self) -> SecuritySchemeBuilder<DigestSecurityScheme>
Digest Assess Authentication RFC7616
Sourcepub fn bearer(self) -> SecuritySchemeBuilder<BearerSecurityScheme>
pub fn bearer(self) -> SecuritySchemeBuilder<BearerSecurityScheme>
Bearer Token RFC6750
Sourcepub fn psk(self) -> SecuritySchemeBuilder<PskSecurityScheme>
pub fn psk(self) -> SecuritySchemeBuilder<PskSecurityScheme>
Pre-shared key authentication
Sourcepub fn oauth2(
self,
flow: impl Into<String>,
) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
pub fn oauth2( self, flow: impl Into<String>, ) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
OAuth2 authentication RFC6749 and RFC8252
Sourcepub fn apikey(self) -> SecuritySchemeBuilder<ApiKeySecurityScheme>
pub fn apikey(self) -> SecuritySchemeBuilder<ApiKeySecurityScheme>
API key authentication
Sourcepub fn custom(
self,
scheme: impl Into<String>,
) -> SecuritySchemeBuilder<UnknownSecuritySchemeSubtype>
pub fn custom( self, scheme: impl Into<String>, ) -> SecuritySchemeBuilder<UnknownSecuritySchemeSubtype>
Security scheme defined by an additional Vocabulary
NOTE: Its definition MUST be in the Thing @context.
Source§impl<T> SecuritySchemeBuilder<T>
impl<T> SecuritySchemeBuilder<T>
Sourcepub fn description(self, value: impl Into<String>) -> SecuritySchemeBuilder<T>
pub fn description(self, value: impl Into<String>) -> SecuritySchemeBuilder<T>
Sets the value of the description field.
Sourcepub fn proxy(self, value: impl Into<String>) -> SecuritySchemeBuilder<T>
pub fn proxy(self, value: impl Into<String>) -> SecuritySchemeBuilder<T>
Sets the value of the proxy field.
Sourcepub fn attype(self, ty: impl Into<String>) -> SecuritySchemeBuilder<T>
pub fn attype(self, ty: impl Into<String>) -> SecuritySchemeBuilder<T>
JSON-LD @type
Sourcepub fn descriptions<F>(self, f: F) -> SecuritySchemeBuilder<T>
pub fn descriptions<F>(self, f: F) -> SecuritySchemeBuilder<T>
Multi-language descriptions
See ThingBuilder::titles for examples.
Sourcepub fn with_key(self, name: impl Into<String>) -> SecuritySchemeBuilder<T>
pub fn with_key(self, name: impl Into<String>) -> SecuritySchemeBuilder<T>
Sets the key to be used for referring to the security scheme in the Thing::security and
Form::security fields.
Sourcepub fn required(self) -> SecuritySchemeBuilder<T>
pub fn required(self) -> SecuritySchemeBuilder<T>
Makes the security scheme required.
Source§impl<T> SecuritySchemeBuilder<T>where
T: HasNameLocation,
impl<T> SecuritySchemeBuilder<T>where
T: HasNameLocation,
Sourcepub fn name(self, value: impl Into<String>) -> SecuritySchemeBuilder<T>
pub fn name(self, value: impl Into<String>) -> SecuritySchemeBuilder<T>
Name for query, header or cookie parameter
Sourcepub fn location(
self,
value: SecurityAuthenticationLocation,
) -> SecuritySchemeBuilder<T>
pub fn location( self, value: SecurityAuthenticationLocation, ) -> SecuritySchemeBuilder<T>
Location of the security authentication information
Source§impl SecuritySchemeBuilder<EmptyComboSecuritySchemeTag>
impl SecuritySchemeBuilder<EmptyComboSecuritySchemeTag>
Sourcepub fn all_of<I, T>(
self,
iter: I,
) -> SecuritySchemeBuilder<(AllOfComboSecuritySchemeTag, Vec<String>)>
pub fn all_of<I, T>( self, iter: I, ) -> SecuritySchemeBuilder<(AllOfComboSecuritySchemeTag, Vec<String>)>
Require all the specified schema definitions for the security combo.
§Examples
let thing = Thing::builder("Thing name")
.finish_extend()
.security(|builder| builder.combo().all_of(["basic", "nosec"]))
.security(|builder| builder.basic())
.security(|builder| builder.no_sec())
.build()
.unwrap();
assert_eq!(
serde_json::to_value(thing).unwrap(),
json!({
"title": "Thing name",
"@context": "https://www.w3.org/2022/wot/td/v1.1",
"security": [],
"securityDefinitions": {
"combo": {
"scheme": "combo",
"allOf": ["basic", "nosec"],
},
"basic": {
"scheme": "basic",
"in": "header",
},
"nosec": {
"scheme": "nosec",
},
},
})
);If one the security identifier specified in .all_of does not exist across other
security definitions, Thing::build returns an error:
let error = Thing::builder("Thing name")
.finish_extend()
.security(|builder| builder.combo().all_of(["basic", "nosec"]))
.security(|builder| builder.no_sec())
.build()
.unwrap_err();
assert_eq!(error, Error::MissingSchemaDefinition("basic".to_string()));Sourcepub fn one_of<I, T>(
self,
iter: I,
) -> SecuritySchemeBuilder<(OneOfComboSecuritySchemeTag, Vec<String>)>
pub fn one_of<I, T>( self, iter: I, ) -> SecuritySchemeBuilder<(OneOfComboSecuritySchemeTag, Vec<String>)>
Require one of the specified schema definitions for the security combo.
§Examples
let thing = Thing::builder("Thing name")
.finish_extend()
.security(|builder| builder.combo().one_of(["basic", "nosec"]))
.security(|builder| builder.basic())
.security(|builder| builder.no_sec())
.build()
.unwrap();
assert_eq!(
serde_json::to_value(thing).unwrap(),
json!({
"title": "Thing name",
"@context": "https://www.w3.org/2022/wot/td/v1.1",
"security": [],
"securityDefinitions": {
"combo": {
"scheme": "combo",
"oneOf": ["basic", "nosec"],
},
"basic": {
"scheme": "basic",
"in": "header",
},
"nosec": {
"scheme": "nosec",
},
},
})
);If one the security identifier specified in .one_of does not exist across other
security definitions, Thing::build returns an error:
let error = Thing::builder("Thing name")
.finish_extend()
.security(|builder| builder.combo().one_of(["basic", "nosec"]))
.security(|builder| builder.no_sec())
.build()
.unwrap_err();
assert_eq!(error, Error::MissingSchemaDefinition("basic".to_string()));Sourcepub fn name(
self,
value: impl Into<String>,
) -> SecuritySchemeBuilder<EmptyComboSecuritySchemeTag>
pub fn name( self, value: impl Into<String>, ) -> SecuritySchemeBuilder<EmptyComboSecuritySchemeTag>
Name for query, header or cookie parameter
Source§impl<T> SecuritySchemeBuilder<(T, Vec<String>)>
impl<T> SecuritySchemeBuilder<(T, Vec<String>)>
Sourcepub fn extend<I, U>(self, iter: I) -> SecuritySchemeBuilder<(T, Vec<String>)>
pub fn extend<I, U>(self, iter: I) -> SecuritySchemeBuilder<(T, Vec<String>)>
Extends the security scheme subtype with a variable amount of items.
This is useful for combo security schemes, which require a set of names as references.
Source§impl SecuritySchemeBuilder<DigestSecurityScheme>
impl SecuritySchemeBuilder<DigestSecurityScheme>
Sourcepub fn qop(
self,
value: QualityOfProtection,
) -> SecuritySchemeBuilder<DigestSecurityScheme>
pub fn qop( self, value: QualityOfProtection, ) -> SecuritySchemeBuilder<DigestSecurityScheme>
Quality of protection
Source§impl SecuritySchemeBuilder<BearerSecurityScheme>
impl SecuritySchemeBuilder<BearerSecurityScheme>
URI of the authorization server
Sourcepub fn alg(
self,
value: impl Into<Cow<'static, str>>,
) -> SecuritySchemeBuilder<BearerSecurityScheme>
pub fn alg( self, value: impl Into<Cow<'static, str>>, ) -> SecuritySchemeBuilder<BearerSecurityScheme>
Encoding, encryption or digest algorithm
Sourcepub fn format(
self,
value: impl Into<Cow<'static, str>>,
) -> SecuritySchemeBuilder<BearerSecurityScheme>
pub fn format( self, value: impl Into<Cow<'static, str>>, ) -> SecuritySchemeBuilder<BearerSecurityScheme>
Format of the security authentication information
Source§impl SecuritySchemeBuilder<OAuth2SecurityScheme>
impl SecuritySchemeBuilder<OAuth2SecurityScheme>
URI of the authorization server
Sourcepub fn token(
self,
value: impl Into<String>,
) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
pub fn token( self, value: impl Into<String>, ) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
URI of the token server
Sourcepub fn refresh(
self,
value: impl Into<String>,
) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
pub fn refresh( self, value: impl Into<String>, ) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
URI of the refresh server
Sourcepub fn scope(
self,
value: impl Into<String>,
) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
pub fn scope( self, value: impl Into<String>, ) -> SecuritySchemeBuilder<OAuth2SecurityScheme>
Authorization scope identifier
Source§impl SecuritySchemeBuilder<UnknownSecuritySchemeSubtype>
impl SecuritySchemeBuilder<UnknownSecuritySchemeSubtype>
Sourcepub fn data(
self,
value: impl Into<Value>,
) -> SecuritySchemeBuilder<UnknownSecuritySchemeSubtype>
pub fn data( self, value: impl Into<Value>, ) -> SecuritySchemeBuilder<UnknownSecuritySchemeSubtype>
JSON Value to be merged into the Scheme