A crate to help you fetch and serve WebFinger resources
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
Gelez 4e8f12810c
Merge pull request #11 from Plume-org/feat/async-trait
il y a 11 mois
src add tests for AsyncResolver; use cargo clippy for further guidance. il y a 11 mois
.gitattributes add git attributes and remove executable bit from files in repo il y a 11 mois
.gitignore Initial commit il y a 2 ans
.travis.yml add async tests to travis test script il y a 11 mois
Cargo.toml update mockito to fix its compile issue il y a 11 mois
LICENSE Add a license file (GPL-3.0) il y a 2 ans
README.md Add some badges! il y a 2 ans
coverage.sh Try to add codecov il y a 2 ans

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
}