20个版本
0.5.0 | 2023年8月17日 |
---|---|
0.4.1 | 2022年3月8日 |
0.4.0-beta.5 | 2021年12月30日 |
0.4.0-beta.4 | 2021年11月18日 |
0.1.0 | 2019年1月28日 |
#383 in HTTP服务器
每月49次下载
用于 ap-relay
31KB
351 行
Actix Webfinger
一个库,用于使用Actix Web Web框架解析和提供webfinger对象。
此crate提供的主要功能是通过Actix Web客户端的Webfinger::fetch
方法和Actix Web服务器端的Resolver<S>
特质实现的。
用法
首先,将Actix Webfinger添加为依赖项
[dependencies]
actix-rt = "2.6.0"
actix-web = "4.0.0"
actix-webfinger = "0.4.0"
然后在您的应用程序中使用它
客户端示例
use actix_webfinger::Webfinger;
use awc::Client;
use std::error::Error;
#[actix_rt::main]
async fn main() -> Result<(), Box<dyn Error>> {
let client = Client::default();
let wf = Webfinger::fetch(
&client,
Some("acct:"),
"asonix@localhost:8000",
"localhost:8000",
false,
)
.await?;
println!("asonix's webfinger:\n{:#?}", wf);
Ok(())
}
服务器示例
use actix_web::{middleware::Logger, web::Data, App, HttpServer};
use actix_webfinger::{Resolver, Webfinger};
use std::{error::Error, future::Future, pin::Pin};
#[derive(Clone, Debug)]
pub struct MyState {
domain: String,
}
pub struct MyResolver;
type LocalBoxFuture<'a, Output> = Pin<Box<dyn Future<Output = Output> + 'a>>;
impl Resolver for MyResolver {
type State = Data<MyState>;
type Error = actix_web::error::JsonPayloadError;
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) })
}
}
#[actix_rt::main]
async fn main() -> Result<(), Box<dyn Error>> {
std::env::set_var("RUST_LOG", "info");
pretty_env_logger::init();
HttpServer::new(|| {
App::new()
.app_data(Data::new(MyState {
domain: "localhost:8000".to_owned(),
}))
.wrap(Logger::default())
.service(actix_webfinger::resource::<MyResolver>())
})
.bind("127.0.0.1:8000")?
.run()
.await?;
Ok(())
}
贡献
请随意为任何您发现的问题提交问题。请注意,任何贡献的代码都将按照GPLv3许可证授权。
许可证
版权©2020 Riley Trautman
Actix Webfinger是自由软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或(根据您的要求)任何更高版本。
Actix Webfinger是在希望它将是有用的前提下分发的,但不提供任何保证;甚至没有关于适销性或特定用途适用性的暗示性保证。有关更多详细信息,请参阅GNU通用公共许可证。此文件是Tokio ZMQ的一部分。
您应该已经随Actix Webfinger一起收到GNU通用公共许可证的副本。如果没有,请参阅http://www.gnu.org/licenses/。
依赖项
~14–26MB
~459K SLoC