pub struct ResponseBuilder { /* private fields */ }Expand description
A builder for a WebFinger response.
This is used to construct a Response with the desired fields.
Implementations§
source§impl Builder
impl Builder
sourcepub fn new<S: Into<String>>(subject: S) -> Self
pub fn new<S: Into<String>>(subject: S) -> Self
Create a new response builder with the given subject.
sourcepub fn alias<S: Into<String>>(self, alias: S) -> Self
pub fn alias<S: Into<String>>(self, alias: S) -> Self
Add an alias to the response.
Defined in RFC 7033 Section 4.4.2
sourcepub fn property<K: Into<String>, V: Into<String>>(
self,
key: K,
value: V,
) -> Self
pub fn property<K: Into<String>, V: Into<String>>( self, key: K, value: V, ) -> Self
Add a property to the response.
Defined in RFC 7033 Section 4.4.3
sourcepub fn link<L: Into<Link>>(self, link: L) -> Self
pub fn link<L: Into<Link>>(self, link: L) -> Self
Add a link to the response.
If the link is constructed with a builder, it is not necessary to call the build method on
the link as the builder implements From<LinkBuilder> for Link.
Defined in RFC 7033 Section 4.4.4
Examples found in repository?
examples/actix.rs (line 58)
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
async fn webfinger(request: WebFingerRequest) -> actix_web::Result<WebFingerResponse> {
info!("fetching webfinger resource: {:?}", request);
let subject = request.resource.to_string();
if subject != SUBJECT {
let message = format!("{subject} does not exist");
return Err(actix_web::error::ErrorNotFound(message))?;
}
let rel = Rel::new("http://webfinger.net/rel/profile-page");
let response = if request.rels.is_empty() || request.rels.contains(&rel) {
let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
WebFingerResponse::builder(subject).link(link).build()
} else {
WebFingerResponse::builder(subject).build()
};
Ok(response)
}More examples
examples/axum.rs (line 54)
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
async fn webfinger(request: WebFingerRequest) -> axum::response::Result<WebFingerResponse> {
info!("fetching webfinger resource: {:?}", request);
let subject = request.resource.to_string();
if subject != SUBJECT {
let message = format!("{subject} does not exist");
return Err((StatusCode::NOT_FOUND, message).into());
}
let rel = Rel::new("http://webfinger.net/rel/profile-page");
let response = if request.rels.is_empty() || request.rels.contains(&rel) {
let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
WebFingerResponse::builder(subject).link(link).build()
} else {
WebFingerResponse::builder(subject).build()
};
Ok(response)
}sourcepub fn links(self, links: Vec<Link>) -> Self
pub fn links(self, links: Vec<Link>) -> Self
Set the links of the response.
Defined in RFC 7033 Section 4.4.4
sourcepub fn build(self) -> Response
pub fn build(self) -> Response
Build the response.
Examples found in repository?
examples/actix.rs (line 58)
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
async fn webfinger(request: WebFingerRequest) -> actix_web::Result<WebFingerResponse> {
info!("fetching webfinger resource: {:?}", request);
let subject = request.resource.to_string();
if subject != SUBJECT {
let message = format!("{subject} does not exist");
return Err(actix_web::error::ErrorNotFound(message))?;
}
let rel = Rel::new("http://webfinger.net/rel/profile-page");
let response = if request.rels.is_empty() || request.rels.contains(&rel) {
let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
WebFingerResponse::builder(subject).link(link).build()
} else {
WebFingerResponse::builder(subject).build()
};
Ok(response)
}More examples
examples/axum.rs (line 54)
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
async fn webfinger(request: WebFingerRequest) -> axum::response::Result<WebFingerResponse> {
info!("fetching webfinger resource: {:?}", request);
let subject = request.resource.to_string();
if subject != SUBJECT {
let message = format!("{subject} does not exist");
return Err((StatusCode::NOT_FOUND, message).into());
}
let rel = Rel::new("http://webfinger.net/rel/profile-page");
let response = if request.rels.is_empty() || request.rels.contains(&rel) {
let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
WebFingerResponse::builder(subject).link(link).build()
} else {
WebFingerResponse::builder(subject).build()
};
Ok(response)
}Auto Trait Implementations§
impl Freeze for Builder
impl RefUnwindSafe for Builder
impl Send for Builder
impl Sync for Builder
impl Unpin for Builder
impl UnwindSafe for Builder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more