A library to aid in resolving and providing webfinger objects with the Actix Web web framework.
The main functionality this crate provides is through the Webfinger::fetch
method for Actix
Web-based clients, and the Resolver<S>
trait for Actix Web-based servers.
First, add Actix Webfinger as a dependency
toml
[dependencies]
actix-rt = "2.6.0"
actix-web = "4.0.0"
actix-webfinger = "0.4.0"
Then use it in your application
```rust use actix_webfinger::Webfinger; use awc::Client; use std::error::Error;
async fn main() -> Result<(), Box
println!("asonix's webfinger:\n{:#?}", wf);
Ok(())
} ```
```rust use actixweb::{middleware::Logger, web::Data, App, HttpServer}; use actixwebfinger::{Resolver, Webfinger}; use std::{error::Error, future::Future, pin::Pin};
pub struct MyState { domain: String, }
pub struct MyResolver;
type LocalBoxFuture<'a, Output> = Pin
impl Resolver for MyResolver {
type State = Data
fn find(
scheme: Option<&str>,
account: &str,
domain: &str,
state: Data<MyState>,
) -> LocalBoxFuture<'static, Result<Option<Webfinger>, Self::Error>> {
let w = if scheme == Some("acct:") && domain == state.domain {
Some(Webfinger::new(&format!("{}@{}", account, domain)))
} else {
None
};
Box::pin(async move { Ok(w) })
}
}
async fn main() -> Result<(), Box
Ok(())
} ```
Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3.
Copyright © 2020 Riley Trautman
Actix Webfinger is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Actix Webfinger is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. This file is part of Tokio ZMQ.
You should have received a copy of the GNU General Public License along with Actix Webfinger. If not, see http://www.gnu.org/licenses/.