Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Fix some string API usage
  • Loading branch information
lahma committed Apr 21, 2025
commit 1044bcf89ae6d7561d960b7d5c2c0354128c536d
15 changes: 6 additions & 9 deletions src/NSwag.CodeGeneration/ClientGeneratorBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ protected abstract IEnumerable<CodeArtifact> GenerateClientTypes(string controll
protected abstract TOperationModel CreateOperationModel(OpenApiOperation operation,
ClientGeneratorBaseSettings settings);

private static readonly char[] pathTrimChars = ['/'];

private List<TOperationModel> GetOperations(OpenApiDocument document)
{
document.GenerateOperationIds();
Expand All @@ -158,26 +160,21 @@ private List<TOperationModel> GetOperations(OpenApiDocument document)
{
foreach (var p in pair.Value.ActualPathItem)
{
var path = pair.Key.TrimStart('/');
var path = pair.Key.TrimStart(pathTrimChars);
var httpMethod = p.Key;
var operation = p.Value;

var operationName =
BaseSettings.OperationNameGenerator.GetOperationName(document, path, httpMethod, operation);
var operationName = BaseSettings.OperationNameGenerator.GetOperationName(document, path, httpMethod, operation);

if (operationName.Contains("."))
{
operationName = operationName.Replace(".", "_");
}
operationName = operationName.Replace('.', '_');

if (operationName.EndsWith("Async", StringComparison.Ordinal))
{
operationName = operationName.Substring(0, operationName.Length - "Async".Length);
}

var operationModel = CreateOperationModel(operation, BaseSettings);
operationModel.ControllerName =
BaseSettings.OperationNameGenerator.GetClientName(document, path, httpMethod, operation);
operationModel.ControllerName = BaseSettings.OperationNameGenerator.GetClientName(document, path, httpMethod, operation);
operationModel.Path = path;
operationModel.HttpMethod = httpMethod;
operationModel.OperationName = operationName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ internal static string ConvertPathToName(string path)
{
return path
.Split('/')
.Where(p => !p.Contains("{") && !string.IsNullOrWhiteSpace(p))
.Where(p => !p.Contains('{') && !string.IsNullOrWhiteSpace(p))
.Reverse()
.FirstOrDefault() ?? "Index";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public virtual string GetClientName(OpenApiDocument document, string path, strin
{
return path
.Split('/')
.Where(p => !p.Contains("{") && !string.IsNullOrWhiteSpace(p))
.Where(p => !p.Contains('{') && !string.IsNullOrWhiteSpace(p))
.Reverse()
.Skip(1)
.FirstOrDefault() ?? string.Empty;
Expand Down Expand Up @@ -64,7 +64,7 @@ internal static string ConvertPathToName(string path)
{
return path
.Split('/')
.Where(p => !p.Contains("{") && !string.IsNullOrWhiteSpace(p))
.Where(p => !p.Contains('{') && !string.IsNullOrWhiteSpace(p))
.Reverse()
.FirstOrDefault() ?? "Index";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static string ConvertPathToName(string path)
{
var name = Regex.Replace(path, @"\{.*?\}", "")
.Split('/', '-', '_')
.Where(part => !part.Contains("{") && !string.IsNullOrWhiteSpace(part))
.Where(part => !part.Contains('{') && !string.IsNullOrWhiteSpace(part))
.Aggregate("", (current, part) => current + CapitalizeFirst(part));

if (string.IsNullOrEmpty(name))
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.Core/OpenApiDocument.cs
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ private static void GenerateOperationIds(
private static string GetOperationNameFromPath(OpenApiOperationDescription operation)
{
var pathSegments = operation.Path.Trim('/').Split('/');
var lastPathSegment = pathSegments.LastOrDefault(s => !s.Contains("{"));
var lastPathSegment = pathSegments.LastOrDefault(s => !s.Contains('{'));
return string.IsNullOrEmpty(lastPathSegment) ? "Anonymous" : lastPathSegment;
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/NSwag.Core/OpenApiParameter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -275,14 +275,14 @@ public bool HasBinaryBodyWithMultipleMimeTypes
var consumes = parent.ActualConsumes;
return consumes?.Count > 0 &&
(consumes.Count > 1 ||
consumes.Any(p => p.Contains("*")));
consumes.Any(p => p.Contains('*')));
}
else
{
var consumes = parent?.ActualRequestBody?.Content;
return consumes?.Any() == true &&
(consumes.Count > 1 ||
consumes.Any(p => p.Key.Contains("*")));
consumes.Any(p => p.Key.Contains('*')));
}
}
}
Expand Down
Loading