Skip to content
Permalink
Browse files

added multiple clients from first tag and operation id generator (#2169)

  • Loading branch information...
Place1 authored and RicoSuter committed May 15, 2019
1 parent c1d0907 commit 773220885f7e9ab317302dc3806c03313d403405
@@ -0,0 +1,43 @@
//-----------------------------------------------------------------------
// <copyright file="MultipleClientsFromFirstTagAndOperationIdGenerator.cs" company="NSwag">
// Copyright (c) Rico Suter. All rights reserved.
// </copyright>
// <license>https://github.com/NSwag/NSwag/blob/master/LICENSE.md</license>
// <author>Rico Suter, mail@rsuter.com</author>
//-----------------------------------------------------------------------

using NJsonSchema;
using System.Linq;

namespace NSwag.CodeGeneration.OperationNameGenerators
{
/// <summary>Generates the client name based on the first tag and operation name based on the operation id (operation name = operationId, client name = first tag).</summary>
public class MultipleClientsFromFirstTagAndOperationIdGenerator : IOperationNameGenerator
{
/// <summary>Gets a value indicating whether the generator supports multiple client classes.</summary>
public bool SupportsMultipleClients { get; } = true;

/// <summary>Gets the client name for a given operation (may be empty).</summary>
/// <param name="document">The Swagger document.</param>
/// <param name="path">The HTTP path.</param>
/// <param name="httpMethod">The HTTP method.</param>
/// <param name="operation">The operation.</param>
/// <returns>The client name.</returns>
public virtual string GetClientName(SwaggerDocument document, string path, string httpMethod, SwaggerOperation operation)
{
return ConversionUtilities.ConvertToUpperCamelCase(operation.Tags.FirstOrDefault(), false);
}

/// <summary>Gets the operation name for a given operation.</summary>
/// <param name="document">The Swagger document.</param>
/// <param name="path">The HTTP path.</param>
/// <param name="httpMethod">The HTTP method.</param>
/// <param name="operation">The operation.</param>
/// <returns>The operation name.</returns>
public virtual string GetOperationName(SwaggerDocument document, string path, string httpMethod, SwaggerOperation operation)
{
var operationName = operation.OperationId;
return operationName;
}
}
}
@@ -20,10 +20,13 @@ public enum OperationGenerationMode
/// <summary>From the first operation tag and path segments (operation name = last segment, client name = first operation tag).</summary>
MultipleClientsFromFirstTagAndPathSegments,

/// <summary>From the first operation tag and operation ID (operation name = operation ID, client name = first operation tag).</summary>
MultipleClientsFromFirstTagAndOperationId,

/// <summary>From the Swagger operation ID.</summary>
SingleClientFromOperationId,

/// <summary>From path segments suffixed by HTTP operation name</summary>
SingleClientFromPathSegments,
}
}
}
@@ -21,6 +21,8 @@ internal static OperationGenerationMode GetOperationGenerationMode(IOperationNam
return OperationGenerationMode.MultipleClientsFromPathSegments;
if (operationNameGenerator is MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator)
return OperationGenerationMode.MultipleClientsFromFirstTagAndPathSegments;
if (operationNameGenerator is MultipleClientsFromFirstTagAndOperationIdGenerator)
return OperationGenerationMode.MultipleClientsFromFirstTagAndOperationId;
if (operationNameGenerator is SingleClientFromOperationIdOperationNameGenerator)
return OperationGenerationMode.SingleClientFromOperationId;
if (operationNameGenerator is SingleClientFromPathSegmentsOperationNameGenerator)
@@ -36,6 +38,8 @@ internal static IOperationNameGenerator GetOperationNameGenerator(OperationGener
return new MultipleClientsFromPathSegmentsOperationNameGenerator();
else if (operationGenerationMode == OperationGenerationMode.MultipleClientsFromFirstTagAndPathSegments)
return new MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator();
else if (operationGenerationMode == OperationGenerationMode.MultipleClientsFromFirstTagAndOperationId)
return new MultipleClientsFromFirstTagAndOperationIdGenerator();
else if (operationGenerationMode == OperationGenerationMode.SingleClientFromOperationId)
return new SingleClientFromOperationIdOperationNameGenerator();
else if (operationGenerationMode == OperationGenerationMode.SingleClientFromPathSegments)

0 comments on commit 7732208

Please sign in to comment.
You can’t perform that action at this time.