/// <summary> /// Write Open API Info to the given writer. /// </summary> /// <param name="writer">The writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for json, empty for YAML writer.WriteStartObject(); // title writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocTitle, Title); // description writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocDescription, Description); // termsOfService writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocTermsOfService, TermsOfService?.OriginalString); // contact object writer.WriteOptionalObject(OpenApiConstants.OpenApiDocContact, Contact); // license object writer.WriteOptionalObject(OpenApiConstants.OpenApiDocLicense, License); // version writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocVersion, Version?.ToString()); // specification extensions writer.WriteDictionary(Extensions); // } for json, empty for YAML writer.WriteEndObject(); }
private void WriteInternal(IOpenApiWriter writer) { Debug.Assert(writer != null); // { for json, empty for YAML writer.WriteStartObject(); // name writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocName, Name); // in writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocIn, In.ToString()); // description writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocDescription, Description); // required if (In == ParameterLocation.path) { writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocRequired, true); } else { writer.WriteBooleanProperty(OpenApiConstants.OpenApiDocRequired, Required, false); } // deprecated writer.WriteBooleanProperty(OpenApiConstants.OpenApiDocDeprecated, Deprecated, false); // allowEmptyValue writer.WriteBooleanProperty(OpenApiConstants.OpenApiDocDeprecated, AllowEmptyValue, false); // style writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocStyle, Style.ToString()); // explode writer.WriteBooleanProperty(OpenApiConstants.OpenApiDocExplode, Explode, false); // allowReserved writer.WriteBooleanProperty(OpenApiConstants.OpenApiDocAllowReserved, AllowReserved, false); // schema writer.WriteOptionalObject(OpenApiConstants.OpenApiDocSchema, Schema); // example writer.WriteOptionalObject(OpenApiConstants.OpenApiDocExample, Example); // examples writer.WriteOptionalDictionary(OpenApiConstants.OpenApiDocExamples, Examples); // content writer.WriteOptionalDictionary(OpenApiConstants.OpenApiDocContent, Content); // specification extensions writer.WriteDictionary(Extensions); // } for json, empty for YAML writer.WriteEndObject(); }
/// <summary> /// Write Open API server object. /// </summary> /// <param name="writer">The Open API Writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for JSON, empty for YAML writer.WriteStartObject(); // name writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocUrl, Url.OriginalString); // description writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocDescription, Description); // variables writer.WriteOptionalDictionary(OpenApiConstants.OpenApiDocVariables, Variables); // specification extensions writer.WriteDictionary(Extensions); // } for JSON, empty for YAML writer.WriteEndObject(); }
private void WriteInternal(IOpenApiWriter writer) { Debug.Assert(writer != null); // { for json, empty for YAML writer.WriteStartObject(); // description writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocDescription, Description); // headers writer.WriteOptionalDictionary(OpenApiConstants.OpenApiDocHeaders, Headers); // content writer.WriteOptionalDictionary(OpenApiConstants.OpenApiDocContent, Content); // headers writer.WriteOptionalDictionary(OpenApiConstants.OpenApiDocLinks, Links); // Extensions writer.WriteDictionary(Extensions); // } for json, empty for YAML writer.WriteEndObject(); }
/// <summary> /// Write Open API tag object. /// </summary> /// <param name="writer">The Open API Writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for JSON, empty for YAML writer.WriteStartObject(); // name writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocName, Name); // description writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocDescription, Description); // External Docs writer.WriteOptionalObject(OpenApiConstants.OpenApiDocExternalDocs, ExternalDocs); // specification extensions writer.WriteDictionary(Extensions); // } for JSON, empty for YAML writer.WriteEndObject(); }
/// <summary> /// Write Open API server variable object. /// </summary> /// <param name="writer">The Open API Writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for JSON, empty for YAML writer.WriteStartObject(); // default writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocDefault, Default); // description writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocDescription, Description); // enums if (Enums != null && Enums.Any()) { writer.WritePropertyName(OpenApiConstants.OpenApiDocEnum); writer.WriteStartArray(); foreach (string item in Enums) { writer.WriteValue(item); } writer.WriteEndArray(); } // specification extensions writer.WriteDictionary(Extensions); // } for JSON, empty for YAML writer.WriteEndObject(); }
/// <summary> /// Serialize to OpenAPI V2 document without using reference. /// </summary> public void SerializeAsV2WithoutReference(IOpenApiWriter writer) { writer.WriteStartObject(); // description writer.WriteRequiredProperty(OpenApiConstants.Description, Description); var extensionsClone = new Dictionary <string, IOpenApiExtension>(Extensions); if (Content != null) { var mediatype = Content.FirstOrDefault(); if (mediatype.Value != null) { // schema writer.WriteOptionalObject( OpenApiConstants.Schema, mediatype.Value.Schema, (w, s) => s.SerializeAsV2(w)); // examples if (Content.Values.Any(m => m.Example != null)) { writer.WritePropertyName(OpenApiConstants.Examples); writer.WriteStartObject(); foreach (var mediaTypePair in Content) { if (mediaTypePair.Value.Example != null) { writer.WritePropertyName(mediaTypePair.Key); writer.WriteAny(mediaTypePair.Value.Example); } } writer.WriteEndObject(); } writer.WriteExtensions(mediatype.Value.Extensions, OpenApiSpecVersion.OpenApi2_0); foreach (var key in mediatype.Value.Extensions.Keys) { // The extension will already have been serialized as part of the call above, // so remove it from the cloned collection so we don't write it again. extensionsClone.Remove(key); } } } // headers writer.WriteOptionalMap(OpenApiConstants.Headers, Headers, (w, h) => h.SerializeAsV2(w)); // extension writer.WriteExtensions(extensionsClone, OpenApiSpecVersion.OpenApi2_0); writer.WriteEndObject(); }
/// <summary> /// Write Open API reference object to the given writer. /// </summary> /// <param name="writer">The writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for JSON, empty for YAML writer.WriteStartObject(); // $ref writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocDollarRef, Ref); // } for JSON, empty for YAML writer.WriteEndObject(); }
/// <summary> /// Write Open API document to the given writer. /// </summary> /// <param name="writer">The writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for json, empty for YAML writer.WriteStartObject(); // openapi:3.0.0 writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocOpenApi, OpenApi.ToString()); // info writer.WriteRequiredObject(OpenApiConstants.OpenApiDocInfo, Info); // servers writer.WriteOptionalCollection(OpenApiConstants.OpenApiDocServers, Servers); // paths writer.WriteRequiredObject(OpenApiConstants.OpenApiDocPaths, Paths); // components writer.WriteOptionalObject(OpenApiConstants.OpenApiDocComponents, Components); // security writer.WriteOptionalCollection(OpenApiConstants.OpenApiDocSecurity, Security); // tags writer.WriteOptionalCollection(OpenApiConstants.OpenApiDocTags, Tags); // external docs writer.WriteOptionalObject(OpenApiConstants.OpenApiDocExternalDocs, ExternalDoc); // specification extensions writer.WriteDictionary(Extensions); // } for json, empty for YAML writer.WriteEndObject(); // flush writer.Flush(); }
/// <summary> /// Serialize to OpenAPI V3 document without using reference. /// </summary> public void SerializeAsV3WithoutReference(IOpenApiWriter writer) { writer.WriteStartObject(); // description writer.WriteRequiredProperty(OpenApiConstants.Description, Description); // headers writer.WriteOptionalMap(OpenApiConstants.Headers, Headers, (w, h) => h.SerializeAsV3(w)); // content writer.WriteOptionalMap(OpenApiConstants.Content, Content, (w, c) => c.SerializeAsV3(w)); // links writer.WriteOptionalMap(OpenApiConstants.Links, Links, (w, l) => l.SerializeAsV3(w)); // extension writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0); writer.WriteEndObject(); }
/// <summary> /// Write Open API license object to the given writer. /// </summary> /// <param name="writer">The writer.</param> public virtual void Write(IOpenApiWriter writer) { if (writer == null) { throw Error.ArgumentNull("writer"); } // { for json, empty for YAML writer.WriteStartObject(); // name writer.WriteRequiredProperty(OpenApiConstants.OpenApiDocName, Name); // url writer.WriteOptionalProperty(OpenApiConstants.OpenApiDocUrl, Url?.OriginalString); // specification extensions writer.WriteDictionary(Extensions); // } for json, empty for YAML writer.WriteEndObject(); }