22 lines
729 B
TypeScript
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)
|
|
}
|
|
}
|