Skip to content

Commit b957c41

Browse files
authored
Add case-insensitive security scheme support (#83)
1 parent 87bf19e commit b957c41

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

demo/examples/openapi-cos.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@
138138
},
139139
"components": {
140140
"securitySchemes": {
141-
"BearerAuth": { "type": "http", "scheme": "bearer" },
141+
"BearerAuth": { "type": "http", "scheme": "BeAreR" },
142142
"BasicAuth": { "type": "http", "scheme": "basic" }
143143
},
144144
"schemas": {

packages/docusaurus-plugin-openapi/src/openapi.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,23 @@ import {
2525
ApiItem,
2626
RequestBodyObject,
2727
SchemaObject,
28+
HttpSecuritySchemeObject,
29+
ApiKeySecuritySchemeObject,
30+
Oauth2SecuritySchemeObject,
31+
OpenIdConnectSecuritySchemeObject,
2832
} from "./types";
2933

34+
function isHttpSecuritySchemeObject(
35+
item:
36+
| ReferenceObject
37+
| ApiKeySecuritySchemeObject
38+
| HttpSecuritySchemeObject
39+
| Oauth2SecuritySchemeObject
40+
| OpenIdConnectSecuritySchemeObject
41+
): item is HttpSecuritySchemeObject {
42+
return (item as HttpSecuritySchemeObject).type === "http";
43+
}
44+
3045
function isOperationObject(
3146
item:
3247
| string
@@ -234,6 +249,13 @@ export async function loadOpenapi(
234249
// Add security schemes so we know how to handle security.
235250
item.securitySchemes = dereffedSpec.components?.securitySchemes;
236251

252+
// Make sure schemes are lowercase. See: https://github.com/cloud-annotations/docusaurus-plugin-openapi/issues/79
253+
Object.values(item.securitySchemes ?? {}).forEach((auth) => {
254+
if (isHttpSecuritySchemeObject(auth)) {
255+
auth.scheme = auth.scheme.toLowerCase();
256+
}
257+
});
258+
237259
item.permalink = normalizeUrl([baseUrl, routeBasePath, item.id]);
238260

239261
const prev =

0 commit comments

Comments
 (0)