Files
welshman/packages/client/src/relayManagement.ts
T
2026-06-16 16:34:43 -07:00

22 lines
729 B
TypeScript

import {makeHttpAuth, sendManagementRequest} from "@welshman/util"
import type {ManagementRequest} from "@welshman/util"
import {User} from "./user.js"
import type {IClient} from "./client.js"
/**
* NIP-86 relay management. Signs an HTTP-auth event as the client's user and
* sends an admin request to a relay's management endpoint.
*/
export class RelayManagement {
constructor(readonly ctx: IClient) {}
post = async (url: string, request: ManagementRequest) => {
url = url.replace(/^ws/, "http")
const authTemplate = await makeHttpAuth(url, "POST", JSON.stringify(request))
const authEvent = await User.require(this.ctx).sign(authTemplate)
return sendManagementRequest(url, request, authEvent)
}
}