An open API service indexing awesome lists of open source software.

https://github.com/plume-org/webfinger

A crate to help you fetch and serve WebFinger resources
https://github.com/plume-org/webfinger

decentralization federation rust webfinger

Last synced: 5 months ago
JSON representation

A crate to help you fetch and serve WebFinger resources

Awesome Lists containing this project

README

          

# WebFinger ![Crates.io](https://img.shields.io/crates/v/webfinger.svg) ![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/Plume-org/webfinger.svg) ![Codecov](https://img.shields.io/codecov/c/github/Plume-org/webfinger.svg) [![Build Status](https://travis-ci.org/Plume-org/webfinger.svg?branch=master)](https://travis-ci.org/Plume-org/webfinger)

A crate to help you fetch and serve WebFinger resources.

## Examples

Fetching a resource:

```rust
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:

```rust
use webfinger::Resolver;

pub struct MyResolver;

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

fn find(acct: String, db: DatabaseConnection) -> Result {
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
}
```