ACCESS=accounts (config/access.ts; open stays the default and behaves as before): Newznab and the catalog's releases routes name a user (apikey or the web interface's token), whose tier sets searches and NZBs per UTC day (Newznab 500/501, the catalog 429) and how far back they see (102/403). Counted in one upsert per use, so the last one can't be taken twice; caps, stats and refused requests aren't counted. Signup takes an invite (SIGNUP), which may give a tier; ace access:invite, access:tier (extends a running tier), access:suspend. The web interface signs in and shows the day's usage and the Newznab key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
977 B
TypeScript
32 lines
977 B
TypeScript
import app from '@adonisjs/core/services/app'
|
|
import { type HttpContext, ExceptionHandler } from '@adonisjs/core/http'
|
|
|
|
export default class HttpExceptionHandler extends ExceptionHandler {
|
|
/**
|
|
* In debug mode, the exception handler will display verbose errors
|
|
* with pretty printed stack traces.
|
|
*/
|
|
protected debug = !app.inProduction
|
|
|
|
/** A refused request (AccessService: no key, a limit reached) is an answer, not a fault. */
|
|
protected ignoreCodes = ['E_ACCESS_DENIED']
|
|
|
|
/**
|
|
* The method is used for handling errors and returning
|
|
* response to the client
|
|
*/
|
|
async handle(error: unknown, ctx: HttpContext) {
|
|
return super.handle(error, ctx)
|
|
}
|
|
|
|
/**
|
|
* The method is used to report error to the logging service or
|
|
* the a third party error monitoring service.
|
|
*
|
|
* @note You should not attempt to send a response from this method.
|
|
*/
|
|
async report(error: unknown, ctx: HttpContext) {
|
|
return super.report(error, ctx)
|
|
}
|
|
}
|