A crate to help you fetch and serve WebFinger resources
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
Gelez 4e8f12810c
Merge pull request #11 from Plume-org/feat/async-trait
11 meses atrás
src add tests for AsyncResolver; use cargo clippy for further guidance. 11 meses atrás
.gitattributes add git attributes and remove executable bit from files in repo 11 meses atrás
.gitignore Initial commit 2 anos atrás
.travis.yml add async tests to travis test script 11 meses atrás
Cargo.toml update mockito to fix its compile issue 11 meses atrás
LICENSE Add a license file (GPL-3.0) 2 anos atrás
README.md Add some badges! 2 anos atrás
coverage.sh Try to add codecov 2 anos atrás

README.md

WebFinger Crates.io Libraries.io dependency status for GitHub repo Codecov Build Status

A crate to help you fetch and serve WebFinger resources.

Examples

Fetching a resource:

use webfinger::resolve;

fn main() {
    let res = resolve("acct:test@example.org", true).expect("Error while fetching resource");

    println!("Places to get more informations about {}:", res.subject);
    for link in res.links.into_iter() {
        println!("- {}", link.href);
    }
}

Serving resources:

use webfinger::Resolver;

pub struct MyResolver;

impl Resolver<DatabaseConnection> for MyResolver {
    fn instance_domain<'a>() -> &'a str {
        "instance.tld"
    }

    fn find(acct: String, db: DatabaseConnection) -> Result<Webfinger, ResolverError> {
        if let Some(user) = db.find_user_by_name(acct) {
            Ok(Webfinger {
                subject: acct.clone(),
                aliases: vec![acct.clone()],
                links: vec![
                    Link {
                        rel: "http://webfinger.net/rel/profile-page".to_string(),
                        mime_type: None,
                        href: user.profile_url()
                    }
                ]
            })
        } else {
            Err(ResolverError::NotFound)
        }
    }
}

fn main() {
    // Start a web server and map /.well-known/webfinger to a function calling MyResolver::endpoint
}