[−][src]Crate actix_webfinger
Actix Webfinger
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.
Usage
First, add Actix Webfinger as a dependency
[dependencies]
actix = "0.7"
actix-web = "0.7"
actix-webfinger = "0.1"
Then use it in your application
Client Example
use actix::{Actor, System}; use actix_web::client::ClientConnector; use actix_webfinger::Webfinger; use futures::Future; use openssl::ssl::{SslConnector, SslMethod}; fn main() { let sys = System::new("asonix"); let ssl_conn = SslConnector::builder(SslMethod::tls()).unwrap().build(); let conn = ClientConnector::with_connector(ssl_conn).start(); let fut = Webfinger::fetch(conn, "asonix@asonix.dog", "localhost:8000", false) .map(move |w: Webfinger| { println!("asonix's webfinger:\n{:#?}", w); System::current().stop(); }) .map_err(|e| eprintln!("Error: {}", e)); actix::spawn(fut); let _ = sys.run(); }
Server Example
use actix_web::server; use actix_webfinger::{Resolver, Webfinger}; use futures::{future::IntoFuture, Future}; #[derive(Clone, Debug)] pub struct MyState { domain: String, } pub struct MyResolver; impl Resolver<MyState> for MyResolver { type Error = actix_web::error::JsonPayloadError; fn find( account: &str, domain: &str, state: &MyState, ) -> Box<dyn Future<Item = Option<Webfinger>, Error = Self::Error>> { let w = if domain == state.domain { Some(Webfinger::new(&format!("{}@{}", account, domain))) } else { None }; Box::new(Ok(w).into_future()) } } fn main() { server::new(|| { actix_webfinger::app::<MyState, MyResolver>(MyState { domain: "asonix.dog".to_owned(), }) }) .bind("127.0.0.1:8000") .unwrap() .run(); }
Contributing
Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3.
License
Copyright © 2019 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/.
Structs
InvalidResource | The error created if the webfinger resource query is malformed |
Link | The webfinger Link type |
Webfinger | The webfinger type |
WebfingerPredicate | A predicate for Actix Web route filters |
WebfingerQuery | A wrapper type for a Webfinger Resource |
WebfingerResource | A type representing a valid resource query |
Traits
Resolver | A trait to ease the implementation of Webfinger Resolvers |
Functions
app | A simple way to mount the webfinger app to your Actix Web application |