0
0
mirror of https://github.com/honojs/hono.git synced 2024-11-22 11:17:33 +01:00

feat(utils): remove HTTP status messages from http-status.ts (#1037)

* feat(utils): remove HTTP status messages from `http-status.ts`

* denoify
This commit is contained in:
Yusuke Wada 2023-04-26 11:38:08 +09:00
parent 677b572fd5
commit 03df736763
7 changed files with 12 additions and 255 deletions

View File

@ -1,5 +1,4 @@
import type { StatusCode } from './utils/http-status.ts'
import { getStatusText } from './utils/http-status.ts'
type HTTPExceptionOptions = {
res?: Response
@ -10,7 +9,7 @@ export class HTTPException extends Error {
readonly res?: Response
readonly status: StatusCode
constructor(status: StatusCode = 500, options?: HTTPExceptionOptions) {
super(options?.message || getStatusText(status))
super(options?.message)
this.res = options?.res
this.status = status
}
@ -20,7 +19,7 @@ export class HTTPException extends Error {
}
return new Response(this.message, {
status: this.status,
statusText: getStatusText(this.status),
statusText: this.message,
})
}
}

View File

@ -1,120 +1 @@
export const getStatusText = (statusCode: StatusCode): string => {
const text = statuses[statusCode]
return text
}
export type StatusCode =
| 100
| 101
| 102
| 103
| 200
| 201
| 202
| 203
| 204
| 205
| 206
| 207
| 208
| 226
| 300
| 301
| 302
| 303
| 304
| 305
| 306
| 307
| 308
| 400
| 401
| 402
| 403
| 404
| 405
| 406
| 407
| 408
| 409
| 410
| 411
| 412
| 413
| 414
| 415
| 416
| 417
| 418
| 420
| 421
| 422
| 423
| 424
| 425
| 426
| 428
| 429
| 431
| 444
| 449
| 450
| 451
| 499
| 500
| 501
| 502
| 503
| 504
| 505
| 506
| 507
| 508
| 509
| 510
| 511
| 598
| 599
const statuses: Record<StatusCode | number, string> = {
100: 'Continue',
101: 'Switching Protocols',
102: 'Processing',
103: 'Early Hints',
200: 'OK',
201: 'Created',
202: 'Accepted',
204: 'No Content',
206: 'Partial Content',
301: 'Moved Permanently',
302: 'Moved Temporarily',
303: 'See Other',
304: 'Not Modified',
307: 'Temporary Redirect',
308: 'Permanent Redirect',
400: 'Bad Request',
401: 'Unauthorized',
402: 'Payment Required',
403: 'Forbidden',
404: 'Not Found',
405: 'Not Allowed',
406: 'Not Acceptable',
408: 'Request Time-out',
409: 'Conflict',
410: 'Gone',
411: 'Length Required',
412: 'Precondition Failed',
413: 'Request Entity Too Large',
414: 'Request-URI Too Large',
415: 'Unsupported Media Type',
416: 'Requested Range Not Satisfiable',
421: 'Misdirected Request',
429: 'Too Many Requests',
500: 'Internal Server Error',
501: 'Not Implemented',
502: 'Bad Gateway',
503: 'Service Temporarily Unavailable',
504: 'Gateway Time-out',
505: 'HTTP Version Not Supported',
507: 'Insufficient Storage',
}
export type StatusCode = number

View File

@ -826,7 +826,9 @@ describe('Error handle', () => {
const app = new Hono()
app.get('/exception', () => {
throw new HTTPException(401)
throw new HTTPException(401, {
message: 'Unauthorized',
})
})
it('Should return 401 response', async () => {

View File

@ -4,7 +4,9 @@ describe('HTTPFatalError', () => {
it('Should be 401 HTTP exception object', () => {
// We should throw an exception if is not authorized
// because next handlers should not be fired.
const exception = new HTTPException(401)
const exception = new HTTPException(401, {
message: 'Unauthorized',
})
expect(exception.status).toBe(401)
expect(exception.message).toBe('Unauthorized')
const res = exception.getResponse()

View File

@ -1,5 +1,4 @@
import type { StatusCode } from './utils/http-status'
import { getStatusText } from './utils/http-status'
type HTTPExceptionOptions = {
res?: Response
@ -10,7 +9,7 @@ export class HTTPException extends Error {
readonly res?: Response
readonly status: StatusCode
constructor(status: StatusCode = 500, options?: HTTPExceptionOptions) {
super(options?.message || getStatusText(status))
super(options?.message)
this.res = options?.res
this.status = status
}
@ -20,7 +19,7 @@ export class HTTPException extends Error {
}
return new Response(this.message, {
status: this.status,
statusText: getStatusText(this.status),
statusText: this.message,
})
}
}

View File

@ -1,7 +0,0 @@
import { getStatusText } from './http-status'
describe('http-status utility', () => {
it('getStatusText', () => {
expect(getStatusText(200)).toBe('OK')
})
})

View File

@ -1,120 +1 @@
export const getStatusText = (statusCode: StatusCode): string => {
const text = statuses[statusCode]
return text
}
export type StatusCode =
| 100
| 101
| 102
| 103
| 200
| 201
| 202
| 203
| 204
| 205
| 206
| 207
| 208
| 226
| 300
| 301
| 302
| 303
| 304
| 305
| 306
| 307
| 308
| 400
| 401
| 402
| 403
| 404
| 405
| 406
| 407
| 408
| 409
| 410
| 411
| 412
| 413
| 414
| 415
| 416
| 417
| 418
| 420
| 421
| 422
| 423
| 424
| 425
| 426
| 428
| 429
| 431
| 444
| 449
| 450
| 451
| 499
| 500
| 501
| 502
| 503
| 504
| 505
| 506
| 507
| 508
| 509
| 510
| 511
| 598
| 599
const statuses: Record<StatusCode | number, string> = {
100: 'Continue',
101: 'Switching Protocols',
102: 'Processing',
103: 'Early Hints',
200: 'OK',
201: 'Created',
202: 'Accepted',
204: 'No Content',
206: 'Partial Content',
301: 'Moved Permanently',
302: 'Moved Temporarily',
303: 'See Other',
304: 'Not Modified',
307: 'Temporary Redirect',
308: 'Permanent Redirect',
400: 'Bad Request',
401: 'Unauthorized',
402: 'Payment Required',
403: 'Forbidden',
404: 'Not Found',
405: 'Not Allowed',
406: 'Not Acceptable',
408: 'Request Time-out',
409: 'Conflict',
410: 'Gone',
411: 'Length Required',
412: 'Precondition Failed',
413: 'Request Entity Too Large',
414: 'Request-URI Too Large',
415: 'Unsupported Media Type',
416: 'Requested Range Not Satisfiable',
421: 'Misdirected Request',
429: 'Too Many Requests',
500: 'Internal Server Error',
501: 'Not Implemented',
502: 'Bad Gateway',
503: 'Service Temporarily Unavailable',
504: 'Gateway Time-out',
505: 'HTTP Version Not Supported',
507: 'Insufficient Storage',
}
export type StatusCode = number