[feat] restore headers property (#39206) (#39224)

* [feat] restore headers property

* add tests

* patch: add headers
This commit is contained in:
Todd Kennedy 2019-06-18 18:23:48 -07:00 committed by GitHub
parent 2569b59076
commit 52a4076540
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 43 additions and 1 deletions

View file

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-server](./kibana-plugin-server.md) &gt; [KibanaRequest](./kibana-plugin-server.kibanarequest.md) &gt; [headers](./kibana-plugin-server.kibanarequest.headers.md)
## KibanaRequest.headers property
This property will be removed in future version of this class, please use the `getFilteredHeaders` method instead
<b>Signature:</b>
```typescript
readonly headers: Headers;
```

View file

@ -23,6 +23,7 @@ export declare class KibanaRequest<Params = unknown, Query = unknown, Body = unk
| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [body](./kibana-plugin-server.kibanarequest.body.md) | | <code>Body</code> | |
| [headers](./kibana-plugin-server.kibanarequest.headers.md) | | <code>Headers</code> | This property will be removed in future version of this class, please use the <code>getFilteredHeaders</code> method instead |
| [params](./kibana-plugin-server.kibanarequest.params.md) | | <code>Params</code> | |
| [query](./kibana-plugin-server.kibanarequest.query.md) | | <code>Query</code> | |
| [route](./kibana-plugin-server.kibanarequest.route.md) | | <code>RecursiveReadonly&lt;KibanaRequestRoute&gt;</code> | |
@ -34,3 +35,7 @@ export declare class KibanaRequest<Params = unknown, Query = unknown, Body = unk
| --- | --- | --- |
| [getFilteredHeaders(headersToKeep)](./kibana-plugin-server.kibanarequest.getfilteredheaders.md) | | |
## Remarks
The `headers` property will be deprecated and removed in future versions of this class. Please use the `getFilteredHeaders` method to acesss the list of headers available

View file

@ -20,6 +20,16 @@ import { KibanaRequest } from './request';
import { httpServerMock } from '../http_server.mocks';
describe('KibanaRequest', () => {
describe('get all headers', () => {
it('returns all headers', () => {
const request = httpServerMock.createRawRequest({
headers: { custom: 'one', authorization: 'token' },
});
const kibanaRequest = KibanaRequest.from(request);
expect(kibanaRequest.headers).toEqual({ custom: 'one', authorization: 'token' });
});
});
describe('#getFilteredHeaders', () => {
it('returns request headers', () => {
const request = httpServerMock.createRawRequest({

View file

@ -23,7 +23,7 @@ import { ObjectType, TypeOf } from '@kbn/config-schema';
import { Request } from 'hapi';
import { deepFreeze, RecursiveReadonly } from '../../../utils';
import { filterHeaders } from './headers';
import { filterHeaders, Headers } from './headers';
import { RouteMethod, RouteSchemas, RouteConfigOptions } from './route';
const requestSymbol = Symbol('request');
@ -41,6 +41,12 @@ export interface KibanaRequestRoute {
const secretHeaders = ['authorization'];
/**
* Kibana specific abstraction for an incoming request.
*
* @remarks
* The `headers` property will be deprecated and removed in future versions
* of this class. Please use the `getFilteredHeaders` method to acesss the
* list of headers available
*
* @public
* */
export class KibanaRequest<Params = unknown, Query = unknown, Body = unknown> {
@ -48,6 +54,7 @@ export class KibanaRequest<Params = unknown, Query = unknown, Body = unknown> {
* Factory for creating requests. Validates the request before creating an
* instance of a KibanaRequest.
* @internal
*
*/
public static from<P extends ObjectType, Q extends ObjectType, B extends ObjectType>(
req: Request,
@ -97,6 +104,11 @@ export class KibanaRequest<Params = unknown, Query = unknown, Body = unknown> {
public readonly url: Url;
public readonly route: RecursiveReadonly<KibanaRequestRoute>;
/**
* This property will be removed in future version of this class, please
* use the `getFilteredHeaders` method instead
*/
public readonly headers: Headers;
/** @internal */
protected readonly [requestSymbol]: Request;
@ -109,6 +121,7 @@ export class KibanaRequest<Params = unknown, Query = unknown, Body = unknown> {
private readonly withoutSecretHeaders: boolean
) {
this.url = request.url;
this.headers = request.headers;
// prevent Symbol exposure via Object.getOwnPropertySymbols()
Object.defineProperty(this, requestSymbol, {

View file

@ -192,6 +192,7 @@ export class KibanaRequest<Params = unknown, Query = unknown, Body = unknown> {
static from<P extends ObjectType, Q extends ObjectType, B extends ObjectType>(req: Request, routeSchemas?: RouteSchemas<P, Q, B>, withoutSecretHeaders?: boolean): KibanaRequest<P["type"], Q["type"], B["type"]>;
// (undocumented)
getFilteredHeaders(headersToKeep: string[]): Pick<Record<string, string | string[] | undefined>, string>;
readonly headers: Headers;
// (undocumented)
readonly params: Params;
// (undocumented)