mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-08 16:28:49 +00:00
zap request validator.
This commit is contained in:
30
nip57.ts
30
nip57.ts
@@ -1,6 +1,6 @@
|
|||||||
import {bech32} from '@scure/base'
|
import {bech32} from '@scure/base'
|
||||||
|
|
||||||
import {Event, EventTemplate} from './event'
|
import {Event, EventTemplate, validateEvent, verifySignature} from './event'
|
||||||
import {utf8Decoder} from './utils'
|
import {utf8Decoder} from './utils'
|
||||||
|
|
||||||
var _fetch: any
|
var _fetch: any
|
||||||
@@ -75,6 +75,34 @@ export function makeZapRequest({
|
|||||||
return zr
|
return zr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function validateZapRequest(zapRequestString: string): string | null {
|
||||||
|
let zapRequest: Event
|
||||||
|
|
||||||
|
try {
|
||||||
|
zapRequest = JSON.parse(zapRequestString)
|
||||||
|
} catch (err) {
|
||||||
|
return 'Invalid zap request JSON.'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateEvent(zapRequest))
|
||||||
|
return 'Zap request is not a valid Nostr event.'
|
||||||
|
if (!verifySignature(zapRequest)) return 'Invalid signature on zap request.'
|
||||||
|
|
||||||
|
let p = zapRequest.tags.find(([t, v]) => t === 'p' && v)
|
||||||
|
if (!p) return "Zap request doesn't have a 'p' tag."
|
||||||
|
if (!p[1].match(/^[a-f0-9]{64}$/))
|
||||||
|
return "Zap request 'p' tag is not valid hex."
|
||||||
|
|
||||||
|
let e = zapRequest.tags.find(([t, v]) => t === 'e' && v)
|
||||||
|
if (e && !e[1].match(/^[a-f0-9]{64}$/))
|
||||||
|
return "Zap request 'e' tag is not valid hex."
|
||||||
|
|
||||||
|
let relays = zapRequest.tags.find(([t, v]) => t === 'relays' && v)
|
||||||
|
if (!relays) return "Zap request doesn't have a 'relays' tag."
|
||||||
|
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
export function makeZapReceipt({
|
export function makeZapReceipt({
|
||||||
zapRequest,
|
zapRequest,
|
||||||
preimage,
|
preimage,
|
||||||
|
|||||||
Reference in New Issue
Block a user