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.
 
 
KitaitiMakoto 51b49e8629 Merge pull request 'Specify async-trait version' (#13) from specify-async-trait-version into main
Reviewed-on: #13
il y a 2 ans
src Remove unnecessary mut il y a 2 ans
.gitattributes add git attributes and remove executable bit from files in repo il y a 4 ans
.gitignore Add support for group: and custom prefixes (fixes #3) il y a 5 ans
.travis.yml add async tests to travis test script il y a 4 ans
Cargo.toml Specify async-trait version il y a 2 ans
LICENSE add git attributes and remove executable bit from files in repo il y a 4 ans
README.md add git attributes and remove executable bit from files in repo il y a 4 ans
coverage.sh Try to add codecov il y a 5 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
}