Add actix app

This commit is contained in:
asonix 2019-01-27 18:37:49 -06:00
parent d017443d81
commit 8801433784
2 changed files with 14 additions and 9 deletions

View file

@ -1,5 +1,5 @@
use actix_web::{server, App};
use actix_webfinger::{Resolver, Webfinger, WebfingerPredicate};
use actix_web::server;
use actix_webfinger::{Resolver, Webfinger};
use futures::{future::IntoFuture, Future};
#[derive(Clone, Debug)]
@ -29,14 +29,9 @@ impl Resolver<MyState> for MyResolver {
fn main() {
server::new(|| {
App::with_state(MyState {
actix_webfinger::app::<MyState, MyResolver>(MyState {
domain: "asonix.dog".to_owned(),
})
.resource("/.well-known/webfinger", |r| {
r.route()
.filter(WebfingerPredicate)
.with(<MyResolver as Resolver<MyState>>::endpoint)
})
})
.bind("127.0.0.1:8000")
.unwrap()

View file

@ -4,7 +4,7 @@ use actix_web::{
error::ResponseError,
http::Method,
pred::Predicate,
HttpMessage, HttpResponse, Query, Request, State,
App, HttpMessage, HttpResponse, Query, Request, State,
};
use failure::Fail;
use futures::{future::IntoFuture, Future};
@ -36,6 +36,16 @@ impl<S> Predicate<S> for WebfingerPredicate {
}
}
pub fn app<S, R>(state: S) -> App<S>
where
R: Resolver<S> + 'static,
S: 'static,
{
App::with_state(state).resource("/.well-known/webfinger", |r| {
r.route().filter(WebfingerPredicate).with(R::endpoint)
})
}
#[derive(Clone, Debug, Fail)]
#[fail(display = "Resource {} is invalid", _0)]
pub struct InvalidResource(String);