Private/Document/Get-OpenApiOperationId.ps1
|
function Get-OpenApiOperationId { <# .SYNOPSIS Generates an operationId '<method><PathPascal>' for an operation without one (GET /pets/{petId} -> getPetsPetId). #> [CmdletBinding()] [OutputType([string])] param( [Parameter(Mandatory)] [string]$Method, [Parameter(Mandatory)] [AllowEmptyString()] [string]$Path ) $builder = New-Object -TypeName System.Text.StringBuilder -ArgumentList $Method.ToLowerInvariant() $segments = @($Path.Split('/') | Where-Object { $_ -ne '' }) foreach ($segment in $segments) { $clean = $segment -replace '[^A-Za-z0-9]+', ' ' if ([string]::IsNullOrWhiteSpace($clean)) { continue } $pascal = ConvertTo-PascalCase -Value $clean.Trim() [void]$builder.Append(($pascal -replace '[^A-Za-z0-9]', '')) } if ($builder.Length -eq $Method.Length) { [void]$builder.Append('Root') } return $builder.ToString() } |