jobs.rs (1322B)
1 use nostr::nips::nip90::{DataVendingMachineStatus, JobFeedbackData}; 2 3 use crate::error::RadrootsNostrError; 4 use crate::types::{RadrootsNostrEvent, RadrootsNostrEventBuilder, RadrootsNostrTag}; 5 6 pub fn radroots_nostr_build_event_job_result( 7 job_request: &RadrootsNostrEvent, 8 payload: impl Into<String>, 9 millisats: u64, 10 bolt11: Option<String>, 11 tags: Option<Vec<RadrootsNostrTag>>, 12 ) -> Result<RadrootsNostrEventBuilder, RadrootsNostrError> { 13 let builder = 14 RadrootsNostrEventBuilder::job_result(job_request.clone(), payload, millisats, bolt11)? 15 .tags(tags.unwrap_or_default()) 16 .allow_self_tagging(); 17 Ok(builder) 18 } 19 20 pub fn radroots_nostr_build_event_job_feedback( 21 job_request: &RadrootsNostrEvent, 22 status: &str, 23 extra_info: Option<String>, 24 tags: Option<Vec<RadrootsNostrTag>>, 25 ) -> Result<RadrootsNostrEventBuilder, RadrootsNostrError> { 26 let status = status 27 .parse::<DataVendingMachineStatus>() 28 .unwrap_or(DataVendingMachineStatus::Error); 29 let feedback_data = JobFeedbackData::new(&job_request.clone(), status) 30 .extra_info(extra_info.unwrap_or_default()); 31 let builder = RadrootsNostrEventBuilder::job_feedback(feedback_data) 32 .tags(tags.unwrap_or_default()) 33 .allow_self_tagging(); 34 Ok(builder) 35 }