From b9871ffbb7b8148a2f4df250cb953696d952c3ed Mon Sep 17 00:00:00 2001 From: Ryan Gregg Date: Fri, 26 May 2017 16:05:42 -0700 Subject: [PATCH] Fix issues with swagger --- ApiDocs.Publishing/Swagger/SwaggerClasses.cs | 3 +++ ApiDocs.Publishing/Swagger/SwaggerExtensionMethods.cs | 5 +++-- ApiDocs.Publishing/Swagger/SwaggerWriter.cs | 9 ++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ApiDocs.Publishing/Swagger/SwaggerClasses.cs b/ApiDocs.Publishing/Swagger/SwaggerClasses.cs index a28af39..5d616c5 100644 --- a/ApiDocs.Publishing/Swagger/SwaggerClasses.cs +++ b/ApiDocs.Publishing/Swagger/SwaggerClasses.cs @@ -57,6 +57,9 @@ internal class SwaggerMethod [JsonProperty("responses", NullValueHandling=NullValueHandling.Ignore)] public Dictionary Responses { get; set; } + [JsonProperty("operationId")] + public string OperationId { get; internal set; } + public SwaggerMethod() { this.Parameters = new List(); diff --git a/ApiDocs.Publishing/Swagger/SwaggerExtensionMethods.cs b/ApiDocs.Publishing/Swagger/SwaggerExtensionMethods.cs index 21871d2..1acff89 100644 --- a/ApiDocs.Publishing/Swagger/SwaggerExtensionMethods.cs +++ b/ApiDocs.Publishing/Swagger/SwaggerExtensionMethods.cs @@ -61,6 +61,7 @@ internal static string ToSwaggerTypeString(this SimpleDataType type, string cust case SimpleDataType.Object: return "object"; case SimpleDataType.Collection: + return "collection"; throw new ArgumentException(); default: return type.ToString().ToLower(); @@ -137,7 +138,7 @@ internal static SwaggerParameter ToSwaggerParameter(this ParameterDefinition par SwaggerParameter p = new SwaggerParameter() { Name = parameter.Name, - Required = parameter.Required.Value, + Required = parameter.Required.HasValue ? parameter.Required.Value : false, Type = parameter.Type.ToSwaggerTypeString(), Description = parameter.Description }; @@ -171,7 +172,7 @@ internal static SwaggerParameter ToSwaggerParameter(this ParameterDefinition par /// Method. internal static SwaggerMethod ToSwaggerMethod(this MethodDefinition method) { - var output = new SwaggerMethod { Summary = method.Title }; + var output = new SwaggerMethod { Summary = method.Title, OperationId = Guid.NewGuid().ToString() }; if (!string.IsNullOrEmpty(method.Description)) output.Description = method.Description; diff --git a/ApiDocs.Publishing/Swagger/SwaggerWriter.cs b/ApiDocs.Publishing/Swagger/SwaggerWriter.cs index 76b4632..58578c7 100644 --- a/ApiDocs.Publishing/Swagger/SwaggerWriter.cs +++ b/ApiDocs.Publishing/Swagger/SwaggerWriter.cs @@ -114,11 +114,17 @@ private object BuildSecurityDefinition() { var foundScopes = this.Documents.AuthScopes; + Dictionary authScopes = new Dictionary(); + foreach(var scope in foundScopes) + { + authScopes[scope.Scope] = scope.Description; + } + return new Dictionary { { this.AuthenticationParameters.ProviderName, new { type = this.AuthenticationParameters.AuthType, - scopes = foundScopes.ToDictionary(x => x.Scope, x => x.Description), + scopes = authScopes, flow = this.AuthenticationParameters.OAuthFlow, authorizationUrl = this.AuthenticationParameters.AuthorizationEndPoint }}}; @@ -279,6 +285,7 @@ private IDictionary> GeneratePathsFro // Make sure any query string parameters on this method are included in the existing definition var missingQueryParameters = method.MissingRequestParameters(true); + if (existing.Parameters == null) { existing.Parameters = new List(); }; existing.Parameters.AddRange(from qp in missingQueryParameters select qp.ToSwaggerParameter()); } }