Skip to content

Commit

Permalink
Add HTTP code 425 Too Early (hapijs#261)
Browse files Browse the repository at this point in the history
* Add HTTP code 425 Too Early

* Update index.ts

Co-authored-by: Eran Hammer <[email protected]>
  • Loading branch information
Fcmam5 and hueniverse committed Jan 3, 2020
1 parent 856997e commit e827e87
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 1 deletion.
20 changes: 20 additions & 0 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -584,6 +584,26 @@ Generates the following response payload:
}
```

##### `Boom.tooEarly([message], [data])`

Returns a 425 Too Early error where:
- `message` - optional message.
- `data` - optional additional error data.

```js
Boom.tooEarly('the server is unwilling to risk processing the request');
```

Generates the following response payload:

```json
{
"statusCode": 425,
"error": "Too Early",
"message": "the server is unwilling to risk processing the request"
}
```

##### `Boom.preconditionRequired([message], [data])`

Returns a 428 Precondition Required error where:
Expand Down
10 changes: 10 additions & 0 deletions lib/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,16 @@ export function locked<Data>(message?: string, data?: Data): Boom<Data>;
*/
export function failedDependency<Data>(message?: string, data?: Data): Boom<Data>;

/**
* Returns a 425 Too Early error
*
* @param message - Optional message
* @param data - Optional additional error data
*
* @returns A 425 Too Early error
*/
export function tooEarly<Data>(message?: string, data?: Data): Boom<Data>;


/**
* Returns a 428 Precondition Required error
Expand Down
7 changes: 6 additions & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const internals = {
[422, 'Unprocessable Entity'],
[423, 'Locked'],
[424, 'Failed Dependency'],
[425, 'Unordered Collection'],
[425, 'Too Early'],
[426, 'Upgrade Required'],
[428, 'Precondition Required'],
[429, 'Too Many Requests'],
Expand Down Expand Up @@ -333,6 +333,11 @@ exports.failedDependency = function (message, data) {
return new exports.Boom(message, { statusCode: 424, data, ctor: exports.failedDependency });
};

exports.tooEarly = function (message, data) {

return new exports.Boom(message, { statusCode: 425, data, ctor: exports.tooEarly });
};


exports.preconditionRequired = function (message, data) {

Expand Down
13 changes: 13 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,19 @@ describe('Boom', () => {
});
});

describe('tooEarly()', () => {

it('returns a 425 error statusCode', () => {

expect(Boom.tooEarly().output.statusCode).to.equal(425);
});

it('sets the message with the passed in message', () => {

expect(Boom.tooEarly('my message').message).to.equal('my message');
});
});


describe('preconditionRequired()', () => {

Expand Down
9 changes: 9 additions & 0 deletions test/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,15 @@ expect.type<Boom.Boom>(Boom.failedDependency());
expect.error(Boom.failedDependency(424));
expect.error(Boom.failedDependency({ foo: 'bar' }));

// tooEarly()

expect.type<Boom.Boom>(Boom.tooEarly('won\'t process your request', 'some data'));
expect.type<Boom.Boom>(Boom.tooEarly('won\'t process your request', { foo: 'bar' }));
expect.type<Boom.Boom>(Boom.tooEarly('won\'t process your request'));
expect.type<Boom.Boom>(Boom.tooEarly());

expect.error(Boom.tooEarly(425));
expect.error(Boom.tooEarly({ foo: 'bar' }));

// preconditionRequired()

Expand Down

0 comments on commit e827e87

Please sign in to comment.