1 package app
2
3 import (
4 "next.orly.dev/pkg/nostr/encoders/envelopes/eventenvelope"
5 "next.orly.dev/pkg/nostr/encoders/envelopes/okenvelope"
6 "next.orly.dev/pkg/nostr/encoders/reason"
7 )
8
9 // OK represents a function that processes events or operations, using provided
10 // parameters to generate formatted messages and return errors if any issues
11 // occur during processing.
12 type OK func(
13 l *Listener, env eventenvelope.I, format string, params ...any,
14 ) (err error)
15
16 // OKs provides a collection of handler functions for managing different types
17 // of operational outcomes, each corresponding to specific error or status
18 // conditions such as authentication requirements, rate limiting, and invalid
19 // inputs.
20 type OKs struct {
21 Ok OK
22 AuthRequired OK
23 PoW OK
24 Duplicate OK
25 Blocked OK
26 RateLimited OK
27 Invalid OK
28 Error OK
29 Unsupported OK
30 Restricted OK
31 }
32
33 // Ok provides a collection of handler functions for managing different types of
34 // operational outcomes, each corresponding to specific error or status
35 // conditions such as authentication requirements, rate limiting, and invalid
36 // inputs.
37 var Ok = OKs{
38 Ok: func(
39 l *Listener, env eventenvelope.I, format string,
40 params ...any,
41 ) (err error) {
42 return okenvelope.NewFrom(
43 env.Id(), true, []byte{},
44 ).Write(l)
45 },
46 AuthRequired: func(
47 l *Listener, env eventenvelope.I, format string,
48 params ...any,
49 ) (err error) {
50 return okenvelope.NewFrom(
51 env.Id(), false, reason.AuthRequired.F(format, params...),
52 ).Write(l)
53 },
54 PoW: func(
55 l *Listener, env eventenvelope.I, format string,
56 params ...any,
57 ) (err error) {
58 return okenvelope.NewFrom(
59 env.Id(), false, reason.PoW.F(format, params...),
60 ).Write(l)
61 },
62 Duplicate: func(
63 l *Listener, env eventenvelope.I, format string,
64 params ...any,
65 ) (err error) {
66 return okenvelope.NewFrom(
67 env.Id(), false, reason.Duplicate.F(format, params...),
68 ).Write(l)
69 },
70 Blocked: func(
71 l *Listener, env eventenvelope.I, format string,
72 params ...any,
73 ) (err error) {
74 return okenvelope.NewFrom(
75 env.Id(), false, reason.Blocked.F(format, params...),
76 ).Write(l)
77 },
78 RateLimited: func(
79 l *Listener, env eventenvelope.I, format string,
80 params ...any,
81 ) (err error) {
82 return okenvelope.NewFrom(
83 env.Id(), false, reason.RateLimited.F(format, params...),
84 ).Write(l)
85 },
86 Invalid: func(
87 l *Listener, env eventenvelope.I, format string,
88 params ...any,
89 ) (err error) {
90 return okenvelope.NewFrom(
91 env.Id(), false, reason.Invalid.F(format, params...),
92 ).Write(l)
93 },
94 Error: func(
95 l *Listener, env eventenvelope.I, format string,
96 params ...any,
97 ) (err error) {
98 return okenvelope.NewFrom(
99 env.Id(), false, reason.Error.F(format, params...),
100 ).Write(l)
101 },
102 Unsupported: func(
103 l *Listener, env eventenvelope.I, format string,
104 params ...any,
105 ) (err error) {
106 return okenvelope.NewFrom(
107 env.Id(), false, reason.Unsupported.F(format, params...),
108 ).Write(l)
109 },
110 Restricted: func(
111 l *Listener, env eventenvelope.I, format string,
112 params ...any,
113 ) (err error) {
114 return okenvelope.NewFrom(
115 env.Id(), false, reason.Restricted.F(format, params...),
116 ).Write(l)
117 },
118 }
119