lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

jobs.rs (1471B)


      1 //! Low-level NIP-90 job request, result, and feedback event helpers.
      2 
      3 use alloc::{string::String, vec::Vec};
      4 
      5 use nostr::nips::nip90::{DataVendingMachineStatus, JobFeedbackData};
      6 
      7 use crate::error::Error;
      8 use crate::types::{
      9     GenericBuilder, RadrootsNostrEvent, RadrootsNostrEventBuilderUnchecked, RadrootsNostrTag,
     10 };
     11 
     12 pub fn build_event_job_result(
     13     job_request: &RadrootsNostrEvent,
     14     payload: impl Into<String>,
     15     millisats: u64,
     16     bolt11: Option<String>,
     17     tags: Option<Vec<RadrootsNostrTag>>,
     18 ) -> Result<GenericBuilder, Error> {
     19     let builder = RadrootsNostrEventBuilderUnchecked::job_result(
     20         job_request.clone(),
     21         payload,
     22         millisats,
     23         bolt11,
     24     )?
     25     .tags(tags.unwrap_or_default())
     26     .allow_self_tagging();
     27     Ok(GenericBuilder::from_unchecked(builder))
     28 }
     29 
     30 pub fn build_event_job_feedback(
     31     job_request: &RadrootsNostrEvent,
     32     status: &str,
     33     extra_info: Option<String>,
     34     tags: Option<Vec<RadrootsNostrTag>>,
     35 ) -> Result<GenericBuilder, Error> {
     36     let status = status
     37         .parse::<DataVendingMachineStatus>()
     38         .unwrap_or(DataVendingMachineStatus::Error);
     39     let feedback_data = JobFeedbackData::new(&job_request.clone(), status)
     40         .extra_info(extra_info.unwrap_or_default());
     41     let builder = RadrootsNostrEventBuilderUnchecked::job_feedback(feedback_data)
     42         .tags(tags.unwrap_or_default())
     43         .allow_self_tagging();
     44     Ok(GenericBuilder::from_unchecked(builder))
     45 }