diff --git a/parser/Parser/EndpointParser.cs b/parser/Parser/EndpointParser.cs index fe1da0d..ee6d032 100644 --- a/parser/Parser/EndpointParser.cs +++ b/parser/Parser/EndpointParser.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using Microsoft.OpenApi.Models; using Models; @@ -12,19 +14,33 @@ namespace Parser foreach (var path in openApiDocument.Paths) { - endpoints.Add(ParseEndpoint(path)); + endpoints.Add(ParseEndpoint(path, GetBasePath(openApiDocument))); } return endpoints; } - static Endpoint ParseEndpoint(KeyValuePair path) + static Endpoint ParseEndpoint(KeyValuePair path, string basePath) { - Endpoint endpoint = new Endpoint(path.Key); + Endpoint endpoint = new Endpoint(basePath + path.Key); foreach (KeyValuePair operation in path.Value.Operations) { endpoint.Requests.Add(RequestParser.ParseRequest(operation)); } return endpoint; } + + static string GetBasePath(OpenApiDocument openApiDocument) + { + string basePath = string.Empty; + if (openApiDocument.Servers.Any()) + { + basePath = new Uri(openApiDocument.Servers.First().Url).AbsolutePath; + } + + if (basePath == "/") + basePath = string.Empty; + + return basePath; + } } }