lib/nzb (buildNzb, parseNzb) from the current app; NzbService builds a release's NZB from its chunks; GET /api/v1/releases?q= (every word of the name) and GET /api/v1/releases/:id/nzb behind the api guard. A test stores a batch, finds the release and reads its NZB back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
96 lines
6.4 KiB
TypeScript
96 lines
6.4 KiB
TypeScript
/* eslint-disable prettier/prettier */
|
|
import type { AdonisEndpoint } from '@tuyau/core/types'
|
|
import type { Registry } from './schema.d.ts'
|
|
import type { ApiDefinition } from './tree.d.ts'
|
|
|
|
const placeholder: any = {}
|
|
|
|
const routes = {
|
|
'auth.new_account.store': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/auth/signup',
|
|
tokens: [{"old":"/api/v1/auth/signup","type":0,"val":"api","end":""},{"old":"/api/v1/auth/signup","type":0,"val":"v1","end":""},{"old":"/api/v1/auth/signup","type":0,"val":"auth","end":""},{"old":"/api/v1/auth/signup","type":0,"val":"signup","end":""}],
|
|
types: placeholder as Registry['auth.new_account.store']['types'],
|
|
},
|
|
'auth.access_tokens.store': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/auth/login',
|
|
tokens: [{"old":"/api/v1/auth/login","type":0,"val":"api","end":""},{"old":"/api/v1/auth/login","type":0,"val":"v1","end":""},{"old":"/api/v1/auth/login","type":0,"val":"auth","end":""},{"old":"/api/v1/auth/login","type":0,"val":"login","end":""}],
|
|
types: placeholder as Registry['auth.access_tokens.store']['types'],
|
|
},
|
|
'profile.profile.show': {
|
|
methods: ["GET","HEAD"],
|
|
pattern: '/api/v1/account/profile',
|
|
tokens: [{"old":"/api/v1/account/profile","type":0,"val":"api","end":""},{"old":"/api/v1/account/profile","type":0,"val":"v1","end":""},{"old":"/api/v1/account/profile","type":0,"val":"account","end":""},{"old":"/api/v1/account/profile","type":0,"val":"profile","end":""}],
|
|
types: placeholder as Registry['profile.profile.show']['types'],
|
|
},
|
|
'profile.access_tokens.destroy': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/account/logout',
|
|
tokens: [{"old":"/api/v1/account/logout","type":0,"val":"api","end":""},{"old":"/api/v1/account/logout","type":0,"val":"v1","end":""},{"old":"/api/v1/account/logout","type":0,"val":"account","end":""},{"old":"/api/v1/account/logout","type":0,"val":"logout","end":""}],
|
|
types: placeholder as Registry['profile.access_tokens.destroy']['types'],
|
|
},
|
|
'releases.index': {
|
|
methods: ["GET","HEAD"],
|
|
pattern: '/api/v1/releases',
|
|
tokens: [{"old":"/api/v1/releases","type":0,"val":"api","end":""},{"old":"/api/v1/releases","type":0,"val":"v1","end":""},{"old":"/api/v1/releases","type":0,"val":"releases","end":""}],
|
|
types: placeholder as Registry['releases.index']['types'],
|
|
},
|
|
'releases.nzb': {
|
|
methods: ["GET","HEAD"],
|
|
pattern: '/api/v1/releases/:id/nzb',
|
|
tokens: [{"old":"/api/v1/releases/:id/nzb","type":0,"val":"api","end":""},{"old":"/api/v1/releases/:id/nzb","type":0,"val":"v1","end":""},{"old":"/api/v1/releases/:id/nzb","type":0,"val":"releases","end":""},{"old":"/api/v1/releases/:id/nzb","type":1,"val":"id","end":""},{"old":"/api/v1/releases/:id/nzb","type":0,"val":"nzb","end":""}],
|
|
types: placeholder as Registry['releases.nzb']['types'],
|
|
},
|
|
'node.node.lease': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/node/lease',
|
|
tokens: [{"old":"/api/v1/node/lease","type":0,"val":"api","end":""},{"old":"/api/v1/node/lease","type":0,"val":"v1","end":""},{"old":"/api/v1/node/lease","type":0,"val":"node","end":""},{"old":"/api/v1/node/lease","type":0,"val":"lease","end":""}],
|
|
types: placeholder as Registry['node.node.lease']['types'],
|
|
},
|
|
'node.node.stream': {
|
|
methods: ["GET","HEAD"],
|
|
pattern: '/api/v1/node/ranges/:id/stream',
|
|
tokens: [{"old":"/api/v1/node/ranges/:id/stream","type":0,"val":"api","end":""},{"old":"/api/v1/node/ranges/:id/stream","type":0,"val":"v1","end":""},{"old":"/api/v1/node/ranges/:id/stream","type":0,"val":"node","end":""},{"old":"/api/v1/node/ranges/:id/stream","type":0,"val":"ranges","end":""},{"old":"/api/v1/node/ranges/:id/stream","type":1,"val":"id","end":""},{"old":"/api/v1/node/ranges/:id/stream","type":0,"val":"stream","end":""}],
|
|
types: placeholder as Registry['node.node.stream']['types'],
|
|
},
|
|
'node.node.batch': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/node/ranges/:id/batches',
|
|
tokens: [{"old":"/api/v1/node/ranges/:id/batches","type":0,"val":"api","end":""},{"old":"/api/v1/node/ranges/:id/batches","type":0,"val":"v1","end":""},{"old":"/api/v1/node/ranges/:id/batches","type":0,"val":"node","end":""},{"old":"/api/v1/node/ranges/:id/batches","type":0,"val":"ranges","end":""},{"old":"/api/v1/node/ranges/:id/batches","type":1,"val":"id","end":""},{"old":"/api/v1/node/ranges/:id/batches","type":0,"val":"batches","end":""}],
|
|
types: placeholder as Registry['node.node.batch']['types'],
|
|
},
|
|
'node.node.heartbeat': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/node/ranges/:id/heartbeat',
|
|
tokens: [{"old":"/api/v1/node/ranges/:id/heartbeat","type":0,"val":"api","end":""},{"old":"/api/v1/node/ranges/:id/heartbeat","type":0,"val":"v1","end":""},{"old":"/api/v1/node/ranges/:id/heartbeat","type":0,"val":"node","end":""},{"old":"/api/v1/node/ranges/:id/heartbeat","type":0,"val":"ranges","end":""},{"old":"/api/v1/node/ranges/:id/heartbeat","type":1,"val":"id","end":""},{"old":"/api/v1/node/ranges/:id/heartbeat","type":0,"val":"heartbeat","end":""}],
|
|
types: placeholder as Registry['node.node.heartbeat']['types'],
|
|
},
|
|
'node.node.finish': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/node/ranges/:id/finish',
|
|
tokens: [{"old":"/api/v1/node/ranges/:id/finish","type":0,"val":"api","end":""},{"old":"/api/v1/node/ranges/:id/finish","type":0,"val":"v1","end":""},{"old":"/api/v1/node/ranges/:id/finish","type":0,"val":"node","end":""},{"old":"/api/v1/node/ranges/:id/finish","type":0,"val":"ranges","end":""},{"old":"/api/v1/node/ranges/:id/finish","type":1,"val":"id","end":""},{"old":"/api/v1/node/ranges/:id/finish","type":0,"val":"finish","end":""}],
|
|
types: placeholder as Registry['node.node.finish']['types'],
|
|
},
|
|
'node.node.release': {
|
|
methods: ["POST"],
|
|
pattern: '/api/v1/node/ranges/:id/release',
|
|
tokens: [{"old":"/api/v1/node/ranges/:id/release","type":0,"val":"api","end":""},{"old":"/api/v1/node/ranges/:id/release","type":0,"val":"v1","end":""},{"old":"/api/v1/node/ranges/:id/release","type":0,"val":"node","end":""},{"old":"/api/v1/node/ranges/:id/release","type":0,"val":"ranges","end":""},{"old":"/api/v1/node/ranges/:id/release","type":1,"val":"id","end":""},{"old":"/api/v1/node/ranges/:id/release","type":0,"val":"release","end":""}],
|
|
types: placeholder as Registry['node.node.release']['types'],
|
|
},
|
|
} as const satisfies Record<string, AdonisEndpoint>
|
|
|
|
export { routes }
|
|
|
|
export const registry = {
|
|
routes,
|
|
$tree: {} as ApiDefinition,
|
|
}
|
|
|
|
declare module '@tuyau/core/types' {
|
|
export interface UserRegistry {
|
|
routes: typeof routes
|
|
$tree: ApiDefinition
|
|
}
|
|
}
|