mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
Merge pull request #793 from todesstoss/fix-get-ref-on-encoded-ref-path
Fix getRef on encoded path, issue: https://github.com/ferdikoomen/op…
This commit is contained in:
commit
4f056c64aa
@ -34,4 +34,28 @@ describe('getRef', () => {
|
||||
type: 'integer',
|
||||
});
|
||||
});
|
||||
|
||||
it('should produce correct result for encoded ref path', () => {
|
||||
expect(
|
||||
getRef(
|
||||
{
|
||||
openapi: '3.0',
|
||||
info: {
|
||||
title: 'dummy',
|
||||
version: '1.0',
|
||||
},
|
||||
paths: {
|
||||
'/api/user/{id}': {
|
||||
description: 'This is an Example path',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
$ref: '#/paths/~1api~1user~1%7Bid%7D',
|
||||
}
|
||||
)
|
||||
).toEqual({
|
||||
description: 'This is an Example path',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiReference } from '../interfaces/OpenApiReference';
|
||||
|
||||
const escapedSlash = /~1/g;
|
||||
const escapedTilde = /~0/g;
|
||||
|
||||
export function getRef<T>(openApi: OpenApi, item: T & OpenApiReference): T {
|
||||
if (item.$ref) {
|
||||
// Fetch the paths to the definitions, this converts:
|
||||
@ -14,6 +17,7 @@ export function getRef<T>(openApi: OpenApi, item: T & OpenApiReference): T {
|
||||
// if we cannot find it, then we throw an error.
|
||||
let result: any = openApi;
|
||||
paths.forEach((path: string): void => {
|
||||
path = decodeURIComponent(path.replace(escapedSlash, '/').replace(escapedTilde, '~'));
|
||||
if (result.hasOwnProperty(path)) {
|
||||
result = result[path];
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user