nostr-rs-plugin

Nostr Rust relay plugin trait for nostr-rs-ext extensions/plugins module.

nostr-rs-ext will try load implementation of Plugin trait with method definiton (look at example): pub fn get_plugin() -> *mut dyn Plugin;

Example plugin

```console use nostrrsplugin::Plugin; use nostrrsproto::nauthz_grpc::{EventRequest, EventReply, Decision};

struct Accept1;

// accept only kind 1 events impl Plugin for Accept1 { fn start(&self) {}

fn name(&self) -> String {
    return "Accept1".to_owned();
}

fn admit_event(&self, request: &EventRequest) -> EventReply {
    let reply;
    let opt_event = &request.event;

    match opt_event {
        Some(event) => {
            if event.kind == 1 {
                reply = EventReply {
                    decision: Decision::Permit as i32,
                    message: Some(format!("I like kind 1")),
                }
            } else {
                reply = EventReply {
                    decision: Decision::Deny as i32,
                    message: Some(format!("I don't like kind {}", event.kind)),
                }
            }
        },
        None => {
            reply = EventReply {
                decision: Decision::Deny as i32,
                message: Some(format!("No event in request!")),
            }
        }
    }

    return reply;
}

fn stop(&self) {}

}

[no_mangle]

pub fn getplugin() -> *mut dyn Plugin { // Return a raw pointer to an instance of our plugin Box::intoraw(Box::new(Accept1 {})) } ```