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 57)
47async fn webfinger(request: WebFingerRequest) -> actix_web::Result<WebFingerResponse> {
48 info!("fetching webfinger resource: {:?}", request);
49 let subject = request.resource.to_string();
50 if subject != SUBJECT {
51 let message = format!("{subject} does not exist");
52 return Err(actix_web::error::ErrorNotFound(message))?;
53 }
54 let rel = Rel::new("http://webfinger.net/rel/profile-page");
55 let response = if request.rels.is_empty() || request.rels.contains(&rel) {
56 let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
57 WebFingerResponse::builder(subject).link(link).build()
58 } else {
59 WebFingerResponse::builder(subject).build()
60 };
61 Ok(response)
62}
More examples
examples/axum.rs (line 57)
47async fn webfinger(request: WebFingerRequest) -> axum::response::Result<WebFingerResponse> {
48 info!("fetching webfinger resource: {:?}", request);
49 let subject = request.resource.to_string();
50 if subject != SUBJECT {
51 let message = format!("{subject} does not exist");
52 return Err((StatusCode::NOT_FOUND, message).into());
53 }
54 let rel = Rel::new("http://webfinger.net/rel/profile-page");
55 let response = if request.rels.is_empty() || request.rels.contains(&rel) {
56 let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
57 WebFingerResponse::builder(subject).link(link).build()
58 } else {
59 WebFingerResponse::builder(subject).build()
60 };
61 Ok(response)
62}
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 57)
47async fn webfinger(request: WebFingerRequest) -> actix_web::Result<WebFingerResponse> {
48 info!("fetching webfinger resource: {:?}", request);
49 let subject = request.resource.to_string();
50 if subject != SUBJECT {
51 let message = format!("{subject} does not exist");
52 return Err(actix_web::error::ErrorNotFound(message))?;
53 }
54 let rel = Rel::new("http://webfinger.net/rel/profile-page");
55 let response = if request.rels.is_empty() || request.rels.contains(&rel) {
56 let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
57 WebFingerResponse::builder(subject).link(link).build()
58 } else {
59 WebFingerResponse::builder(subject).build()
60 };
61 Ok(response)
62}
More examples
examples/axum.rs (line 57)
47async fn webfinger(request: WebFingerRequest) -> axum::response::Result<WebFingerResponse> {
48 info!("fetching webfinger resource: {:?}", request);
49 let subject = request.resource.to_string();
50 if subject != SUBJECT {
51 let message = format!("{subject} does not exist");
52 return Err((StatusCode::NOT_FOUND, message).into());
53 }
54 let rel = Rel::new("http://webfinger.net/rel/profile-page");
55 let response = if request.rels.is_empty() || request.rels.contains(&rel) {
56 let link = Link::builder(rel).href(format!("https://example.com/profile/{subject}"));
57 WebFingerResponse::builder(subject).link(link).build()
58 } else {
59 WebFingerResponse::builder(subject).build()
60 };
61 Ok(response)
62}
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