From edc77ef606905e5d6fdf3639cc97786abc280a86 Mon Sep 17 00:00:00 2001 From: Asone Date: Sat, 16 Sep 2023 18:10:57 +0200 Subject: [PATCH 1/3] feat(proxy): implement NIP-48 tag --- nostrss-core/src/scheduler/scheduler.rs | 33 +++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/nostrss-core/src/scheduler/scheduler.rs b/nostrss-core/src/scheduler/scheduler.rs index 4daed9d..2093296 100644 --- a/nostrss-core/src/scheduler/scheduler.rs +++ b/nostrss-core/src/scheduler/scheduler.rs @@ -1,6 +1,6 @@ use feed_rs::model::Entry; use log::{debug, error}; -use nostr_sdk::{prelude::FromSkStr, Client, EventBuilder, Keys, Tag}; +use nostr_sdk::{prelude::FromSkStr, Client, EventBuilder, Keys, Kind, Tag}; use std::{collections::HashMap, sync::Arc}; use tokio::sync::{Mutex, MutexGuard}; use tokio_cron_scheduler::Job; @@ -155,6 +155,9 @@ impl RssNostrJob { let mut tags = Self::get_tags(&feed.tags); + // Declare NIP-48. + tags.push(Self::get_nip48(&tags, feed.id.clone())); + let message = match TemplateProcessor::parse(feed.clone(), entry.clone()) { Ok(message) => message, Err(e) => { @@ -226,7 +229,17 @@ impl RssNostrJob { } tags } - fn get_recommended_relays(recommended_relays_ids: Vec, relays: &[Relay]) -> Vec { + + fn get_nip48(mut tags: &Vec,feed_id: String) -> Tag { + // Declare NIP-48. + // NIP-48 : declares to be a proxy from an external signal (rss,activityPub) + Tag::Proxy { + id: feed_id, + protocol: nostr_sdk::prelude::Protocol::Rss, + } + } + + fn get_recommended_relays(recommended_relays_ids: Vec, relays: &[Relay]) -> Vec { let mut relay_tags = Vec::new(); for relay_name in recommended_relays_ids { let r = relays.iter().find(|relay| relay.name == relay_name); @@ -249,6 +262,11 @@ mod tests { use super::*; + #[test] + fn test_nip_48_signal() { + + } + #[test] fn test_get_tags() { let relay_ids = ["test".to_string()].to_vec(); @@ -277,6 +295,17 @@ mod tests { assert_eq!(tag.as_vec()[1], "wss://nostr.up"); } + #[test] + fn test_nip_48() { + + let feed_id = "https://www.test.com"; + let mut tags: Vec = [].to_vec(); + let nip_48 = RssNostrJob::get_nip48(&tags, feed_id.clone().to_string()); + + + assert_eq!(nip_48.kind(),TagKind::Proxy); + } + #[test] fn test_recommended_relays() { let feed_tags = ["ad".to_string(), "lorem".to_string(), "ipsum".to_string()].to_vec(); From 86940c8a82773f55869a70c012cb26f60c28c4bf Mon Sep 17 00:00:00 2001 From: Asone Date: Sat, 16 Sep 2023 18:14:02 +0200 Subject: [PATCH 2/3] chore(fmt): Format code --- nostrss-core/src/scheduler/scheduler.rs | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/nostrss-core/src/scheduler/scheduler.rs b/nostrss-core/src/scheduler/scheduler.rs index 2093296..fb4a5e9 100644 --- a/nostrss-core/src/scheduler/scheduler.rs +++ b/nostrss-core/src/scheduler/scheduler.rs @@ -230,16 +230,16 @@ impl RssNostrJob { tags } - fn get_nip48(mut tags: &Vec,feed_id: String) -> Tag { - // Declare NIP-48. - // NIP-48 : declares to be a proxy from an external signal (rss,activityPub) - Tag::Proxy { - id: feed_id, - protocol: nostr_sdk::prelude::Protocol::Rss, - } + fn get_nip48(mut tags: &Vec, feed_id: String) -> Tag { + // Declare NIP-48. + // NIP-48 : declares to be a proxy from an external signal (rss,activityPub) + Tag::Proxy { + id: feed_id, + protocol: nostr_sdk::prelude::Protocol::Rss, + } } - fn get_recommended_relays(recommended_relays_ids: Vec, relays: &[Relay]) -> Vec { + fn get_recommended_relays(recommended_relays_ids: Vec, relays: &[Relay]) -> Vec { let mut relay_tags = Vec::new(); for relay_name in recommended_relays_ids { let r = relays.iter().find(|relay| relay.name == relay_name); @@ -263,9 +263,7 @@ mod tests { use super::*; #[test] - fn test_nip_48_signal() { - - } + fn test_nip_48_signal() {} #[test] fn test_get_tags() { @@ -297,13 +295,11 @@ mod tests { #[test] fn test_nip_48() { - let feed_id = "https://www.test.com"; let mut tags: Vec = [].to_vec(); let nip_48 = RssNostrJob::get_nip48(&tags, feed_id.clone().to_string()); - - assert_eq!(nip_48.kind(),TagKind::Proxy); + assert_eq!(nip_48.kind(), TagKind::Proxy); } #[test] From 661ead69b0d4f5970a48e2bbf1cbd7b993f3b076 Mon Sep 17 00:00:00 2001 From: Asone Date: Sat, 16 Sep 2023 20:17:09 +0200 Subject: [PATCH 3/3] feat(proxy): use entry guid instead of feed id --- nostrss-core/src/scheduler/scheduler.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nostrss-core/src/scheduler/scheduler.rs b/nostrss-core/src/scheduler/scheduler.rs index fb4a5e9..60a70a0 100644 --- a/nostrss-core/src/scheduler/scheduler.rs +++ b/nostrss-core/src/scheduler/scheduler.rs @@ -156,7 +156,7 @@ impl RssNostrJob { let mut tags = Self::get_tags(&feed.tags); // Declare NIP-48. - tags.push(Self::get_nip48(&tags, feed.id.clone())); + tags.push(Self::get_nip48(&tags, entry.id.clone())); let message = match TemplateProcessor::parse(feed.clone(), entry.clone()) { Ok(message) => message, @@ -230,11 +230,11 @@ impl RssNostrJob { tags } - fn get_nip48(mut tags: &Vec, feed_id: String) -> Tag { + fn get_nip48(mut tags: &Vec, guid: String) -> Tag { // Declare NIP-48. // NIP-48 : declares to be a proxy from an external signal (rss,activityPub) Tag::Proxy { - id: feed_id, + id: guid, protocol: nostr_sdk::prelude::Protocol::Rss, } } @@ -295,9 +295,9 @@ mod tests { #[test] fn test_nip_48() { - let feed_id = "https://www.test.com"; + let guid = "https://www.test.com"; let mut tags: Vec = [].to_vec(); - let nip_48 = RssNostrJob::get_nip48(&tags, feed_id.clone().to_string()); + let nip_48 = RssNostrJob::get_nip48(&tags, guid.clone().to_string()); assert_eq!(nip_48.kind(), TagKind::Proxy); }