OpenAPI.NET.Parser.psm1
$script:init = $true function Initialize-Parsers { [CmdletBinding()] param() if ($script:init) { $script:init = $false # Register JSON parser Write-Verbose -Message 'Initializing JSON parser...' [OpenAPI.NET.SpecParserFactory]::Instance.RegisterSpecParser([OpenAPI.NET.SpecificationType]::JSON, [OpenAPI.NET.Json.JsonParser]::new()) Write-Verbose -Message 'All initialization done.' } } function Import-Specification { [CmdletBinding()] param( [Parameter(Mandatory=$true)] $FilePath, [Parameter(Mandatory=$false)] [ValidateSet('JSON')] $Language = 'JSON', [Parameter(Mandatory=$false)] [ValidateSet('OpenAPIv2')] $Format = 'OpenAPIv2' ) Initialize-Parsers $parser = $null if ($Language -eq 'JSON') { $parser = [OpenAPI.NET.SpecParserFactory]::Instance.GetSpecParser([OpenAPI.NET.SpecificationType]::JSON); } if (-not $parser) { Write-Error 'Failed to initialize parser for given language.' return } $rootObjectType = $null if ($Format -eq 'OpenAPIv2') { $rootObjectType = [OpenAPI.NET.Models.BuiltIn.OpenAPIv2.OpenAPIv2] } if (-not $rootObjectType) { Write-Error 'Failed to find object model for given format.' return } $parser.Parse($FilePath, $rootObjectType) } function Export-Specification { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [OpenAPI.NET.Models.SpecificationObject] $Specification, [Parameter(Mandatory=$false)] [ValidateSet('JSON')] $Language = 'JSON' ) Initialize-Parsers $parser = $null if ($Language -eq 'OpenAPIv2') { $parser = [OpenAPI.NET.SpecParserFactory]::Instance.GetSpecParser([OpenAPI.NET.SpecificationType]::JSON); } if (-not $parser) { Write-Error 'Failed to initialize parser for given language.' return } $parser.Serialize($Specification) } |