mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-15 11:28:50 +00:00
add helper functions for nip-47
This commit is contained in:
46
nip47.ts
Normal file
46
nip47.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import {finishEvent} from './event.ts'
|
||||
import {encrypt} from './nip04.ts'
|
||||
import {Kind} from './event'
|
||||
|
||||
export function parseConnectionString(connectionString: string) {
|
||||
const {pathname, searchParams} = new URL(connectionString)
|
||||
const pubkey = pathname
|
||||
const relay = searchParams.get('relay')
|
||||
const secret = searchParams.get('secret')
|
||||
|
||||
if (!pubkey || !relay || !secret) {
|
||||
throw new Error('invalid connection string')
|
||||
}
|
||||
|
||||
return {pubkey, relay, secret}
|
||||
}
|
||||
|
||||
export async function makeNwcRequestEvent({
|
||||
pubkey,
|
||||
secret,
|
||||
invoice
|
||||
}: {
|
||||
pubkey: string
|
||||
secret: string
|
||||
invoice: string
|
||||
}) {
|
||||
const content = {
|
||||
method: 'pay_invoice',
|
||||
params: {
|
||||
invoice
|
||||
}
|
||||
}
|
||||
const encryptedContent = await encrypt(
|
||||
secret,
|
||||
pubkey,
|
||||
JSON.stringify(content)
|
||||
)
|
||||
const eventTemplate = {
|
||||
kind: Kind.NwcRequest,
|
||||
created_at: Math.round(Date.now() / 1000),
|
||||
content: encryptedContent,
|
||||
tags: [['p', pubkey]]
|
||||
}
|
||||
|
||||
return finishEvent(eventTemplate, secret)
|
||||
}
|
||||
Reference in New Issue
Block a user