mirror of
https://github.com/damus-io/notecrumbs.git
synced 2024-09-20 21:56:33 +00:00
nip19: add a few utils for getting filters and relays
A few utility functions for getting filters and relays from nip19 objects. We will use this for finding notes on other relays.
This commit is contained in:
parent
85ce25f48d
commit
7a7a04da39
32
src/main.rs
32
src/main.rs
@ -65,6 +65,38 @@ fn render_note<'a>(_app_ctx: &Context, note: &'a Note) -> Vec<u8> {
|
||||
.into()
|
||||
}
|
||||
|
||||
fn nip19_to_filters(nip19: &Nip19) -> Result<Vec<Filter>, Error> {
|
||||
match nip19 {
|
||||
Nip19::Event(ev) => {
|
||||
let mut filters = vec![Filter::new().id(ev.event_id).limit(1)];
|
||||
if let Some(author) = ev.author {
|
||||
filters.push(Filter::new().author(author).kind(Kind::Metadata).limit(1))
|
||||
}
|
||||
Ok(filters)
|
||||
}
|
||||
Nip19::EventId(evid) => Ok(vec![Filter::new().id(*evid).limit(1)]),
|
||||
Nip19::Profile(prof) => Ok(vec![Filter::new()
|
||||
.author(prof.public_key)
|
||||
.kind(Kind::Metadata)
|
||||
.limit(1)]),
|
||||
Nip19::Pubkey(pk) => Ok(vec![Filter::new()
|
||||
.author(*pk)
|
||||
.kind(Kind::Metadata)
|
||||
.limit(1)]),
|
||||
Nip19::Secret(_sec) => Err(Error::InvalidNip19),
|
||||
}
|
||||
}
|
||||
|
||||
fn nip19_relays(nip19: &Nip19) -> Vec<String> {
|
||||
let mut relays: Vec<String> = vec![];
|
||||
match nip19 {
|
||||
Nip19::Event(ev) => relays.extend(ev.relays.clone()),
|
||||
Nip19::Profile(p) => relays.extend(p.relays.clone()),
|
||||
_ => (),
|
||||
}
|
||||
relays
|
||||
}
|
||||
|
||||
async fn serve(
|
||||
ctx: &Context,
|
||||
r: Request<hyper::body::Incoming>,
|
||||
|
Loading…
Reference in New Issue
Block a user