mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-09 00:28:51 +00:00
just format
This commit is contained in:
57
nip98.ts
57
nip98.ts
@@ -1,12 +1,6 @@
|
||||
import {base64} from '@scure/base'
|
||||
import {
|
||||
Event,
|
||||
EventTemplate,
|
||||
Kind,
|
||||
getBlankEvent,
|
||||
verifySignature
|
||||
} from './event'
|
||||
import {utf8Decoder, utf8Encoder} from './utils'
|
||||
import { base64 } from '@scure/base'
|
||||
import { Event, EventTemplate, Kind, getBlankEvent, verifySignature } from './event'
|
||||
import { utf8Decoder, utf8Encoder } from './utils'
|
||||
|
||||
const _authorizationScheme = 'Nostr '
|
||||
|
||||
@@ -20,31 +14,23 @@ const _authorizationScheme = 'Nostr '
|
||||
export async function getToken(
|
||||
loginUrl: string,
|
||||
httpMethod: string,
|
||||
sign: <K extends number = number>(
|
||||
e: EventTemplate<K>
|
||||
) => Promise<Event<K>> | Event<K>,
|
||||
includeAuthorizationScheme: boolean = false
|
||||
sign: <K extends number = number>(e: EventTemplate<K>) => Promise<Event<K>> | Event<K>,
|
||||
includeAuthorizationScheme: boolean = false,
|
||||
): Promise<string> {
|
||||
if (!loginUrl || !httpMethod)
|
||||
throw new Error('Missing loginUrl or httpMethod')
|
||||
if (!loginUrl || !httpMethod) throw new Error('Missing loginUrl or httpMethod')
|
||||
|
||||
const event = getBlankEvent(Kind.HttpAuth)
|
||||
|
||||
event.tags = [
|
||||
['u', loginUrl],
|
||||
['method', httpMethod]
|
||||
['method', httpMethod],
|
||||
]
|
||||
event.created_at = Math.round(new Date().getTime() / 1000)
|
||||
|
||||
const signedEvent = await sign(event)
|
||||
|
||||
const authorizationScheme = includeAuthorizationScheme
|
||||
? _authorizationScheme
|
||||
: ''
|
||||
return (
|
||||
authorizationScheme +
|
||||
base64.encode(utf8Encoder.encode(JSON.stringify(signedEvent)))
|
||||
)
|
||||
const authorizationScheme = includeAuthorizationScheme ? _authorizationScheme : ''
|
||||
return authorizationScheme + base64.encode(utf8Encoder.encode(JSON.stringify(signedEvent)))
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,13 +39,13 @@ export async function getToken(
|
||||
* @example
|
||||
* await nip98.validateToken('Nostr base64token', 'https://example.com/login', 'post')
|
||||
*/
|
||||
export async function validateToken(
|
||||
token: string,
|
||||
url: string,
|
||||
method: string
|
||||
): Promise<boolean> {
|
||||
const event = await unpackEventFromToken(token).catch((error) => { throw(error) })
|
||||
const valid = await validateEvent(event, url, method).catch((error) => { throw(error) })
|
||||
export async function validateToken(token: string, url: string, method: string): Promise<boolean> {
|
||||
const event = await unpackEventFromToken(token).catch(error => {
|
||||
throw error
|
||||
})
|
||||
const valid = await validateEvent(event, url, method).catch(error => {
|
||||
throw error
|
||||
})
|
||||
|
||||
return valid
|
||||
}
|
||||
@@ -80,11 +66,7 @@ export async function unpackEventFromToken(token: string): Promise<Event> {
|
||||
return event
|
||||
}
|
||||
|
||||
export async function validateEvent(
|
||||
event: Event,
|
||||
url: string,
|
||||
method: string
|
||||
): Promise<boolean> {
|
||||
export async function validateEvent(event: Event, url: string, method: string): Promise<boolean> {
|
||||
if (!event) {
|
||||
throw new Error('Invalid nostr event')
|
||||
}
|
||||
@@ -110,10 +92,7 @@ export async function validateEvent(
|
||||
}
|
||||
|
||||
const methodTag = event.tags.find(t => t[0] === 'method')
|
||||
if (
|
||||
methodTag?.length !== 1 &&
|
||||
methodTag?.[1].toLowerCase() !== method.toLowerCase()
|
||||
) {
|
||||
if (methodTag?.length !== 1 && methodTag?.[1].toLowerCase() !== method.toLowerCase()) {
|
||||
throw new Error('Invalid nostr event, method tag invalid')
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user