Update versions and examples
This commit is contained in:
parent
fe105531f6
commit
8ab8f74821
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "actix-webfinger"
|
name = "actix-webfinger"
|
||||||
description = "Types and helpers to create and fetch Webfinger resources"
|
description = "Types and helpers to create and fetch Webfinger resources"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
authors = ["asonix <asonix@asonix.dog>"]
|
authors = ["asonix <asonix@asonix.dog>"]
|
||||||
repository = "https://git.asonix.dog/asonix/actix-webfinger"
|
repository = "https://git.asonix.dog/asonix/actix-webfinger"
|
||||||
|
|
37
README.md
37
README.md
|
@ -13,23 +13,30 @@ First, add Actix Webfinger as a dependency
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
actix-rt = "=2.0.0-beta.1"
|
actix-rt = "2.6.0"
|
||||||
actix-web = "4.0.0-alpha.1"
|
actix-web = "4.0.0"
|
||||||
actix-webfinger = "0.4.0-beta.1"
|
actix-webfinger = "0.4.0"
|
||||||
```
|
```
|
||||||
|
|
||||||
Then use it in your application
|
Then use it in your application
|
||||||
|
|
||||||
#### Client Example
|
#### Client Example
|
||||||
```rust
|
```rust
|
||||||
use actix_web::client::Client;
|
|
||||||
use actix_webfinger::Webfinger;
|
use actix_webfinger::Webfinger;
|
||||||
|
use awc::Client;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
|
||||||
#[actix_rt::main]
|
#[actix_rt::main]
|
||||||
async fn main() -> Result<(), Box<dyn Error>> {
|
async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
let client = Client::default();
|
let client = Client::default();
|
||||||
let wf = Webfinger::fetch(&client, "asonix@asonix.dog", "localhost:8000", false).await?;
|
let wf = Webfinger::fetch(
|
||||||
|
&client,
|
||||||
|
Some("acct:"),
|
||||||
|
"asonix@localhost:8000",
|
||||||
|
"localhost:8000",
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
println!("asonix's webfinger:\n{:#?}", wf);
|
println!("asonix's webfinger:\n{:#?}", wf);
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -38,7 +45,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
|
||||||
#### Server Example
|
#### Server Example
|
||||||
```rust
|
```rust
|
||||||
use actix_web::{web::Data, App, HttpServer};
|
use actix_web::{middleware::Logger, web::Data, App, HttpServer};
|
||||||
use actix_webfinger::{Resolver, Webfinger};
|
use actix_webfinger::{Resolver, Webfinger};
|
||||||
use std::{error::Error, future::Future, pin::Pin};
|
use std::{error::Error, future::Future, pin::Pin};
|
||||||
|
|
||||||
|
@ -49,16 +56,19 @@ pub struct MyState {
|
||||||
|
|
||||||
pub struct MyResolver;
|
pub struct MyResolver;
|
||||||
|
|
||||||
|
type LocalBoxFuture<'a, Output> = Pin<Box<dyn Future<Output = Output> + 'a>>;
|
||||||
|
|
||||||
impl Resolver for MyResolver {
|
impl Resolver for MyResolver {
|
||||||
type State = Data<MyState>;
|
type State = Data<MyState>;
|
||||||
type Error = actix_web::error::JsonPayloadError;
|
type Error = actix_web::error::JsonPayloadError;
|
||||||
|
|
||||||
fn find(
|
fn find(
|
||||||
|
scheme: Option<&str>,
|
||||||
account: &str,
|
account: &str,
|
||||||
domain: &str,
|
domain: &str,
|
||||||
state: Data<MyState>,
|
state: Data<MyState>,
|
||||||
) -> Pin<Box<dyn Future<Output = Result<Option<Webfinger>, Self::Error>>>> {
|
) -> LocalBoxFuture<'static, Result<Option<Webfinger>, Self::Error>> {
|
||||||
let w = if domain == state.domain {
|
let w = if scheme == Some("acct:") && domain == state.domain {
|
||||||
Some(Webfinger::new(&format!("{}@{}", account, domain)))
|
Some(Webfinger::new(&format!("{}@{}", account, domain)))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
@ -70,12 +80,15 @@ impl Resolver for MyResolver {
|
||||||
|
|
||||||
#[actix_rt::main]
|
#[actix_rt::main]
|
||||||
async fn main() -> Result<(), Box<dyn Error>> {
|
async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
std::env::set_var("RUST_LOG", "info");
|
||||||
|
pretty_env_logger::init();
|
||||||
HttpServer::new(|| {
|
HttpServer::new(|| {
|
||||||
App::new()
|
App::new()
|
||||||
.data(MyState {
|
.app_data(Data::new(MyState {
|
||||||
domain: "asonix.dog".to_owned(),
|
domain: "localhost:8000".to_owned(),
|
||||||
})
|
}))
|
||||||
.service(actix_webfinger::resource::<_, MyResolver>())
|
.wrap(Logger::default())
|
||||||
|
.service(actix_webfinger::resource::<MyResolver>())
|
||||||
})
|
})
|
||||||
.bind("127.0.0.1:8000")?
|
.bind("127.0.0.1:8000")?
|
||||||
.run()
|
.run()
|
||||||
|
|
35
src/lib.rs
35
src/lib.rs
|
@ -13,9 +13,9 @@
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies]
|
//! [dependencies]
|
||||||
//! actix = "0.10.0-alpha.1"
|
//! actix-rt = "2.6.0"
|
||||||
//! actix-web = "3.0.0-alpha.1"
|
//! actix-web = "4.0.0"
|
||||||
//! actix-webfinger = "0.3.0-alpha.2"
|
//! actix-webfinger = "0.4.0"
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! Then use it in your application
|
//! Then use it in your application
|
||||||
|
@ -29,7 +29,14 @@
|
||||||
//! #[actix_rt::main]
|
//! #[actix_rt::main]
|
||||||
//! async fn main() -> Result<(), Box<dyn Error>> {
|
//! async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
//! let client = Client::default();
|
//! let client = Client::default();
|
||||||
//! let wf = Webfinger::fetch(&client, None, "asonix@asonix.dog", "localhost:8000", false).await?;
|
//! let wf = Webfinger::fetch(
|
||||||
|
//! &client,
|
||||||
|
//! Some("acct:"),
|
||||||
|
//! "asonix@localhost:8000",
|
||||||
|
//! "localhost:8000",
|
||||||
|
//! false,
|
||||||
|
//! )
|
||||||
|
//! .await?;
|
||||||
//!
|
//!
|
||||||
//! println!("asonix's webfinger:\n{:#?}", wf);
|
//! println!("asonix's webfinger:\n{:#?}", wf);
|
||||||
//! Ok(())
|
//! Ok(())
|
||||||
|
@ -38,7 +45,7 @@
|
||||||
//!
|
//!
|
||||||
//! #### Server Example
|
//! #### Server Example
|
||||||
//! ```rust,ignore
|
//! ```rust,ignore
|
||||||
//! use actix_web::{web::Data, App, HttpServer};
|
//! use actix_web::{middleware::Logger, web::Data, App, HttpServer};
|
||||||
//! use actix_webfinger::{Resolver, Webfinger};
|
//! use actix_webfinger::{Resolver, Webfinger};
|
||||||
//! use std::{error::Error, future::Future, pin::Pin};
|
//! use std::{error::Error, future::Future, pin::Pin};
|
||||||
//!
|
//!
|
||||||
|
@ -49,16 +56,19 @@
|
||||||
//!
|
//!
|
||||||
//! pub struct MyResolver;
|
//! pub struct MyResolver;
|
||||||
//!
|
//!
|
||||||
|
//! type LocalBoxFuture<'a, Output> = Pin<Box<dyn Future<Output = Output> + 'a>>;
|
||||||
|
//!
|
||||||
//! impl Resolver for MyResolver {
|
//! impl Resolver for MyResolver {
|
||||||
//! type State = Data<MyState>;
|
//! type State = Data<MyState>;
|
||||||
//! type Error = actix_web::error::JsonPayloadError;
|
//! type Error = actix_web::error::JsonPayloadError;
|
||||||
//!
|
//!
|
||||||
//! fn find(
|
//! fn find(
|
||||||
|
//! scheme: Option<&str>,
|
||||||
//! account: &str,
|
//! account: &str,
|
||||||
//! domain: &str,
|
//! domain: &str,
|
||||||
//! state: S,
|
//! state: Data<MyState>,
|
||||||
//! ) -> Pin<Box<dyn Future<Output = Result<Option<Webfinger>, Self::Error>>>> {
|
//! ) -> LocalBoxFuture<'static, Result<Option<Webfinger>, Self::Error>> {
|
||||||
//! let w = if domain == state.domain {
|
//! let w = if scheme == Some("acct:") && domain == state.domain {
|
||||||
//! Some(Webfinger::new(&format!("{}@{}", account, domain)))
|
//! Some(Webfinger::new(&format!("{}@{}", account, domain)))
|
||||||
//! } else {
|
//! } else {
|
||||||
//! None
|
//! None
|
||||||
|
@ -70,11 +80,14 @@
|
||||||
//!
|
//!
|
||||||
//! #[actix_rt::main]
|
//! #[actix_rt::main]
|
||||||
//! async fn main() -> Result<(), Box<dyn Error>> {
|
//! async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
//! std::env::set_var("RUST_LOG", "info");
|
||||||
|
//! pretty_env_logger::init();
|
||||||
//! HttpServer::new(|| {
|
//! HttpServer::new(|| {
|
||||||
//! App::new()
|
//! App::new()
|
||||||
//! .data(MyState {
|
//! .app_data(Data::new(MyState {
|
||||||
//! domain: "asonix.dog".to_owned(),
|
//! domain: "localhost:8000".to_owned(),
|
||||||
//! })
|
//! }))
|
||||||
|
//! .wrap(Logger::default())
|
||||||
//! .service(actix_webfinger::resource::<MyResolver>())
|
//! .service(actix_webfinger::resource::<MyResolver>())
|
||||||
//! })
|
//! })
|
||||||
//! .bind("127.0.0.1:8000")?
|
//! .bind("127.0.0.1:8000")?
|
||||||
|
|
Loading…
Reference in a new issue