From ba3b2c52e4709ee44e68845a6598ace90eccd9a8 Mon Sep 17 00:00:00 2001 From: Alex Varchuk Date: Wed, 21 Jul 2021 20:08:22 +0300 Subject: [PATCH] feat: add contentMediaType and contentEncoding --- demo/openapi-3-1.yaml | 5 +++++ src/components/Fields/FieldDetails.tsx | 18 ++++++++++++++++-- src/services/models/Schema.ts | 4 ++++ src/types/open-api.ts | 2 ++ src/utils/openapi.ts | 2 ++ 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/demo/openapi-3-1.yaml b/demo/openapi-3-1.yaml index c905d4d8..31063d4b 100644 --- a/demo/openapi-3-1.yaml +++ b/demo/openapi-3-1.yaml @@ -1166,6 +1166,11 @@ components: description: User status type: integer format: int32 + image: + description: User image + type: string + contentEncoding: base64 + contentMediaType: image/png xml: name: User requestBodies: diff --git a/src/components/Fields/FieldDetails.tsx b/src/components/Fields/FieldDetails.tsx index 9ac6cea2..1aad8c61 100644 --- a/src/components/Fields/FieldDetails.tsx +++ b/src/components/Fields/FieldDetails.tsx @@ -59,7 +59,7 @@ export class FieldDetails extends React.PureComponent; + renderedExamples = ; } } @@ -76,6 +76,20 @@ export class FieldDetails extends React.PureComponent )} + {schema.contentEncoding && ( + + {' '}< + {schema.contentEncoding} + >{' '} + + )} + {schema.contentMediaType && ( + + {' '}< + {schema.contentMediaType} + >{' '} + + )} {schema.title && !hideSchemaTitles && ({schema.title}) } {schema.pattern && !hideSchemaPattern && ( @@ -110,7 +124,7 @@ export class FieldDetails extends React.PureComponent )} {(renderDiscriminatorSwitch && renderDiscriminatorSwitch(this.props)) || null} - {field.const && () || null} + {field.const && () || null} ); } diff --git a/src/services/models/Schema.ts b/src/services/models/Schema.ts index adb2de19..2e644a14 100644 --- a/src/services/models/Schema.ts +++ b/src/services/models/Schema.ts @@ -61,6 +61,8 @@ export class SchemaModel { schema: MergedOpenAPISchema; extensions?: Record; const: any; + contentEncoding?: string; + contentMediaType?: string; /** * @param isChild if schema discriminator Child @@ -120,6 +122,8 @@ export class SchemaModel { this.readOnly = !!schema.readOnly; this.writeOnly = !!schema.writeOnly; this.const = schema.const || ''; + this.contentEncoding = schema.contentEncoding; + this.contentMediaType = schema.contentMediaType; if (!!schema.nullable) { if (Array.isArray(this.type) && !this.type.includes('null')) { diff --git a/src/types/open-api.ts b/src/types/open-api.ts index d55e44b1..03898457 100644 --- a/src/types/open-api.ts +++ b/src/types/open-api.ts @@ -147,6 +147,8 @@ export interface OpenAPISchema { enum?: any[]; example?: any; const?: string; + contentEncoding?: string; + contentMediaType?: string; } export interface OpenAPIDiscriminator { diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index c31e3cd2..ad267722 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -83,6 +83,8 @@ const schemaKeywordTypes = { maxLength: 'string', minLength: 'string', pattern: 'string', + contentEncoding: 'string', + contentMediaType: 'string', items: 'array', maxItems: 'array',