Skip to content

Commit 56d62e5

Browse files
committed
feat: add ignoredHeaderParameters option
1 parent 9aac636 commit 56d62e5

File tree

4 files changed

+47
-13
lines changed

4 files changed

+47
-13
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ ReDoc makes use of the following [vendor extensions](http://swagger.io/specifica
138138
* [`x-displayName`](docs/redoc-vendor-extensions.md#x-displayname) - specify human-friendly names for the menu categories
139139
* [`x-tagGroups`](docs/redoc-vendor-extensions.md#x-tagGroups) - group tags by categories in the side menu
140140
* [`x-servers`](docs/redoc-vendor-extensions.md#x-servers) - ability to specify different servers for API (backported from OpenAPI 3.0)
141+
* [`x-ignoredHeaderParameters`](docs/redoc-vendor-extensions.md#x-ignoredHeaderParameters) - ability to specify header parameter names to ignore
141142

142143
### `<redoc>` tag attributes
143144
* `spec-url` - relative or absolute url to your spec file;

docs/redoc-vendor-extensions.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,28 @@ x-tagGroups:
5454
- Secondary Stats
5555
```
5656
57-
#### <a name="logoObject"></a>Logo Object
57+
#### x-ignoredHeaderParameters
58+
59+
60+
| Field Name | Type | Description |
61+
| :-------------------------- | :-----------: | :---------- |
62+
| x-ignoredHeaderParameters | [ string ] | A list of ignored headers |
63+
64+
65+
###### Usage in Redoc
66+
`x-ignoredHeaderParameters` is used to specify header parameter names which are ignored by ReDoc
67+
68+
###### x-ignoredHeaderParameters example
69+
```yaml
70+
swagger: '2.0'
71+
info:
72+
...
73+
tags: [...]
74+
x-ignoredHeaderParameters:
75+
- Accept
76+
- User-Agent
77+
- X-Test-Header
78+
```
5879

5980
### Info Object vendor extensions
6081
Extends OpenAPI [Info Object](http://swagger.io/specification/#infoObject)

lib/components/ParamsList/params-list.ts

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
'use strict';
2-
import { Component, Input, ChangeDetectionStrategy, OnInit } from '@angular/core';
3-
import { BaseComponent, SpecManager } from '../base';
1+
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
2+
3+
import { OptionsService } from '../../services/options.service';
44
import { SchemaHelper } from '../../services/schema-helper.service';
5+
import { BaseComponent, SpecManager } from '../base';
56

67
function safePush(obj, prop, item) {
78
if (!obj[prop]) obj[prop] = [];
@@ -12,28 +13,37 @@ function safePush(obj, prop, item) {
1213
selector: 'params-list',
1314
templateUrl: './params-list.html',
1415
styleUrls: ['./params-list.css'],
15-
changeDetection: ChangeDetectionStrategy.OnPush
16+
changeDetection: ChangeDetectionStrategy.OnPush,
1617
})
1718
export class ParamsList extends BaseComponent implements OnInit {
18-
@Input() pointer:string;
19+
@Input() pointer: string;
1920

2021
params: Array<any>;
2122
empty: boolean;
2223
bodyParam: any;
2324

24-
constructor(specMgr:SpecManager) {
25+
constructor(specMgr: SpecManager, private options: OptionsService) {
2526
super(specMgr);
2627
}
2728

2829
init() {
2930
this.params = [];
3031
let paramsList = this.specMgr.getOperationParams(this.pointer);
3132

32-
paramsList = paramsList.map(paramSchema => {
33-
let propPointer = paramSchema._pointer;
34-
if (paramSchema.in === 'body') return paramSchema;
35-
return SchemaHelper.preprocess(paramSchema, propPointer, this.pointer);
36-
});
33+
const igrnoredHeaders =
34+
this.specMgr.schema['x-ignoredHeaderParameters'] ||
35+
this.options.options.ignoredHeaderParameters ||
36+
[];
37+
38+
paramsList = paramsList
39+
.map(paramSchema => {
40+
let propPointer = paramSchema._pointer;
41+
if (paramSchema.in === 'body') return paramSchema;
42+
return SchemaHelper.preprocess(paramSchema, propPointer, this.pointer);
43+
})
44+
.filter(param => {
45+
return param.in !== 'header' || igrnoredHeaders.indexOf(param.name) < 0;
46+
});
3747

3848
let paramsMap = this.orderParams(paramsList);
3949

lib/services/options.service.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ const OPTION_NAMES = new Set([
2020
'noAutoAuth',
2121
'pathInMiddlePanel',
2222
'untrustedSpec',
23-
'hideLoading'
23+
'hideLoading',
24+
'ignoredHeaderParameters',
2425
]);
2526

2627
export interface Options {
@@ -38,6 +39,7 @@ export interface Options {
3839
untrustedSpec?: boolean;
3940
hideLoading?: boolean;
4041
spec?: any;
42+
ignoredHeaderParameters?: string[];
4143
}
4244

4345
@Injectable()

0 commit comments

Comments
 (0)