From 3a9bc3b5ed110eca1fb40159e8b2ec67724fbb3e Mon Sep 17 00:00:00 2001 From: SergeyMenshykh Date: Wed, 6 Nov 2024 20:26:52 +0000 Subject: [PATCH 1/3] rename restapi model classes --- .../Extensions/RestApiOperationExtensions.cs | 40 ++-- .../Functions.OpenApi/HttpContentFactory.cs | 2 +- ...Response.cs => RestApiExpectedResponse.cs} | 8 +- .../Model/RestApiOperation.cs | 40 ++-- ...rationParameter.cs => RestApiParameter.cs} | 18 +- ...ocation.cs => RestApiParameterLocation.cs} | 4 +- ...meterStyle.cs => RestApiParameterStyle.cs} | 4 +- ...iOperationPayload.cs => RestApiPayload.cs} | 10 +- ...dProperty.cs => RestApiPayloadProperty.cs} | 16 +- ...ApiOperationServer.cs => RestApiServer.cs} | 12 +- ...erVariable.cs => RestApiServerVariable.cs} | 8 +- .../Model/RestApiSpecification.cs | 2 +- .../OpenApi/OpenApiDocumentParser.cs | 32 +-- .../OpenApiKernelPluginFactory.cs | 4 +- .../RestApiOperationRunner.cs | 6 +- .../FormStyleParameterSerializer.cs | 8 +- .../PipeDelimitedStyleParameterSerializer.cs | 6 +- .../SimpleStyleParameterSerializer.cs | 8 +- .../SpaceDelimitedStyleParameterSerializer.cs | 6 +- .../RestApiOperationExtensionsTests.cs | 30 +-- .../OpenApi/OpenApiDocumentParserV20Tests.cs | 22 +- .../OpenApi/OpenApiDocumentParserV30Tests.cs | 22 +- .../OpenApi/OpenApiDocumentParserV31Tests.cs | 20 +- .../OpenApi/RestApiOperationRunnerTests.cs | 198 +++++++++--------- .../OpenApi/RestApiOperationTests.cs | 124 +++++------ .../FormStyleParametersSerializerTests.cs | 36 ++-- ...DelimitedStyleParametersSerializerTests.cs | 20 +- .../SimpleStyleParametersSerializerTests.cs | 10 +- ...DelimitedStyleParametersSerializerTests.cs | 20 +- 29 files changed, 368 insertions(+), 368 deletions(-) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationExpectedResponse.cs => RestApiExpectedResponse.cs} (76%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationParameter.cs => RestApiParameter.cs} (88%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationParameterLocation.cs => RestApiParameterLocation.cs} (86%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationParameterStyle.cs => RestApiParameterStyle.cs} (90%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationPayload.cs => RestApiPayload.cs} (72%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationPayloadProperty.cs => RestApiPayloadProperty.cs} (84%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationServer.cs => RestApiServer.cs} (78%) rename dotnet/src/Functions/Functions.OpenApi/Model/{RestApiOperationServerVariable.cs => RestApiServerVariable.cs} (85%) diff --git a/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs b/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs index 280300162db4..c51ad9222943 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs @@ -25,12 +25,12 @@ internal static partial class RestApiOperationExtensions /// the parameters 'sender.email' and 'receiver.mail' will be correctly resolved from arguments with the same names. /// /// The list of parameters. - public static IReadOnlyList GetParameters( + public static IReadOnlyList GetParameters( this RestApiOperation operation, bool addPayloadParamsFromMetadata = true, bool enablePayloadNamespacing = false) { - var parameters = new List(operation.Parameters); + var parameters = new List(operation.Parameters); // Add payload parameters if (operation.Payload is not null) @@ -55,7 +55,7 @@ public static IReadOnlyList GetParameters( /// The default return parameter metadata, if any. public static KernelReturnParameterMetadata? GetDefaultReturnParameter(this RestApiOperation operation, string[]? preferredResponses = null) { - RestApiOperationExpectedResponse? restOperationResponse = GetDefaultResponse(operation.Responses, preferredResponses ??= s_preferredResponses); + RestApiExpectedResponse? restOperationResponse = GetDefaultResponse(operation.Responses, preferredResponses ??= s_preferredResponses); var returnParameter = restOperationResponse is not null ? new KernelReturnParameterMetadata { Description = restOperationResponse.Description, Schema = restOperationResponse.Schema } : null; @@ -69,7 +69,7 @@ public static IReadOnlyList GetParameters( /// The REST API operation responses to parse. /// The preferred response codes to use when selecting the default response. /// The default response, if any. - private static RestApiOperationExpectedResponse? GetDefaultResponse(IReadOnlyDictionary responses, string[] preferredResponses) + private static RestApiExpectedResponse? GetDefaultResponse(IReadOnlyDictionary responses, string[] preferredResponses) { foreach (var code in preferredResponses) { @@ -90,8 +90,8 @@ public static IReadOnlyList GetParameters( /// Flag indicating whether to include parameters from metadata. /// If false or not specified, the 'payload' and 'content-type' parameters are added instead. /// Flag indicating whether to namespace payload parameter names. - /// A list of representing the payload parameters. - private static List GetPayloadParameters(RestApiOperation operation, bool useParametersFromMetadata, bool enableNamespacing) + /// A list of representing the payload parameters. + private static List GetPayloadParameters(RestApiOperation operation, bool useParametersFromMetadata, bool enableNamespacing) { if (useParametersFromMetadata) { @@ -122,15 +122,15 @@ private static List GetPayloadParameters(RestApiOpera /// /// The REST API operation. /// The 'content-type' artificial parameter. - private static RestApiOperationParameter CreateContentTypeArtificialParameter(RestApiOperation operation) + private static RestApiParameter CreateContentTypeArtificialParameter(RestApiOperation operation) { - return new RestApiOperationParameter( + return new RestApiParameter( RestApiOperation.ContentTypeArgumentName, "string", isRequired: false, expand: false, - RestApiOperationParameterLocation.Body, - RestApiOperationParameterStyle.Simple, + RestApiParameterLocation.Body, + RestApiParameterStyle.Simple, description: "Content type of REST API request body."); } @@ -139,15 +139,15 @@ private static RestApiOperationParameter CreateContentTypeArtificialParameter(Re /// /// The REST API operation. /// The 'payload' artificial parameter. - private static RestApiOperationParameter CreatePayloadArtificialParameter(RestApiOperation operation) + private static RestApiParameter CreatePayloadArtificialParameter(RestApiOperation operation) { - return new RestApiOperationParameter( + return new RestApiParameter( RestApiOperation.PayloadArgumentName, operation.Payload?.MediaType == MediaTypeTextPlain ? "string" : "object", isRequired: true, expand: false, - RestApiOperationParameterLocation.Body, - RestApiOperationParameterStyle.Simple, + RestApiParameterLocation.Body, + RestApiParameterStyle.Simple, description: operation.Payload?.Description ?? "REST API request body.", schema: operation.Payload?.Schema); } @@ -161,9 +161,9 @@ private static RestApiOperationParameter CreatePayloadArtificialParameter(RestAp /// /// The root property name. /// The list of payload parameters. - private static List GetParametersFromPayloadMetadata(IReadOnlyList properties, bool enableNamespacing = false, string? rootPropertyName = null) + private static List GetParametersFromPayloadMetadata(IReadOnlyList properties, bool enableNamespacing = false, string? rootPropertyName = null) { - var parameters = new List(); + var parameters = new List(); foreach (var property in properties) { @@ -171,13 +171,13 @@ private static List GetParametersFromPayloadMetadata( if (!property.Properties.Any()) { - parameters.Add(new RestApiOperationParameter( + parameters.Add(new RestApiParameter( name: parameterName, type: property.Type, isRequired: property.IsRequired, expand: false, - location: RestApiOperationParameterLocation.Body, - style: RestApiOperationParameterStyle.Simple, + location: RestApiParameterLocation.Body, + style: RestApiParameterStyle.Simple, defaultValue: property.DefaultValue, description: property.Description, format: property.Format, @@ -197,7 +197,7 @@ private static List GetParametersFromPayloadMetadata( /// The root property name to be used for constructing the full property name. /// Determines whether to add namespace to property name or not. /// The property name. - private static string GetPropertyName(RestApiOperationPayloadProperty property, string? rootPropertyName, bool enableNamespacing = false) + private static string GetPropertyName(RestApiPayloadProperty property, string? rootPropertyName, bool enableNamespacing = false) { if (enableNamespacing) { diff --git a/dotnet/src/Functions/Functions.OpenApi/HttpContentFactory.cs b/dotnet/src/Functions/Functions.OpenApi/HttpContentFactory.cs index d7d270cdaea3..c3ebf9251e0a 100644 --- a/dotnet/src/Functions/Functions.OpenApi/HttpContentFactory.cs +++ b/dotnet/src/Functions/Functions.OpenApi/HttpContentFactory.cs @@ -11,4 +11,4 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// The operation payload metadata. /// The operation arguments. /// The object and HttpContent representing the operation payload. -internal delegate (object? Payload, HttpContent Content) HttpContentFactory(RestApiOperationPayload? payload, IDictionary arguments); +internal delegate (object? Payload, HttpContent Content) HttpContentFactory(RestApiPayload? payload, IDictionary arguments); diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationExpectedResponse.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiExpectedResponse.cs similarity index 76% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationExpectedResponse.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiExpectedResponse.cs index 176a78803cdf..e09a539573fb 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationExpectedResponse.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiExpectedResponse.cs @@ -5,10 +5,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API operation response. +/// REST API response. /// [Experimental("SKEXP0040")] -public sealed class RestApiOperationExpectedResponse +public sealed class RestApiExpectedResponse { /// /// Gets the description of the response. @@ -26,12 +26,12 @@ public sealed class RestApiOperationExpectedResponse public KernelJsonSchema? Schema { get; } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The description of the response. /// The media type of the response. /// The schema against which the response body should be validated. - internal RestApiOperationExpectedResponse(string description, string mediaType, KernelJsonSchema? schema = null) + internal RestApiExpectedResponse(string description, string mediaType, KernelJsonSchema? schema = null) { this.Description = description; this.MediaType = mediaType; diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperation.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperation.cs index a22091ee479e..02ed180523e3 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperation.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperation.cs @@ -54,22 +54,22 @@ public sealed class RestApiOperation /// /// The server. /// - public IReadOnlyList Servers { get; } + public IReadOnlyList Servers { get; } /// /// The operation parameters. /// - public IReadOnlyList Parameters { get; } + public IReadOnlyList Parameters { get; } /// /// The list of possible operation responses. /// - public IReadOnlyDictionary Responses { get; } + public IReadOnlyDictionary Responses { get; } /// /// The operation payload. /// - public RestApiOperationPayload? Payload { get; } + public RestApiPayload? Payload { get; } /// /// Additional unstructured metadata about the operation. @@ -89,13 +89,13 @@ public sealed class RestApiOperation /// The operation responses. internal RestApiOperation( string id, - IReadOnlyList servers, + IReadOnlyList servers, string path, HttpMethod method, string description, - IReadOnlyList parameters, - RestApiOperationPayload? payload = null, - IReadOnlyDictionary? responses = null) + IReadOnlyList parameters, + RestApiPayload? payload = null, + IReadOnlyDictionary? responses = null) { this.Id = id; this.Servers = servers; @@ -104,7 +104,7 @@ internal RestApiOperation( this.Description = description; this.Parameters = parameters; this.Payload = payload; - this.Responses = responses ?? new Dictionary(); + this.Responses = responses ?? new Dictionary(); } /// @@ -132,7 +132,7 @@ internal IDictionary BuildHeaders(IDictionary a { var headers = new Dictionary(); - var parameters = this.Parameters.Where(p => p.Location == RestApiOperationParameterLocation.Header); + var parameters = this.Parameters.Where(p => p.Location == RestApiParameterLocation.Header); foreach (var parameter in parameters) { @@ -148,7 +148,7 @@ internal IDictionary BuildHeaders(IDictionary a continue; } - var parameterStyle = parameter.Style ?? RestApiOperationParameterStyle.Simple; + var parameterStyle = parameter.Style ?? RestApiParameterStyle.Simple; if (!s_parameterSerializers.TryGetValue(parameterStyle, out var serializer)) { @@ -173,7 +173,7 @@ internal string BuildQueryString(IDictionary arguments) { var segments = new List(); - var parameters = this.Parameters.Where(p => p.Location == RestApiOperationParameterLocation.Query); + var parameters = this.Parameters.Where(p => p.Location == RestApiParameterLocation.Query); foreach (var parameter in parameters) { @@ -189,7 +189,7 @@ internal string BuildQueryString(IDictionary arguments) continue; } - var parameterStyle = parameter.Style ?? RestApiOperationParameterStyle.Form; + var parameterStyle = parameter.Style ?? RestApiParameterStyle.Form; if (!s_parameterSerializers.TryGetValue(parameterStyle, out var serializer)) { @@ -215,7 +215,7 @@ internal string BuildQueryString(IDictionary arguments) /// The path. private string BuildPath(string pathTemplate, IDictionary arguments) { - var parameters = this.Parameters.Where(p => p.Location == RestApiOperationParameterLocation.Path); + var parameters = this.Parameters.Where(p => p.Location == RestApiParameterLocation.Path); foreach (var parameter in parameters) { @@ -231,7 +231,7 @@ private string BuildPath(string pathTemplate, IDictionary argum continue; } - var parameterStyle = parameter.Style ?? RestApiOperationParameterStyle.Simple; + var parameterStyle = parameter.Style ?? RestApiParameterStyle.Simple; if (!s_parameterSerializers.TryGetValue(parameterStyle, out var serializer)) { @@ -299,12 +299,12 @@ private Uri GetServerUrl(Uri? serverUrlOverride, Uri? apiHostUrl, IDictionary> s_parameterSerializers = new() + private static readonly Dictionary> s_parameterSerializers = new() { - { RestApiOperationParameterStyle.Simple, SimpleStyleParameterSerializer.Serialize }, - { RestApiOperationParameterStyle.Form, FormStyleParameterSerializer.Serialize }, - { RestApiOperationParameterStyle.SpaceDelimited, SpaceDelimitedStyleParameterSerializer.Serialize }, - { RestApiOperationParameterStyle.PipeDelimited, PipeDelimitedStyleParameterSerializer.Serialize } + { RestApiParameterStyle.Simple, SimpleStyleParameterSerializer.Serialize }, + { RestApiParameterStyle.Form, FormStyleParameterSerializer.Serialize }, + { RestApiParameterStyle.SpaceDelimited, SpaceDelimitedStyleParameterSerializer.Serialize }, + { RestApiParameterStyle.PipeDelimited, PipeDelimitedStyleParameterSerializer.Serialize } }; # endregion diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameter.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs similarity index 88% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameter.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs index 712948ad6ca9..9130689b88dd 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameter.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs @@ -5,10 +5,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API operation parameter. +/// REST API parameter. /// [Experimental("SKEXP0040")] -public sealed class RestApiOperationParameter +public sealed class RestApiParameter { /// /// The parameter name. @@ -44,17 +44,17 @@ public sealed class RestApiOperationParameter /// /// The parameter location. /// - public RestApiOperationParameterLocation Location { get; } + public RestApiParameterLocation Location { get; } /// /// The parameter style - defines how multiple values are delimited. /// - public RestApiOperationParameterStyle? Style { get; } + public RestApiParameterStyle? Style { get; } /// /// Type of array item for parameters of "array" type. /// - public string? ArrayItemType { get; } + internal string? ArrayItemType { get; } /// /// The default value. @@ -72,7 +72,7 @@ public sealed class RestApiOperationParameter public KernelJsonSchema? Schema { get; } /// - /// Creates an instance of a class. + /// Creates an instance of a class. /// /// The parameter name. /// The parameter type. @@ -86,13 +86,13 @@ public sealed class RestApiOperationParameter /// The parameter type modifier that refines the generic parameter type to a more specific one. /// More details can be found at https://swagger.io/docs/specification/data-models/data-types /// The parameter schema. - internal RestApiOperationParameter( + internal RestApiParameter( string name, string type, bool isRequired, bool expand, - RestApiOperationParameterLocation location, - RestApiOperationParameterStyle? style = null, + RestApiParameterLocation location, + RestApiParameterStyle? style = null, string? arrayItemType = null, object? defaultValue = null, string? description = null, diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameterLocation.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterLocation.cs similarity index 86% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameterLocation.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterLocation.cs index 3785033961dd..f28aeb9e1a45 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameterLocation.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterLocation.cs @@ -5,10 +5,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API operation parameter location. +/// REST API parameter location. /// [Experimental("SKEXP0040")] -public enum RestApiOperationParameterLocation +public enum RestApiParameterLocation { /// /// Query parameter. diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameterStyle.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs similarity index 90% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameterStyle.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs index 09171e8f3a73..12f02eacd8e8 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationParameterStyle.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs @@ -5,10 +5,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API operation parameter style. +/// REST API operation parameter style. /// [Experimental("SKEXP0040")] -public enum RestApiOperationParameterStyle +public enum RestApiParameterStyle { /// /// Path-style parameters. diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationPayload.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiPayload.cs similarity index 72% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationPayload.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiPayload.cs index acfb1703f912..212877964865 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationPayload.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiPayload.cs @@ -6,10 +6,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API operation payload. +/// REST API payload. /// [Experimental("SKEXP0040")] -public sealed class RestApiOperationPayload +public sealed class RestApiPayload { /// /// The payload MediaType. @@ -24,7 +24,7 @@ public sealed class RestApiOperationPayload /// /// The payload properties. /// - public IReadOnlyList Properties { get; } + public IReadOnlyList Properties { get; } /// /// The schema of the parameter. @@ -32,13 +32,13 @@ public sealed class RestApiOperationPayload public KernelJsonSchema? Schema { get; } /// - /// Creates an instance of a class. + /// Creates an instance of a class. /// /// The media type. /// The properties. /// The description. /// The JSON Schema. - internal RestApiOperationPayload(string mediaType, IReadOnlyList properties, string? description = null, KernelJsonSchema? schema = null) + internal RestApiPayload(string mediaType, IReadOnlyList properties, string? description = null, KernelJsonSchema? schema = null) { this.MediaType = mediaType; this.Properties = properties; diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationPayloadProperty.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiPayloadProperty.cs similarity index 84% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationPayloadProperty.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiPayloadProperty.cs index 4aade01a636b..5967aaa6d272 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationPayloadProperty.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiPayloadProperty.cs @@ -6,10 +6,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API operation payload property. +/// REST API payload property. /// [Experimental("SKEXP0040")] -public sealed class RestApiOperationPayloadProperty +public sealed class RestApiPayloadProperty { /// /// The property name. @@ -19,7 +19,7 @@ public sealed class RestApiOperationPayloadProperty /// /// The property type. /// - public string Type { get; } + internal string Type { get; } /// /// The property type modifier that refines the generic parameter type to a more specific one. @@ -40,7 +40,7 @@ public sealed class RestApiOperationPayloadProperty /// /// The properties. /// - public IReadOnlyList Properties { get; } + public IReadOnlyList Properties { get; } /// /// The schema of the parameter. @@ -53,7 +53,7 @@ public sealed class RestApiOperationPayloadProperty public object? DefaultValue { get; } /// - /// Creates an instance of a class. + /// Creates an instance of a class. /// /// The name of the property. /// The type of the property. @@ -64,12 +64,12 @@ public sealed class RestApiOperationPayloadProperty /// More details can be found at https://swagger.io/docs/specification/data-models/data-types /// The schema of the payload property. /// The default value of the property. - /// Returns a new instance of the class. - internal RestApiOperationPayloadProperty( + /// Returns a new instance of the class. + internal RestApiPayloadProperty( string name, string type, bool isRequired, - IReadOnlyList properties, + IReadOnlyList properties, string? description = null, string? format = null, KernelJsonSchema? schema = null, diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationServer.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiServer.cs similarity index 78% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationServer.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiServer.cs index 16bba0f0de27..7113ac24862e 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationServer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiServer.cs @@ -6,10 +6,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// REST API Operation Server. +/// REST API server. /// [Experimental("SKEXP0040")] -public sealed class RestApiOperationServer +public sealed class RestApiServer { /// /// A URL to the target host. This URL supports Server Variables and MAY be relative, @@ -23,18 +23,18 @@ public sealed class RestApiOperationServer /// /// A map between a variable name and its value. The value is used for substitution in the server's URL template. /// - public IDictionary Variables { get; } + public IDictionary Variables { get; } /// - /// Construct a new object. + /// Construct a new object. /// /// URL to the target host /// Substitution variables for the server's URL template #pragma warning disable CA1054 // URI-like parameters should not be strings - internal RestApiOperationServer(string? url = null, IDictionary? variables = null) + internal RestApiServer(string? url = null, IDictionary? variables = null) #pragma warning restore CA1054 // URI-like parameters should not be strings { this.Url = string.IsNullOrEmpty(url) ? null : url; - this.Variables = variables ?? new Dictionary(); + this.Variables = variables ?? new Dictionary(); } } diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationServerVariable.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiServerVariable.cs similarity index 85% rename from dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationServerVariable.cs rename to dotnet/src/Functions/Functions.OpenApi/Model/RestApiServerVariable.cs index fcbc7a1b1cef..79916f3ea3b8 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperationServerVariable.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiServerVariable.cs @@ -7,10 +7,10 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// REST API Operation Server Variable. +/// REST API server variable. /// [Experimental("SKEXP0040")] -public sealed class RestApiOperationServerVariable +public sealed class RestApiServerVariable { /// /// An optional description for the server variable. CommonMark syntax MAY be used for rich text representation. @@ -29,12 +29,12 @@ public sealed class RestApiOperationServerVariable public IReadOnlyList? Enum { get; } /// - /// Construct a new object. + /// Construct a new object. /// /// The default value to use for substitution. /// An optional description for the server variable. /// An enumeration of string values to be used if the substitution options are from a limited set. - internal RestApiOperationServerVariable(string defaultValue, string? description = null, List? enumValues = null) + internal RestApiServerVariable(string defaultValue, string? description = null, List? enumValues = null) { this.Default = defaultValue; this.Description = description; diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiSpecification.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiSpecification.cs index 9e9b0309c05a..77803a0d8318 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiSpecification.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiSpecification.cs @@ -5,7 +5,7 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// The REST API specification. +/// REST API specification. /// internal sealed class RestApiSpecification { diff --git a/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs b/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs index 512ee344e5b7..03c21ab67090 100644 --- a/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs +++ b/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs @@ -213,16 +213,16 @@ internal static List CreateRestApiOperations(IList - /// Build a list of objects from the given list of objects. + /// Build a list of objects from the given list of objects. /// /// Represents servers which hosts the REST API. - private static List CreateRestApiOperationServers(IList servers) + private static List CreateRestApiOperationServers(IList servers) { - var result = new List(servers.Count); + var result = new List(servers.Count); foreach (var server in servers) { - var variables = server.Variables.ToDictionary(item => item.Key, item => new RestApiOperationServerVariable(item.Value.Default, item.Value.Description, item.Value.Enum)); + var variables = server.Variables.ToDictionary(item => item.Key, item => new RestApiServerVariable(item.Value.Default, item.Value.Description, item.Value.Enum)); result.Add(new(server?.Url, variables)); } @@ -280,9 +280,9 @@ private static List CreateRestApiOperationServers(IList< /// The operation id. /// The OpenAPI parameters. /// The parameters. - private static List CreateRestApiOperationParameters(string operationId, IList parameters) + private static List CreateRestApiOperationParameters(string operationId, IList parameters) { - var result = new List(); + var result = new List(); foreach (var parameter in parameters) { @@ -296,13 +296,13 @@ private static List CreateRestApiOperationParameters( throw new KernelException($"Parameter style of {parameter.Name} parameter of {operationId} operation is undefined."); } - var restParameter = new RestApiOperationParameter( + var restParameter = new RestApiParameter( parameter.Name, parameter.Schema.Type, parameter.Required, parameter.Explode, - (RestApiOperationParameterLocation)Enum.Parse(typeof(RestApiOperationParameterLocation), parameter.In.ToString()!), - (RestApiOperationParameterStyle)Enum.Parse(typeof(RestApiOperationParameterStyle), parameter.Style.ToString()!), + (RestApiParameterLocation)Enum.Parse(typeof(RestApiParameterLocation), parameter.In.ToString()!), + (RestApiParameterStyle)Enum.Parse(typeof(RestApiParameterStyle), parameter.Style.ToString()!), parameter.Schema.Items?.Type, GetParameterValue(parameter.Schema.Default, "parameter", parameter.Name), parameter.Description, @@ -322,7 +322,7 @@ private static List CreateRestApiOperationParameters( /// The operation id. /// The OpenAPI request body. /// The REST API operation payload. - private static RestApiOperationPayload? CreateRestApiOperationPayload(string operationId, OpenApiRequestBody requestBody) + private static RestApiPayload? CreateRestApiOperationPayload(string operationId, OpenApiRequestBody requestBody) { if (requestBody?.Content is null) { @@ -334,10 +334,10 @@ private static List CreateRestApiOperationParameters( var payloadProperties = GetPayloadProperties(operationId, mediaTypeMetadata.Schema); - return new RestApiOperationPayload(mediaType, payloadProperties, requestBody.Description, mediaTypeMetadata?.Schema?.ToJsonSchema()); + return new RestApiPayload(mediaType, payloadProperties, requestBody.Description, mediaTypeMetadata?.Schema?.ToJsonSchema()); } - private static IEnumerable<(string, RestApiOperationExpectedResponse)> CreateRestApiOperationExpectedResponses(OpenApiResponses responses) + private static IEnumerable<(string, RestApiExpectedResponse)> CreateRestApiOperationExpectedResponses(OpenApiResponses responses) { foreach (var response in responses) { @@ -347,7 +347,7 @@ private static List CreateRestApiOperationParameters( var matchingSchema = response.Value.Content[mediaType].Schema; var description = response.Value.Description ?? matchingSchema?.Description ?? string.Empty; - yield return (response.Key, new RestApiOperationExpectedResponse(description, mediaType, matchingSchema?.ToJsonSchema())); + yield return (response.Key, new RestApiExpectedResponse(description, mediaType, matchingSchema?.ToJsonSchema())); } } } @@ -359,7 +359,7 @@ private static List CreateRestApiOperationParameters( /// An OpenAPI document schema representing request body properties. /// Current level in OpenAPI schema. /// The REST API operation payload properties. - private static List GetPayloadProperties(string operationId, OpenApiSchema? schema, int level = 0) + private static List GetPayloadProperties(string operationId, OpenApiSchema? schema, int level = 0) { if (schema is null) { @@ -371,7 +371,7 @@ private static List GetPayloadProperties(string throw new KernelException($"Max level {PayloadPropertiesHierarchyMaxDepth} of traversing payload properties of {operationId} operation is exceeded."); } - var result = new List(); + var result = new List(); foreach (var propertyPair in schema.Properties) { @@ -379,7 +379,7 @@ private static List GetPayloadProperties(string var propertySchema = propertyPair.Value; - var property = new RestApiOperationPayloadProperty( + var property = new RestApiPayloadProperty( propertyName, propertySchema.Type, schema.Required.Contains(propertyName), diff --git a/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs b/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs index 5d6eb405a1fa..b520d1c48d5e 100644 --- a/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs +++ b/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs @@ -192,7 +192,7 @@ internal static KernelFunction CreateRestApiFunction( Uri? documentUri = null, ILoggerFactory? loggerFactory = null) { - IReadOnlyList restOperationParameters = operation.GetParameters( + IReadOnlyList restOperationParameters = operation.GetParameters( executionParameters?.EnableDynamicPayload ?? true, executionParameters?.EnablePayloadNamespacing ?? false ); @@ -375,7 +375,7 @@ private static string ConvertOperationIdToValidFunctionName(string operationId, /// /// The REST API operation parameter. /// - private static Type? ConvertParameterDataType(RestApiOperationParameter parameter) + private static Type? ConvertParameterDataType(RestApiParameter parameter) { return parameter.Type switch { diff --git a/dotnet/src/Functions/Functions.OpenApi/RestApiOperationRunner.cs b/dotnet/src/Functions/Functions.OpenApi/RestApiOperationRunner.cs index 6eee666b4e7f..95109a6f787e 100644 --- a/dotnet/src/Functions/Functions.OpenApi/RestApiOperationRunner.cs +++ b/dotnet/src/Functions/Functions.OpenApi/RestApiOperationRunner.cs @@ -343,7 +343,7 @@ private async Task ReadContentAndCreateOperationRespon /// The payload meta-data. /// The payload arguments. /// The JSON payload the corresponding HttpContent. - private (object? Payload, HttpContent Content) BuildJsonPayload(RestApiOperationPayload? payloadMetadata, IDictionary arguments) + private (object? Payload, HttpContent Content) BuildJsonPayload(RestApiPayload? payloadMetadata, IDictionary arguments) { // Build operation payload dynamically if (this._enableDynamicPayload) @@ -374,7 +374,7 @@ private async Task ReadContentAndCreateOperationRespon /// The arguments. /// The namespace to add to the property name. /// The JSON object. - private JsonObject BuildJsonObject(IReadOnlyList properties, IDictionary arguments, string? propertyNamespace = null) + private JsonObject BuildJsonObject(IReadOnlyList properties, IDictionary arguments, string? propertyNamespace = null) { var result = new JsonObject(); @@ -436,7 +436,7 @@ private JsonObject BuildJsonObject(IReadOnlyListThe payload meta-data. /// The payload arguments. /// The text payload and corresponding HttpContent. - private (object? Payload, HttpContent Content) BuildPlainTextPayload(RestApiOperationPayload? payloadMetadata, IDictionary arguments) + private (object? Payload, HttpContent Content) BuildPlainTextPayload(RestApiPayload? payloadMetadata, IDictionary arguments) { if (!arguments.TryGetValue(RestApiOperation.PayloadArgumentName, out object? argument) || argument is not string payload) { diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs index 917f94750a29..341e924d77b6 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs @@ -17,15 +17,15 @@ internal static class FormStyleParameterSerializer /// The REST API operation parameter to serialize. /// The parameter argument. /// The serialized parameter. - public static string Serialize(RestApiOperationParameter parameter, JsonNode argument) + public static string Serialize(RestApiParameter parameter, JsonNode argument) { const string ArrayType = "array"; Verify.NotNull(parameter); Verify.NotNull(argument); - var style = parameter.Style ?? RestApiOperationParameterStyle.Form; - if (style != RestApiOperationParameterStyle.Form) + var style = parameter.Style ?? RestApiParameterStyle.Form; + if (style != RestApiParameterStyle.Form) { throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } @@ -52,7 +52,7 @@ public static string Serialize(RestApiOperationParameter parameter, JsonNode arg /// The REST API operation parameter to serialize. /// The argument value. /// The serialized parameter string. - private static string SerializeArrayParameter(RestApiOperationParameter parameter, JsonNode argument) + private static string SerializeArrayParameter(RestApiParameter parameter, JsonNode argument) { if (argument is not JsonArray array) { diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs index 3ee0d9c7e79a..dd09d0c41594 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs @@ -16,14 +16,14 @@ internal static class PipeDelimitedStyleParameterSerializer /// The REST API operation parameter to serialize. /// The parameter argument. /// The serialized parameter. - public static string Serialize(RestApiOperationParameter parameter, JsonNode argument) + public static string Serialize(RestApiParameter parameter, JsonNode argument) { const string ArrayType = "array"; Verify.NotNull(parameter); Verify.NotNull(argument); - if (parameter.Style != RestApiOperationParameterStyle.PipeDelimited) + if (parameter.Style != RestApiParameterStyle.PipeDelimited) { throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } @@ -42,7 +42,7 @@ public static string Serialize(RestApiOperationParameter parameter, JsonNode arg /// The REST API operation parameter to serialize. /// The argument value. /// The serialized parameter string. - private static string SerializeArrayParameter(RestApiOperationParameter parameter, JsonNode argument) + private static string SerializeArrayParameter(RestApiParameter parameter, JsonNode argument) { if (argument is not JsonArray array) { diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs index 9104ed9635dc..1dc72aeb4a25 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs @@ -16,15 +16,15 @@ internal static class SimpleStyleParameterSerializer /// The REST API operation parameter to serialize. /// The parameter argument. /// The serialized parameter. - public static string Serialize(RestApiOperationParameter parameter, JsonNode argument) + public static string Serialize(RestApiParameter parameter, JsonNode argument) { const string ArrayType = "array"; Verify.NotNull(parameter); Verify.NotNull(argument); - var style = parameter.Style ?? RestApiOperationParameterStyle.Simple; - if (style != RestApiOperationParameterStyle.Simple) + var style = parameter.Style ?? RestApiParameterStyle.Simple; + if (style != RestApiParameterStyle.Simple) { throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } @@ -51,7 +51,7 @@ public static string Serialize(RestApiOperationParameter parameter, JsonNode arg /// The REST API operation parameter to serialize. /// The argument value. /// The serialized parameter string. - private static string SerializeArrayParameter(RestApiOperationParameter parameter, object argument) + private static string SerializeArrayParameter(RestApiParameter parameter, object argument) { if (argument is not JsonArray array) { diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs index f42911ab0536..f5edb4fa9ec3 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs @@ -16,13 +16,13 @@ internal static class SpaceDelimitedStyleParameterSerializer /// The REST API operation parameter to serialize. /// The parameter argument. /// The serialized parameter. - public static string Serialize(RestApiOperationParameter parameter, JsonNode argument) + public static string Serialize(RestApiParameter parameter, JsonNode argument) { const string ArrayType = "array"; Verify.NotNull(parameter); - if (parameter.Style != RestApiOperationParameterStyle.SpaceDelimited) + if (parameter.Style != RestApiParameterStyle.SpaceDelimited) { throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } @@ -41,7 +41,7 @@ public static string Serialize(RestApiOperationParameter parameter, JsonNode arg /// The REST API operation parameter to serialize. /// The argument value. /// The serialized parameter string. - private static string SerializeArrayParameter(RestApiOperationParameter parameter, JsonNode argument) + private static string SerializeArrayParameter(RestApiParameter parameter, JsonNode argument) { if (argument is not JsonArray array) { diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Extensions/RestApiOperationExtensionsTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Extensions/RestApiOperationExtensionsTests.cs index f8263e79ae87..02f9a370a246 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Extensions/RestApiOperationExtensionsTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Extensions/RestApiOperationExtensionsTests.cs @@ -230,10 +230,10 @@ public void ItShouldAddNamespaceToParametersDeclaredInPayloadMetadata(string met public void ItShouldSetAlternativeNameToParametersForPutAndPostOperation(string method) { //Arrange - var latitude = new RestApiOperationPayloadProperty("location.latitude", "number", false, []); - var place = new RestApiOperationPayloadProperty("place", "string", true, []); + var latitude = new RestApiPayloadProperty("location.latitude", "number", false, []); + var place = new RestApiPayloadProperty("place", "string", true, []); - var payload = new RestApiOperationPayload("application/json", [place, latitude]); + var payload = new RestApiPayload("application/json", [place, latitude]); var operation = CreateTestOperation(method, payload); @@ -252,7 +252,7 @@ public void ItShouldSetAlternativeNameToParametersForPutAndPostOperation(string Assert.Equal("location_latitude", personNameProp.AlternativeName); } - private static RestApiOperation CreateTestOperation(string method, RestApiOperationPayload? payload = null, Uri? url = null) + private static RestApiOperation CreateTestOperation(string method, RestApiPayload? payload = null, Uri? url = null) { return new RestApiOperation( id: "fake-id", @@ -264,61 +264,61 @@ private static RestApiOperation CreateTestOperation(string method, RestApiOperat payload: payload); } - private static RestApiOperationPayload CreateTestJsonPayload() + private static RestApiPayload CreateTestJsonPayload() { - var name = new RestApiOperationPayloadProperty( + var name = new RestApiPayloadProperty( name: "name", type: "string", isRequired: true, properties: [], description: "The name."); - var leader = new RestApiOperationPayloadProperty( + var leader = new RestApiPayloadProperty( name: "leader", type: "string", isRequired: true, properties: [], description: "The leader."); - var landmarks = new RestApiOperationPayloadProperty( + var landmarks = new RestApiPayloadProperty( name: "landmarks", type: "array", isRequired: false, properties: [], description: "The landmarks."); - var location = new RestApiOperationPayloadProperty( + var location = new RestApiPayloadProperty( name: "location", type: "object", isRequired: true, properties: [landmarks], description: "The location."); - var rulingCouncil = new RestApiOperationPayloadProperty( + var rulingCouncil = new RestApiPayloadProperty( name: "rulingCouncil", type: "object", isRequired: true, properties: [leader], description: "The ruling council."); - var population = new RestApiOperationPayloadProperty( + var population = new RestApiPayloadProperty( name: "population", type: "integer", isRequired: true, properties: [], description: "The population."); - var hasMagicWards = new RestApiOperationPayloadProperty( + var hasMagicWards = new RestApiPayloadProperty( name: "hasMagicWards", type: "boolean", isRequired: false, properties: []); - return new RestApiOperationPayload("application/json", [name, location, rulingCouncil, population, hasMagicWards]); + return new RestApiPayload("application/json", [name, location, rulingCouncil, population, hasMagicWards]); } - private static RestApiOperationPayload CreateTestTextPayload() + private static RestApiPayload CreateTestTextPayload() { - return new RestApiOperationPayload("text/plain", []); + return new RestApiPayload("text/plain", []); } } diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV20Tests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV20Tests.cs index 3337d0e39eb4..099ab02042f9 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV20Tests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV20Tests.cs @@ -123,14 +123,14 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var pathParameter = parameters.Single(p => p.Name == "secret-name"); //'secret-name' path parameter. Assert.True(pathParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Path, pathParameter.Location); + Assert.Equal(RestApiParameterLocation.Path, pathParameter.Location); Assert.Null(pathParameter.DefaultValue); Assert.NotNull(pathParameter.Schema); Assert.Equal("string", pathParameter.Schema.RootElement.GetProperty("type").GetString()); var apiVersionParameter = parameters.Single(p => p.Name == "api-version"); //'api-version' query string parameter. Assert.True(apiVersionParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Query, apiVersionParameter.Location); + Assert.Equal(RestApiParameterLocation.Query, apiVersionParameter.Location); Assert.Equal("7.0", apiVersionParameter.DefaultValue); Assert.NotNull(apiVersionParameter.Schema); Assert.Equal("string", apiVersionParameter.Schema.RootElement.GetProperty("type").GetString()); @@ -138,7 +138,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var payloadParameter = parameters.Single(p => p.Name == "payload"); //'payload' artificial parameter. Assert.True(payloadParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Body, payloadParameter.Location); + Assert.Equal(RestApiParameterLocation.Body, payloadParameter.Location); Assert.Null(payloadParameter.DefaultValue); Assert.Equal("REST API request body.", payloadParameter.Description); Assert.NotNull(payloadParameter.Schema); @@ -146,7 +146,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var contentTypeParameter = parameters.Single(p => p.Name == "content-type"); //'content-type' artificial parameter. Assert.False(contentTypeParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Body, contentTypeParameter.Location); + Assert.Equal(RestApiParameterLocation.Body, contentTypeParameter.Location); Assert.Null(contentTypeParameter.DefaultValue); Assert.Equal("Content type of REST API request body.", contentTypeParameter.Description); Assert.Null(contentTypeParameter.Schema); @@ -174,7 +174,7 @@ public async Task ItCanExtractSimpleTypeHeaderParameterMetadataSuccessfullyAsync var restApi = await this._sut.ParseAsync(this._openApiDocument); //Assert string header parameter metadata - var accept = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "Accept"); + var accept = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "Accept"); Assert.Equal("string", accept.Type); Assert.Equal("application/json", accept.DefaultValue); @@ -182,7 +182,7 @@ public async Task ItCanExtractSimpleTypeHeaderParameterMetadataSuccessfullyAsync Assert.False(accept.IsRequired); //Assert integer header parameter metadata - var apiVersion = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "X-API-Version"); + var apiVersion = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "X-API-Version"); Assert.Equal("integer", apiVersion.Type); Assert.Equal(10, apiVersion.DefaultValue); @@ -197,12 +197,12 @@ public async Task ItCanExtractCsvStyleHeaderParameterMetadataSuccessfullyAsync() var restApi = await this._sut.ParseAsync(this._openApiDocument); //Assert header parameters metadata - var acceptParameter = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "X-Operation-Csv-Ids"); + var acceptParameter = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "X-Operation-Csv-Ids"); Assert.Null(acceptParameter.DefaultValue); Assert.False(acceptParameter.IsRequired); Assert.Equal("array", acceptParameter.Type); - Assert.Equal(RestApiOperationParameterStyle.Simple, acceptParameter.Style); + Assert.Equal(RestApiParameterStyle.Simple, acceptParameter.Style); Assert.Equal("The comma separated list of operation ids.", acceptParameter.Description); Assert.Equal("string", acceptParameter.ArrayItemType); } @@ -218,7 +218,7 @@ public async Task ItCanExtractHeadersSuccessfullyAsync() var operation = restApi.Operations.Single(o => o.Id == "SetSecret"); - var headerParameters = operation.Parameters.Where(p => p.Location == RestApiOperationParameterLocation.Header); + var headerParameters = operation.Parameters.Where(p => p.Location == RestApiParameterLocation.Header); Assert.NotNull(headerParameters); Assert.Equal(3, headerParameters.Count()); @@ -414,8 +414,8 @@ public async Task ItCanParsePropertiesOfObjectDataTypeAsync() Assert.Null(property.Format); } - private static RestApiOperationParameter GetParameterMetadata(IList operations, string operationId, - RestApiOperationParameterLocation location, string name) + private static RestApiParameter GetParameterMetadata(IList operations, string operationId, + RestApiParameterLocation location, string name) { Assert.True(operations.Any()); diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV30Tests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV30Tests.cs index fe013906944a..1a98185b68ab 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV30Tests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV30Tests.cs @@ -124,14 +124,14 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var pathParameter = parameters.Single(p => p.Name == "secret-name"); //'secret-name' path parameter. Assert.True(pathParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Path, pathParameter.Location); + Assert.Equal(RestApiParameterLocation.Path, pathParameter.Location); Assert.Null(pathParameter.DefaultValue); Assert.NotNull(pathParameter.Schema); Assert.Equal("string", pathParameter.Schema.RootElement.GetProperty("type").GetString()); var apiVersionParameter = parameters.Single(p => p.Name == "api-version"); //'api-version' query string parameter. Assert.True(apiVersionParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Query, apiVersionParameter.Location); + Assert.Equal(RestApiParameterLocation.Query, apiVersionParameter.Location); Assert.Equal("7.0", apiVersionParameter.DefaultValue); Assert.NotNull(apiVersionParameter.Schema); Assert.Equal("string", apiVersionParameter.Schema.RootElement.GetProperty("type").GetString()); @@ -139,7 +139,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var payloadParameter = parameters.Single(p => p.Name == "payload"); //'payload' artificial parameter. Assert.True(payloadParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Body, payloadParameter.Location); + Assert.Equal(RestApiParameterLocation.Body, payloadParameter.Location); Assert.Null(payloadParameter.DefaultValue); Assert.Equal("REST API request body.", payloadParameter.Description); Assert.NotNull(payloadParameter.Schema); @@ -147,7 +147,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var contentTypeParameter = parameters.Single(p => p.Name == "content-type"); //'content-type' artificial parameter. Assert.False(contentTypeParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Body, contentTypeParameter.Location); + Assert.Equal(RestApiParameterLocation.Body, contentTypeParameter.Location); Assert.Null(contentTypeParameter.DefaultValue); Assert.Equal("Content type of REST API request body.", contentTypeParameter.Description); Assert.Null(contentTypeParameter.Schema); @@ -160,7 +160,7 @@ public async Task ItCanExtractSimpleTypeHeaderParameterMetadataSuccessfullyAsync var restApi = await this._sut.ParseAsync(this._openApiDocument); //Assert string header parameter metadata - var accept = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "Accept"); + var accept = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "Accept"); Assert.Equal("string", accept.Type); Assert.Equal("application/json", accept.DefaultValue); @@ -168,7 +168,7 @@ public async Task ItCanExtractSimpleTypeHeaderParameterMetadataSuccessfullyAsync Assert.False(accept.IsRequired); //Assert integer header parameter metadata - var apiVersion = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "X-API-Version"); + var apiVersion = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "X-API-Version"); Assert.Equal("integer", apiVersion.Type); Assert.Equal(10, apiVersion.DefaultValue); @@ -198,12 +198,12 @@ public async Task ItCanExtractCsvStyleHeaderParameterMetadataSuccessfullyAsync() var restApi = await this._sut.ParseAsync(this._openApiDocument); //Assert header parameters metadata - var acceptParameter = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "X-Operation-Csv-Ids"); + var acceptParameter = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "X-Operation-Csv-Ids"); Assert.Null(acceptParameter.DefaultValue); Assert.False(acceptParameter.IsRequired); Assert.Equal("array", acceptParameter.Type); - Assert.Equal(RestApiOperationParameterStyle.Simple, acceptParameter.Style); + Assert.Equal(RestApiParameterStyle.Simple, acceptParameter.Style); Assert.Equal("The comma separated list of operation ids.", acceptParameter.Description); Assert.Equal("string", acceptParameter.ArrayItemType); } @@ -219,7 +219,7 @@ public async Task ItCanExtractHeadersSuccessfullyAsync() var operation = restApi.Operations.Single(o => o.Id == "SetSecret"); - var headerParameters = operation.Parameters.Where(p => p.Location == RestApiOperationParameterLocation.Header); + var headerParameters = operation.Parameters.Where(p => p.Location == RestApiParameterLocation.Header); Assert.NotNull(headerParameters); Assert.Equal(3, headerParameters.Count()); @@ -515,8 +515,8 @@ private static MemoryStream ModifyOpenApiDocument(Stream openApiDocument, Action return stream; } - private static RestApiOperationParameter GetParameterMetadata(IList operations, string operationId, - RestApiOperationParameterLocation location, string name) + private static RestApiParameter GetParameterMetadata(IList operations, string operationId, + RestApiParameterLocation location, string name) { Assert.True(operations.Any()); diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV31Tests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV31Tests.cs index d43a8a1cbba7..79f3d8330694 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV31Tests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV31Tests.cs @@ -124,14 +124,14 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var pathParameter = parameters.Single(p => p.Name == "secret-name"); //'secret-name' path parameter. Assert.True(pathParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Path, pathParameter.Location); + Assert.Equal(RestApiParameterLocation.Path, pathParameter.Location); Assert.Null(pathParameter.DefaultValue); Assert.NotNull(pathParameter.Schema); Assert.Equal("string", pathParameter.Schema.RootElement.GetProperty("type").GetString()); var apiVersionParameter = parameters.Single(p => p.Name == "api-version"); //'api-version' query string parameter. Assert.True(apiVersionParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Query, apiVersionParameter.Location); + Assert.Equal(RestApiParameterLocation.Query, apiVersionParameter.Location); Assert.Equal("7.0", apiVersionParameter.DefaultValue); Assert.NotNull(apiVersionParameter.Schema); Assert.Equal("string", apiVersionParameter.Schema.RootElement.GetProperty("type").GetString()); @@ -139,7 +139,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var payloadParameter = parameters.Single(p => p.Name == "payload"); //'payload' artificial parameter. Assert.True(payloadParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Body, payloadParameter.Location); + Assert.Equal(RestApiParameterLocation.Body, payloadParameter.Location); Assert.Null(payloadParameter.DefaultValue); Assert.Equal("REST API request body.", payloadParameter.Description); Assert.NotNull(payloadParameter.Schema); @@ -147,7 +147,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync() var contentTypeParameter = parameters.Single(p => p.Name == "content-type"); //'content-type' artificial parameter. Assert.False(contentTypeParameter.IsRequired); - Assert.Equal(RestApiOperationParameterLocation.Body, contentTypeParameter.Location); + Assert.Equal(RestApiParameterLocation.Body, contentTypeParameter.Location); Assert.Null(contentTypeParameter.DefaultValue); Assert.Equal("Content type of REST API request body.", contentTypeParameter.Description); Assert.Null(contentTypeParameter.Schema); @@ -175,7 +175,7 @@ public async Task ItCanExtractSimpleTypeHeaderParameterMetadataSuccessfullyAsync var restApi = await this._sut.ParseAsync(this._openApiDocument); //Assert string header parameter metadata - var accept = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "Accept"); + var accept = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "Accept"); Assert.Equal("string", accept.Type); Assert.Equal("application/json", accept.DefaultValue); @@ -183,7 +183,7 @@ public async Task ItCanExtractSimpleTypeHeaderParameterMetadataSuccessfullyAsync Assert.False(accept.IsRequired); //Assert integer header parameter metadata - var apiVersion = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "X-API-Version"); + var apiVersion = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "X-API-Version"); Assert.Equal("integer", apiVersion.Type); Assert.Equal(10, apiVersion.DefaultValue); @@ -198,12 +198,12 @@ public async Task ItCanExtractCsvStyleHeaderParameterMetadataSuccessfullyAsync() var restApi = await this._sut.ParseAsync(this._openApiDocument); //Assert header parameters metadata - var acceptParameter = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiOperationParameterLocation.Header, "X-Operation-Csv-Ids"); + var acceptParameter = GetParameterMetadata(restApi.Operations, "SetSecret", RestApiParameterLocation.Header, "X-Operation-Csv-Ids"); Assert.Null(acceptParameter.DefaultValue); Assert.False(acceptParameter.IsRequired); Assert.Equal("array", acceptParameter.Type); - Assert.Equal(RestApiOperationParameterStyle.Simple, acceptParameter.Style); + Assert.Equal(RestApiParameterStyle.Simple, acceptParameter.Style); Assert.Equal("The comma separated list of operation ids.", acceptParameter.Description); Assert.Equal("string", acceptParameter.ArrayItemType); } @@ -219,7 +219,7 @@ public async Task ItCanExtractHeadersSuccessfullyAsync() var operation = restApi.Operations.Single(o => o.Id == "SetSecret"); - var headerParameters = operation.Parameters.Where(p => p.Location == RestApiOperationParameterLocation.Header); + var headerParameters = operation.Parameters.Where(p => p.Location == RestApiParameterLocation.Header); Assert.NotNull(headerParameters); Assert.Equal(3, headerParameters.Count()); @@ -497,7 +497,7 @@ private static MemoryStream ModifyOpenApiDocument(Stream openApiDocument, Action return stream; } - private static RestApiOperationParameter GetParameterMetadata(IList operations, string operationId, RestApiOperationParameterLocation location, string name) + private static RestApiParameter GetParameterMetadata(IList operations, string operationId, RestApiParameterLocation location, string name) { Assert.True(operations.Any()); diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationRunnerTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationRunnerTests.cs index 01b437470cb4..d94ddbc0183b 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationRunnerTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationRunnerTests.cs @@ -66,7 +66,7 @@ public async Task ItCanRunCreateAndUpdateOperationsWithJsonPayloadSuccessfullyAs var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", httpMethod, "fake-description", @@ -144,7 +144,7 @@ public async Task ItCanRunCreateAndUpdateOperationsWithPlainTextPayloadSuccessfu var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", httpMethod, "fake-description", @@ -192,25 +192,25 @@ [new RestApiOperationServer("https://fake-random-test-host")], public async Task ItShouldAddHeadersToHttpRequestAsync() { // Arrange - var parameters = new List + var parameters = new List { - new(name: "X-HS-1", type: "string", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HA-1", type: "array", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HA-2", type: "array", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HB-1", type: "boolean", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HB-2", type: "boolean", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HI-1", type: "integer", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HI-2", type: "integer", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HN-1", type: "number", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HN-2", type: "number", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HD-1", type: "string", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HD-2", type: "string", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "X-HD-3", type: "string", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), + new(name: "X-HS-1", type: "string", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HA-1", type: "array", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HA-2", type: "array", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HB-1", type: "boolean", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HB-2", type: "boolean", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HI-1", type: "integer", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HI-2", type: "integer", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HN-1", type: "number", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HN-2", type: "number", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HD-1", type: "string", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HD-2", type: "string", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "X-HD-3", type: "string", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), }; var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -262,20 +262,20 @@ [new RestApiOperationServer("https://fake-random-test-host")], public async Task ItShouldAddUserAgentHeaderToHttpRequestIfConfiguredAsync() { // Arrange - var parameters = new List + var parameters = new List { new( name: "fake-header", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Header, - style: RestApiOperationParameterStyle.Simple) + location: RestApiParameterLocation.Header, + style: RestApiParameterStyle.Simple) }; var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -307,7 +307,7 @@ public async Task ItShouldBuildJsonPayloadDynamicallyAsync() // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("name", "string", true, []), new("attributes", "object", false, @@ -316,11 +316,11 @@ public async Task ItShouldBuildJsonPayloadDynamicallyAsync() ]) ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -367,7 +367,7 @@ public async Task ItShouldBuildJsonPayloadDynamicallyUsingPayloadMetadataDataTyp // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("name", "string", true, []), new("attributes", "object", false, @@ -380,11 +380,11 @@ public async Task ItShouldBuildJsonPayloadDynamicallyUsingPayloadMetadataDataTyp ]) ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -452,7 +452,7 @@ public async Task ItShouldBuildJsonPayloadDynamicallyResolvingArgumentsByFullNam // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("upn", "string", true, []), new("receiver", "object", false, @@ -469,11 +469,11 @@ public async Task ItShouldBuildJsonPayloadDynamicallyResolvingArgumentsByFullNam ]) ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -543,7 +543,7 @@ public async Task ItShouldThrowExceptionIfPayloadMetadataDoesNotHaveContentTypeA // Arrange var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -570,7 +570,7 @@ public async Task ItShouldThrowExceptionIfContentTypeArgumentIsNotProvidedAsync( // Arrange var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -597,11 +597,11 @@ public async Task ItShouldUsePayloadArgumentForPlainTextContentTypeWhenBuildingP // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Text.Plain); - var payload = new RestApiOperationPayload(MediaTypeNames.Text.Plain, []); + var payload = new RestApiPayload(MediaTypeNames.Text.Plain, []); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -641,7 +641,7 @@ public async Task ItShouldUsePayloadAndContentTypeArgumentsIfDynamicPayloadBuild var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -678,16 +678,16 @@ public async Task ItShouldBuildJsonPayloadDynamicallyExcludingOptionalParameters // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("upn", "string", false, []), ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -724,16 +724,16 @@ public async Task ItShouldBuildJsonPayloadDynamicallyIncludingOptionalParameters // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("upn", "string", false, []), ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -770,25 +770,25 @@ public async Task ItShouldAddRequiredQueryStringParametersIfTheirArgumentsProvid // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - var firstParameter = new RestApiOperationParameter( + var firstParameter = new RestApiParameter( "p1", "string", isRequired: true, //Marking the parameter as required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); - var secondParameter = new RestApiOperationParameter( + var secondParameter = new RestApiParameter( "p2", "integer", isRequired: true, //Marking the parameter as required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -818,25 +818,25 @@ public async Task ItShouldAddNotRequiredQueryStringParametersIfTheirArgumentsPro // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - var firstParameter = new RestApiOperationParameter( + var firstParameter = new RestApiParameter( "p1", "string", isRequired: false, //Marking the parameter as not required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); - var secondParameter = new RestApiOperationParameter( + var secondParameter = new RestApiParameter( "p2", "string", isRequired: false, //Marking the parameter as not required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -866,25 +866,25 @@ public async Task ItShouldSkipNotRequiredQueryStringParametersIfNoArgumentsProvi // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - var firstParameter = new RestApiOperationParameter( + var firstParameter = new RestApiParameter( "p1", "string", isRequired: false, //Marking the parameter as not required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); - var secondParameter = new RestApiOperationParameter( + var secondParameter = new RestApiParameter( "p2", "string", isRequired: true, //Marking the parameter as required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -913,17 +913,17 @@ public async Task ItShouldThrowExceptionIfNoArgumentProvidedForRequiredQueryStri // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( "p1", "string", isRequired: true, //Marking the parameter as required false, - RestApiOperationParameterLocation.Query, - RestApiOperationParameterStyle.Form); + RestApiParameterLocation.Query, + RestApiParameterStyle.Form); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -954,7 +954,7 @@ public async Task ItShouldReadContentAsStringSuccessfullyAsync(string contentTyp var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -996,7 +996,7 @@ public async Task ItShouldReadContentAsBytesSuccessfullyAsync(string contentType var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -1031,7 +1031,7 @@ public async Task ItShouldThrowExceptionForUnsupportedContentTypeAsync() var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -1061,7 +1061,7 @@ public async Task ItShouldReturnRequestUriAndContentAsync() // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("name", "string", true, []), new("attributes", "object", false, @@ -1070,11 +1070,11 @@ public async Task ItShouldReturnRequestUriAndContentAsync() ]) ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -1109,7 +1109,7 @@ public async Task ItShouldHandleNoContentAsync() // Arrange this._httpMessageHandlerStub!.ResponseToReturn = new HttpResponseMessage(System.Net.HttpStatusCode.NoContent); - List payloadProperties = + List payloadProperties = [ new("name", "string", true, []), new("attributes", "object", false, @@ -1118,11 +1118,11 @@ public async Task ItShouldHandleNoContentAsync() ]) ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -1157,7 +1157,7 @@ public async Task ItShouldSetHttpRequestMessageOptionsAsync() // Arrange this._httpMessageHandlerStub.ResponseToReturn.Content = new StringContent("fake-content", Encoding.UTF8, MediaTypeNames.Application.Json); - List payloadProperties = + List payloadProperties = [ new("name", "string", true, []), new("attributes", "object", false, @@ -1166,11 +1166,11 @@ public async Task ItShouldSetHttpRequestMessageOptionsAsync() ]) ]; - var payload = new RestApiOperationPayload(MediaTypeNames.Application.Json, payloadProperties); + var payload = new RestApiPayload(MediaTypeNames.Application.Json, payloadProperties); var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -1214,7 +1214,7 @@ public async Task ItShouldIncludeRequestDataWhenOperationCanceledExceptionIsThro var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Post, "fake-description", @@ -1244,7 +1244,7 @@ public async Task ItShouldUseCustomHttpResponseContentReaderAsync() // Arrange var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -1278,7 +1278,7 @@ public async Task ItShouldUseDefaultHttpResponseContentReaderIfCustomDoesNotRetu var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -1310,7 +1310,7 @@ public async Task ItShouldDisposeContentStreamAndHttpResponseContentMessageAsync // Arrange var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", @@ -1352,38 +1352,38 @@ public IEnumerator GetEnumerator() { yield return new object[] { "default", - new (string, RestApiOperationExpectedResponse)[] { - ("400", new RestApiOperationExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), - ("default", new RestApiOperationExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), + new (string, RestApiExpectedResponse)[] { + ("400", new RestApiExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), + ("default", new RestApiExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), }, }; yield return new object[] { "200", - new (string, RestApiOperationExpectedResponse)[] { - ("200", new RestApiOperationExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), - ("default", new RestApiOperationExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), + new (string, RestApiExpectedResponse)[] { + ("200", new RestApiExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), + ("default", new RestApiExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), }, }; yield return new object[] { "2XX", - new (string, RestApiOperationExpectedResponse)[] { - ("2XX", new RestApiOperationExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), - ("default", new RestApiOperationExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), + new (string, RestApiExpectedResponse)[] { + ("2XX", new RestApiExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), + ("default", new RestApiExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), }, }; yield return new object[] { "2XX", - new (string, RestApiOperationExpectedResponse)[] { - ("2XX", new RestApiOperationExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), - ("default", new RestApiOperationExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), + new (string, RestApiExpectedResponse)[] { + ("2XX", new RestApiExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("FakeResponseSchema.json")))), + ("default", new RestApiExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), }, }; yield return new object[] { "200", - new (string, RestApiOperationExpectedResponse)[] { - ("default", new RestApiOperationExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), - ("2XX", new RestApiOperationExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("2XXFakeResponseSchema.json")))), - ("200", new RestApiOperationExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("200FakeResponseSchema.json")))), + new (string, RestApiExpectedResponse)[] { + ("default", new RestApiExpectedResponse("Default response content", "application/json", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("DefaultResponseSchema.json")))), + ("2XX", new RestApiExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("2XXFakeResponseSchema.json")))), + ("200", new RestApiExpectedResponse("fake-content", "fake-content-type", KernelJsonSchema.Parse(ResourceResponseProvider.LoadFromResource("200FakeResponseSchema.json")))), }, }; } @@ -1393,11 +1393,11 @@ public IEnumerator GetEnumerator() [Theory] [ClassData(typeof(SchemaTestData))] - public async Task ItShouldReturnExpectedSchemaAsync(string expectedStatusCode, params (string, RestApiOperationExpectedResponse)[] responses) + public async Task ItShouldReturnExpectedSchemaAsync(string expectedStatusCode, params (string, RestApiExpectedResponse)[] responses) { var operation = new RestApiOperation( "fake-id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path", HttpMethod.Get, "fake-description", diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationTests.cs index a87a4e48fb81..f3cc37ae0435 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/RestApiOperationTests.cs @@ -24,7 +24,7 @@ public void ItShouldUseHostUrlIfNoOverrideProvided() // Arrange var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "/", HttpMethod.Get, "fake_description", @@ -46,7 +46,7 @@ public void ItShouldUseHostUrlOverrideIfProvided() // Arrange var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "/", HttpMethod.Get, "fake_description", @@ -68,26 +68,26 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ItShouldBuildOperationUrlWithPathParametersFromArguments() { // Arrange - var parameters = new List { + var parameters = new List { new( name: "p1", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Path, - style: RestApiOperationParameterStyle.Simple), + location: RestApiParameterLocation.Path, + style: RestApiParameterStyle.Simple), new( name: "p2", type: "number", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Path, - style: RestApiOperationParameterStyle.Simple) + location: RestApiParameterLocation.Path, + style: RestApiParameterStyle.Simple) }; var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "/{p1}/{p2}/other_fake_path_section", HttpMethod.Get, "fake_description", @@ -111,26 +111,26 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ItShouldBuildOperationUrlWithEncodedArguments() { // Arrange - var parameters = new List { + var parameters = new List { new( name: "p1", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Path, - style: RestApiOperationParameterStyle.Simple), + location: RestApiParameterLocation.Path, + style: RestApiParameterStyle.Simple), new( name: "p2", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Path, - style: RestApiOperationParameterStyle.Simple) + location: RestApiParameterLocation.Path, + style: RestApiParameterStyle.Simple) }; var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "/{p1}/{p2}/other_fake_path_section", HttpMethod.Get, "fake_description", @@ -154,25 +154,25 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ShouldBuildResourceUrlWithoutQueryString() { // Arrange - var parameters = new List { + var parameters = new List { new( name: "p1", type: "string", isRequired: false, expand: false, - location: RestApiOperationParameterLocation.Query, + location: RestApiParameterLocation.Query, defaultValue: "dv1"), new( name: "fake-path", type: "string", isRequired: false, expand: false, - location: RestApiOperationParameterLocation.Path) + location: RestApiParameterLocation.Path) }; var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "{fake-path}/", HttpMethod.Get, "fake_description", @@ -196,24 +196,24 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ItShouldBuildQueryString() { // Arrange - var parameters = new List { + var parameters = new List { new( name: "since_create_time", type: "string", isRequired: false, expand: false, - location: RestApiOperationParameterLocation.Query), + location: RestApiParameterLocation.Query), new( name: "before_create_time", type: "string", isRequired: false, expand: false, - location: RestApiOperationParameterLocation.Query), + location: RestApiParameterLocation.Query), }; var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path/", HttpMethod.Get, "fake_description", @@ -236,18 +236,18 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ItShouldBuildQueryStringWithQuotes() { // Arrange - var parameters = new List { + var parameters = new List { new( name: "has_quotes", type: "string", isRequired: false, expand: false, - location: RestApiOperationParameterLocation.Query) + location: RestApiParameterLocation.Query) }; var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path/", HttpMethod.Get, "fake_description", @@ -269,18 +269,18 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ItShouldBuildQueryStringForArray() { // Arrange - var parameters = new List { + var parameters = new List { new( name: "times", type: "array", isRequired: false, expand: false, - location: RestApiOperationParameterLocation.Query), + location: RestApiParameterLocation.Query), }; var sut = new RestApiOperation( "fake_id", - [new RestApiOperationServer("https://fake-random-test-host")], + [new RestApiServer("https://fake-random-test-host")], "fake-path/", HttpMethod.Get, "fake_description", @@ -302,23 +302,23 @@ [new RestApiOperationServer("https://fake-random-test-host")], public void ItShouldRenderHeaderValuesFromArguments() { // Arrange - var parameters = new List + var parameters = new List { new( name: "fake_header_one", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Header, - style: RestApiOperationParameterStyle.Simple), + location: RestApiParameterLocation.Header, + style: RestApiParameterStyle.Simple), new( name: "fake_header_two", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Header, - style: RestApiOperationParameterStyle.Simple) + location: RestApiParameterLocation.Header, + style: RestApiParameterStyle.Simple) }; var arguments = new Dictionary @@ -327,7 +327,7 @@ public void ItShouldRenderHeaderValuesFromArguments() { "fake_header_two", "fake_header_two_value" } }; - var sut = new RestApiOperation("fake_id", [new RestApiOperationServer("http://fake_url")], "fake_path", HttpMethod.Get, "fake_description", parameters); + var sut = new RestApiOperation("fake_id", [new RestApiServer("http://fake_url")], "fake_path", HttpMethod.Get, "fake_description", parameters); // Act var headers = sut.BuildHeaders(arguments); @@ -346,13 +346,13 @@ public void ItShouldRenderHeaderValuesFromArguments() public void ShouldThrowExceptionIfNoValueProvidedForRequiredHeader() { // Arrange - var metadata = new List + var metadata = new List { - new(name: "fake_header_one", type: "string", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "fake_header_two", type : "string", isRequired : false, expand : false, location : RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple) + new(name: "fake_header_one", type: "string", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "fake_header_two", type : "string", isRequired : false, expand : false, location : RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple) }; - var sut = new RestApiOperation("fake_id", [new RestApiOperationServer("http://fake_url")], "fake_path", HttpMethod.Get, "fake_description", metadata); + var sut = new RestApiOperation("fake_id", [new RestApiServer("http://fake_url")], "fake_path", HttpMethod.Get, "fake_description", metadata); // Act void Act() => sut.BuildHeaders(new Dictionary()); @@ -365,10 +365,10 @@ public void ShouldThrowExceptionIfNoValueProvidedForRequiredHeader() public void ItShouldSkipOptionalHeaderHavingNoValue() { // Arrange - var metadata = new List + var metadata = new List { - new(name: "fake_header_one", type : "string", isRequired : true, expand : false, location : RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "fake_header_two", type : "string", isRequired : false, expand : false, location : RestApiOperationParameterLocation.Header, style : RestApiOperationParameterStyle.Simple) + new(name: "fake_header_one", type : "string", isRequired : true, expand : false, location : RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "fake_header_two", type : "string", isRequired : false, expand : false, location : RestApiParameterLocation.Header, style : RestApiParameterStyle.Simple) }; var arguments = new Dictionary @@ -376,7 +376,7 @@ public void ItShouldSkipOptionalHeaderHavingNoValue() ["fake_header_one"] = "fake_header_one_value" }; - var sut = new RestApiOperation("fake_id", [new RestApiOperationServer("http://fake_url")], "fake_path", HttpMethod.Get, "fake_description", metadata); + var sut = new RestApiOperation("fake_id", [new RestApiServer("http://fake_url")], "fake_path", HttpMethod.Get, "fake_description", metadata); // Act var headers = sut.BuildHeaders(arguments); @@ -392,10 +392,10 @@ public void ItShouldSkipOptionalHeaderHavingNoValue() public void ItShouldCreateHeaderWithCommaSeparatedValues() { // Arrange - var metadata = new List + var metadata = new List { - new( name: "h1", type: "array", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple, arrayItemType: "string"), - new( name: "h2", type: "array", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple, arrayItemType: "integer") + new( name: "h1", type: "array", isRequired: false, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple, arrayItemType: "string"), + new( name: "h2", type: "array", isRequired: false, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple, arrayItemType: "integer") }; var arguments = new Dictionary @@ -404,7 +404,7 @@ public void ItShouldCreateHeaderWithCommaSeparatedValues() ["h2"] = "[1,2,3]" }; - var sut = new RestApiOperation("fake_id", [new RestApiOperationServer("https://fake-random-test-host")], "fake_path", HttpMethod.Get, "fake_description", metadata); + var sut = new RestApiOperation("fake_id", [new RestApiServer("https://fake-random-test-host")], "fake_path", HttpMethod.Get, "fake_description", metadata); // Act var headers = sut.BuildHeaders(arguments); @@ -421,10 +421,10 @@ public void ItShouldCreateHeaderWithCommaSeparatedValues() public void ItShouldCreateHeaderWithPrimitiveValue() { // Arrange - var metadata = new List + var metadata = new List { - new( name: "h1", type: "string", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new( name: "h2", type: "boolean", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple) + new( name: "h1", type: "string", isRequired: false, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new( name: "h2", type: "boolean", isRequired: false, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple) }; var arguments = new Dictionary @@ -433,7 +433,7 @@ public void ItShouldCreateHeaderWithPrimitiveValue() ["h2"] = true }; - var sut = new RestApiOperation("fake_id", [new RestApiOperationServer("https://fake-random-test-host")], "fake_path", HttpMethod.Get, "fake_description", metadata); + var sut = new RestApiOperation("fake_id", [new RestApiServer("https://fake-random-test-host")], "fake_path", HttpMethod.Get, "fake_description", metadata); // Act var headers = sut.BuildHeaders(arguments); @@ -450,10 +450,10 @@ public void ItShouldCreateHeaderWithPrimitiveValue() public void ItShouldMixAndMatchHeadersOfDifferentValueTypes() { // Arrange - var metadata = new List + var metadata = new List { - new(name: "h1", type: "array", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), - new(name: "h2", type: "boolean", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple), + new(name: "h1", type: "array", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), + new(name: "h2", type: "boolean", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple), }; var arguments = new Dictionary @@ -462,7 +462,7 @@ public void ItShouldMixAndMatchHeadersOfDifferentValueTypes() ["h2"] = "false" }; - var sut = new RestApiOperation("fake_id", [new RestApiOperationServer("https://fake-random-test-host")], "fake_path", HttpMethod.Get, "fake_description", metadata); + var sut = new RestApiOperation("fake_id", [new RestApiServer("https://fake-random-test-host")], "fake_path", HttpMethod.Get, "fake_description", metadata); // Act var headers = sut.BuildHeaders(arguments); @@ -710,8 +710,8 @@ public void ItShouldUseDefaultServerVariableIfNoOverrideProvided() var sut = new RestApiOperation( "fake_id", [ - new RestApiOperationServer("https://example.com/{version}", new Dictionary { { "version", new RestApiOperationServerVariable("v2") } }), - new RestApiOperationServer("https://ppe.example.com/{version}", new Dictionary { { "version", new RestApiOperationServerVariable("v2") } }) + new RestApiServer("https://example.com/{version}", new Dictionary { { "version", new RestApiServerVariable("v2") } }), + new RestApiServer("https://ppe.example.com/{version}", new Dictionary { { "version", new RestApiServerVariable("v2") } }) ], "/items", HttpMethod.Get, @@ -732,12 +732,12 @@ public void ItShouldUseDefaultServerVariableIfNoOverrideProvided() public void ItShouldUseDefaultServerVariableIfInvalidOverrideProvided() { // Arrange - var version = new RestApiOperationServerVariable("v2", null, ["v1", "v2"]); + var version = new RestApiServerVariable("v2", null, ["v1", "v2"]); var sut = new RestApiOperation( "fake_id", [ - new RestApiOperationServer("https://example.com/{version}", new Dictionary { { "version", version } }), - new RestApiOperationServer("https://ppe.example.com/{version}", new Dictionary { { "version", new RestApiOperationServerVariable("v2") } }) + new RestApiServer("https://example.com/{version}", new Dictionary { { "version", version } }), + new RestApiServer("https://ppe.example.com/{version}", new Dictionary { { "version", new RestApiServerVariable("v2") } }) ], "/items", HttpMethod.Get, @@ -758,12 +758,12 @@ public void ItShouldUseDefaultServerVariableIfInvalidOverrideProvided() public void ItShouldUseServerVariableOverrideIfProvided() { // Arrange - var version = new RestApiOperationServerVariable("v2", null, ["v1", "v2", "v3"]); + var version = new RestApiServerVariable("v2", null, ["v1", "v2", "v3"]); var sut = new RestApiOperation( "fake_id", [ - new RestApiOperationServer("https://example.com/{version}", new Dictionary { { "version", version } }), - new RestApiOperationServer("https://ppe.example.com/{version}", new Dictionary { { "version", new RestApiOperationServerVariable("v2") } }) + new RestApiServer("https://example.com/{version}", new Dictionary { { "version", version } }), + new RestApiServer("https://ppe.example.com/{version}", new Dictionary { { "version", new RestApiServerVariable("v2") } }) ], "/items", HttpMethod.Get, diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/FormStyleParametersSerializerTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/FormStyleParametersSerializerTests.cs index 3d27259b0936..c33839f18c5a 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/FormStyleParametersSerializerTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/FormStyleParametersSerializerTests.cs @@ -13,13 +13,13 @@ public class FormStyleParametersSerializerTests public void ItShouldCreateAmpersandSeparatedParameterPerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "array", isRequired: true, expand: true, //Specify generating a separate parameter for each array item. - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.Form, + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.Form, arrayItemType: "integer"); // Act @@ -35,13 +35,13 @@ public void ItShouldCreateAmpersandSeparatedParameterPerArrayItem() public void ItShouldCreateParameterWithCommaSeparatedValuePerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "array", isRequired: true, expand: false, //Specify generating a parameter with comma-separated values for each array item. - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.Form, + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.Form, arrayItemType: "integer"); // Act @@ -57,13 +57,13 @@ public void ItShouldCreateParameterWithCommaSeparatedValuePerArrayItem() public void ItShouldCreateParameterForPrimitiveValue() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "integer", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.Form); + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.Form); // Act var result = FormStyleParameterSerializer.Serialize(parameter, "28"); @@ -78,13 +78,13 @@ public void ItShouldCreateParameterForPrimitiveValue() public void ItShouldCreateParameterForDateTimeValue() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.Form); + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.Form); // Act var result = FormStyleParameterSerializer.Serialize(parameter, JsonValue.Create(new DateTime(2023, 12, 06, 11, 53, 36, DateTimeKind.Utc))); @@ -100,13 +100,13 @@ public void ItShouldCreateParameterForDateTimeValue() public void ItShouldCreateParameterForStringValue(string value, string encodedValue) { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "string", isRequired: true, expand: false, - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.Form); + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.Form); // Act var result = FormStyleParameterSerializer.Serialize(parameter, JsonValue.Create(value)); @@ -125,7 +125,7 @@ public void ItShouldCreateParameterForStringValue(string value, string encodedVa public void ItShouldEncodeSpecialSymbolsInPrimitiveParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter("id", "string", false, false, RestApiOperationParameterLocation.Query, RestApiOperationParameterStyle.Form); + var parameter = new RestApiParameter("id", "string", false, false, RestApiParameterLocation.Query, RestApiParameterStyle.Form); // Act var result = FormStyleParameterSerializer.Serialize(parameter, $"fake_query_param_value{specialSymbol}"); @@ -144,7 +144,7 @@ public void ItShouldEncodeSpecialSymbolsInPrimitiveParameterValues(string specia public void ItShouldEncodeSpecialSymbolsInAmpersandSeparatedParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter("id", "array", false, true, RestApiOperationParameterLocation.Query, RestApiOperationParameterStyle.Form); + var parameter = new RestApiParameter("id", "array", false, true, RestApiParameterLocation.Query, RestApiParameterStyle.Form); // Act var result = FormStyleParameterSerializer.Serialize(parameter, new JsonArray($"{specialSymbol}")); @@ -163,7 +163,7 @@ public void ItShouldEncodeSpecialSymbolsInAmpersandSeparatedParameterValues(stri public void ItShouldEncodeSpecialSymbolsInCommaSeparatedParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter("id", "array", false, false, RestApiOperationParameterLocation.Query, RestApiOperationParameterStyle.Form); + var parameter = new RestApiParameter("id", "array", false, false, RestApiParameterLocation.Query, RestApiParameterStyle.Form); // Act var result = FormStyleParameterSerializer.Serialize(parameter, new JsonArray($"{specialSymbol}")); diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/PipeDelimitedStyleParametersSerializerTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/PipeDelimitedStyleParametersSerializerTests.cs index 05fb125924ac..0169766a1495 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/PipeDelimitedStyleParametersSerializerTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/PipeDelimitedStyleParametersSerializerTests.cs @@ -13,7 +13,7 @@ public class PipeDelimitedStyleParametersSerializerTests public void ItShouldThrowExceptionForUnsupportedParameterStyle() { // Arrange - var parameter = new RestApiOperationParameter(name: "p1", type: "string", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.Form); + var parameter = new RestApiParameter(name: "p1", type: "string", isRequired: false, expand: false, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.Form); // Act & Assert Assert.Throws(() => PipeDelimitedStyleParameterSerializer.Serialize(parameter, "fake-argument")); @@ -28,7 +28,7 @@ public void ItShouldThrowExceptionForUnsupportedParameterStyle() public void ItShouldThrowExceptionIfParameterTypeIsNotArray(string parameterType) { // Arrange - var parameter = new RestApiOperationParameter(name: "p1", type: parameterType, isRequired: false, expand: false, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.PipeDelimited); + var parameter = new RestApiParameter(name: "p1", type: parameterType, isRequired: false, expand: false, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.PipeDelimited); // Act & Assert Assert.Throws(() => PipeDelimitedStyleParameterSerializer.Serialize(parameter, "fake-argument")); @@ -38,13 +38,13 @@ public void ItShouldThrowExceptionIfParameterTypeIsNotArray(string parameterType public void ItShouldCreateAmpersandSeparatedParameterPerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "array", isRequired: true, expand: true, //Specifies to generate a separate parameter for each array item. - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.PipeDelimited, + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.PipeDelimited, arrayItemType: "integer"); // Act @@ -60,13 +60,13 @@ public void ItShouldCreateAmpersandSeparatedParameterPerArrayItem() public void ItShouldCreateParameterWithPipeSeparatedValuePerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "array", isRequired: true, expand: false, //Specify generating a parameter with pipe-separated values for each array item. - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.PipeDelimited, + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.PipeDelimited, arrayItemType: "integer"); // Act @@ -86,7 +86,7 @@ public void ItShouldCreateParameterWithPipeSeparatedValuePerArrayItem() public void ItShouldEncodeSpecialSymbolsInPipeDelimitedParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.PipeDelimited); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: false, expand: false, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.PipeDelimited); // Act var result = PipeDelimitedStyleParameterSerializer.Serialize(parameter, new JsonArray(specialSymbol)); @@ -105,7 +105,7 @@ public void ItShouldEncodeSpecialSymbolsInPipeDelimitedParameterValues(string sp public void ItShouldEncodeSpecialSymbolsInAmpersandDelimitedParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: false, expand: true, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.PipeDelimited); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: false, expand: true, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.PipeDelimited); // Act var result = PipeDelimitedStyleParameterSerializer.Serialize(parameter, new JsonArray(specialSymbol)); diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SimpleStyleParametersSerializerTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SimpleStyleParametersSerializerTests.cs index c29d2353c2d1..c912cf59a206 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SimpleStyleParametersSerializerTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SimpleStyleParametersSerializerTests.cs @@ -13,7 +13,7 @@ public class SimpleStyleParametersSerializerTests public void ItShouldCreateParameterWithCommaSeparatedValuePerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple, arrayItemType: "integer"); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple, arrayItemType: "integer"); // Act var result = SimpleStyleParameterSerializer.Serialize(parameter, new JsonArray(1, 2, 3)); @@ -28,7 +28,7 @@ public void ItShouldCreateParameterWithCommaSeparatedValuePerArrayItem() public void ItShouldCreateParameterWithCommaSeparatedValuePerArrayStringItem() { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple, arrayItemType: "integer"); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple, arrayItemType: "integer"); // Act var result = SimpleStyleParameterSerializer.Serialize(parameter, new JsonArray("1", "2", "3")); @@ -43,7 +43,7 @@ public void ItShouldCreateParameterWithCommaSeparatedValuePerArrayStringItem() public void ItShouldCreateParameterForPrimitiveValue() { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "integer", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple); + var parameter = new RestApiParameter(name: "id", type: "integer", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple); // Act var result = SimpleStyleParameterSerializer.Serialize(parameter, "28"); @@ -62,7 +62,7 @@ public void ItShouldCreateParameterForPrimitiveValue() public void ItShouldNotEncodeSpecialSymbolsInPrimitiveParameterValues(string specialSymbol, string expectedSymbol) { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "string", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple); + var parameter = new RestApiParameter(name: "id", type: "string", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple); // Act var result = SimpleStyleParameterSerializer.Serialize(parameter, $"fake_query_param_value{specialSymbol}"); @@ -81,7 +81,7 @@ public void ItShouldNotEncodeSpecialSymbolsInPrimitiveParameterValues(string spe public void ItShouldEncodeSpecialSymbolsInCommaSeparatedParameterValues(string specialSymbol, string expectedSymbol) { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: true, expand: false, location: RestApiOperationParameterLocation.Header, style: RestApiOperationParameterStyle.Simple); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: true, expand: false, location: RestApiParameterLocation.Header, style: RestApiParameterStyle.Simple); // Act var result = SimpleStyleParameterSerializer.Serialize(parameter, new JsonArray(specialSymbol)); diff --git a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SpaceDelimitedStyleParametersSerializerTests.cs b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SpaceDelimitedStyleParametersSerializerTests.cs index be37663b2ed6..6727842e5f9e 100644 --- a/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SpaceDelimitedStyleParametersSerializerTests.cs +++ b/dotnet/src/Functions/Functions.UnitTests/OpenApi/Serialization/SpaceDelimitedStyleParametersSerializerTests.cs @@ -13,7 +13,7 @@ public class SpaceDelimitedStyleParametersSerializerTests public void ItShouldThrowExceptionForUnsupportedParameterStyle() { // Arrange - var parameter = new RestApiOperationParameter(name: "p1", type: "string", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.Label); + var parameter = new RestApiParameter(name: "p1", type: "string", isRequired: false, expand: false, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.Label); // Act & Assert Assert.Throws(() => SpaceDelimitedStyleParameterSerializer.Serialize(parameter, "fake-argument")); @@ -28,7 +28,7 @@ public void ItShouldThrowExceptionForUnsupportedParameterStyle() public void ItShouldThrowExceptionIfParameterTypeIsNotArray(string parameterType) { // Arrange - var parameter = new RestApiOperationParameter(name: "p1", type: parameterType, isRequired: false, expand: false, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.SpaceDelimited); + var parameter = new RestApiParameter(name: "p1", type: parameterType, isRequired: false, expand: false, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.SpaceDelimited); // Act & Assert Assert.Throws(() => SpaceDelimitedStyleParameterSerializer.Serialize(parameter, "fake-argument")); @@ -38,13 +38,13 @@ public void ItShouldThrowExceptionIfParameterTypeIsNotArray(string parameterType public void ItShouldCreateAmpersandSeparatedParameterPerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "array", isRequired: true, expand: true, //Specifies to generate a separate parameter for each array item. - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.SpaceDelimited, + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.SpaceDelimited, arrayItemType: "integer"); // Act @@ -60,13 +60,13 @@ public void ItShouldCreateAmpersandSeparatedParameterPerArrayItem() public void ItShouldCreateParameterWithSpaceSeparatedValuePerArrayItem() { // Arrange - var parameter = new RestApiOperationParameter( + var parameter = new RestApiParameter( name: "id", type: "array", isRequired: true, expand: false, //Specify generating a parameter with space-separated values for each array item. - location: RestApiOperationParameterLocation.Query, - style: RestApiOperationParameterStyle.SpaceDelimited, + location: RestApiParameterLocation.Query, + style: RestApiParameterStyle.SpaceDelimited, arrayItemType: "integer"); // Act @@ -86,7 +86,7 @@ public void ItShouldCreateParameterWithSpaceSeparatedValuePerArrayItem() public void ItShouldEncodeSpecialSymbolsInSpaceDelimitedParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: false, expand: false, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.SpaceDelimited); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: false, expand: false, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.SpaceDelimited); // Act var result = SpaceDelimitedStyleParameterSerializer.Serialize(parameter, new JsonArray(specialSymbol)); @@ -105,7 +105,7 @@ public void ItShouldEncodeSpecialSymbolsInSpaceDelimitedParameterValues(string s public void ItShouldEncodeSpecialSymbolsInAmpersandDelimitedParameterValues(string specialSymbol, string encodedEquivalent) { // Arrange - var parameter = new RestApiOperationParameter(name: "id", type: "array", isRequired: false, expand: true, location: RestApiOperationParameterLocation.Query, style: RestApiOperationParameterStyle.SpaceDelimited); + var parameter = new RestApiParameter(name: "id", type: "array", isRequired: false, expand: true, location: RestApiParameterLocation.Query, style: RestApiParameterStyle.SpaceDelimited); // Act var result = SpaceDelimitedStyleParameterSerializer.Serialize(parameter, new JsonArray(specialSymbol)); From 21434ff47eed6265ba97b575504103cd7143b5af Mon Sep 17 00:00:00 2001 From: SergeyMenshykh Date: Wed, 6 Nov 2024 20:41:16 +0000 Subject: [PATCH 2/3] make the restapiparameter.type prroperty internal --- .../src/Functions/Functions.OpenApi/Model/RestApiParameter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs index 9130689b88dd..d000f699f68c 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameter.cs @@ -23,7 +23,7 @@ public sealed class RestApiParameter /// /// The parameter type - string, integer, number, boolean, array and object. /// - public string Type { get; } + internal string Type { get; } /// /// The parameter type modifier that refines the generic parameter type to a more specific one. From bca793e618465be81a62b54b89dc29ab8cc326ee Mon Sep 17 00:00:00 2001 From: SergeyMenshykh Date: Thu, 7 Nov 2024 11:46:19 +0000 Subject: [PATCH 3/3] update xml comments to not contain the operation keyword --- .../OpenApiFunctionExecutionParameters.cs | 20 +++++++++---------- .../Extensions/RestApiOperationExtensions.cs | 8 ++++---- .../Model/RestApiParameterStyle.cs | 2 +- .../OpenApi/OpenApiDocumentParser.cs | 12 +++++------ .../OpenApiKernelPluginFactory.cs | 2 +- .../FormStyleParameterSerializer.cs | 10 +++++----- .../PipeDelimitedStyleParameterSerializer.cs | 12 +++++------ .../SimpleStyleParameterSerializer.cs | 10 +++++----- .../SpaceDelimitedStyleParameterSerializer.cs | 12 +++++------ 9 files changed, 44 insertions(+), 44 deletions(-) diff --git a/dotnet/src/Functions/Functions.OpenApi/Extensions/OpenApiFunctionExecutionParameters.cs b/dotnet/src/Functions/Functions.OpenApi/Extensions/OpenApiFunctionExecutionParameters.cs index 9673411bcbbb..f5a6ee3519bb 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Extensions/OpenApiFunctionExecutionParameters.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Extensions/OpenApiFunctionExecutionParameters.cs @@ -23,13 +23,13 @@ public class OpenApiFunctionExecutionParameters public AuthenticateRequestAsyncCallback? AuthCallback { get; set; } /// - /// Override for REST API operation server url. + /// Override for REST API server url. /// public Uri? ServerUrlOverride { get; set; } /// - /// Flag indicating whether to ignore non-compliant errors or not. - /// If set to true, the operation execution will not throw exceptions for non-compliant documents. + /// Flag indicating whether to ignore non-compliant errors of the OpenAPI document or not. + /// If set to true, the execution will not throw exceptions for non-compliant documents. /// Please note that enabling this option may result in incomplete or inaccurate execution results. /// public bool IgnoreNonCompliantErrors { get; set; } @@ -40,8 +40,8 @@ public class OpenApiFunctionExecutionParameters public string UserAgent { get; set; } /// - /// Determines whether the operation payload is constructed dynamically based on operation payload metadata. - /// If false, the operation payload must be provided via the 'payload' context variable. + /// Determines whether the REST API operation payload is constructed dynamically based on payload metadata. + /// If false, the payload must be provided via the 'payload' argument. /// public bool EnableDynamicPayload { get; set; } @@ -75,13 +75,13 @@ public class OpenApiFunctionExecutionParameters /// /// The HttpClient to use for sending HTTP requests. /// The callback for adding authentication data to HTTP requests. - /// The override for the REST API operation server URL. + /// The override for the REST API server URL. /// Optional user agent header value. - /// A flag indicating whether to ignore non-compliant errors or not - /// If set to true, the operation execution will not throw exceptions for non-compliant documents. + /// A flag indicating whether to ignore non-compliant errors of the OpenAPI document or not + /// If set to true, the execution will not throw exceptions for non-compliant documents. /// Please note that enabling this option may result in incomplete or inaccurate execution results. - /// Determines whether the operation payload is constructed dynamically based on operation payload metadata. - /// If false, the operation payload must be provided via the 'payload' context variable. + /// Determines whether the REST API operation payload is constructed dynamically based on payload metadata. + /// If false, the REST API payload must be provided via the 'payload' argument. /// Determines whether payload parameter names are augmented with namespaces. /// Namespaces prevent naming conflicts by adding the parent parameter name as a prefix, separated by dots. /// Optional list of operations not to import, e.g. in case they are not supported diff --git a/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs b/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs index c51ad9222943..b16c37b372b1 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Extensions/RestApiOperationExtensions.cs @@ -64,9 +64,9 @@ public static IReadOnlyList GetParameters( } /// - /// Retrieves the default response for a given REST API operation. + /// Retrieves the default response. /// - /// The REST API operation responses to parse. + /// Possible REST API responses. /// The preferred response codes to use when selecting the default response. /// The default response, if any. private static RestApiExpectedResponse? GetDefaultResponse(IReadOnlyDictionary responses, string[] preferredResponses) @@ -153,9 +153,9 @@ private static RestApiParameter CreatePayloadArtificialParameter(RestApiOperatio } /// - /// Retrieves parameters from REST API operation payload metadata. + /// Retrieves parameters from REST API payload metadata. /// - /// The REST API operation payload properties. + /// The REST API payload properties. /// Determines whether property names are augmented with namespaces. /// Namespaces are created by prefixing property names with their root property names. /// diff --git a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs index 12f02eacd8e8..7ba16905d718 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Model/RestApiParameterStyle.cs @@ -5,7 +5,7 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// REST API operation parameter style. +/// REST API parameter style. /// [Experimental("SKEXP0040")] public enum RestApiParameterStyle diff --git a/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs b/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs index 41650d50c2aa..0f0da229afa5 100644 --- a/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs +++ b/dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs @@ -304,7 +304,7 @@ private static RestApiSecurityScheme CreateRestApiSecurityScheme(OpenApiSecurity /// /// Build a list of objects from the given objects. /// - /// The REST API operation security + /// The REST API security. internal static List CreateRestApiOperationSecurityRequirements(IList? security) { var operationRequirements = new List(); @@ -374,7 +374,7 @@ internal static List CreateRestApiOperationSecurityR } /// - /// Creates REST API operation parameters. + /// Creates REST API parameters. /// /// The operation id. /// The OpenAPI parameters. @@ -416,11 +416,11 @@ private static List CreateRestApiOperationParameters(string op } /// - /// Creates REST API operation payload. + /// Creates REST API payload. /// /// The operation id. /// The OpenAPI request body. - /// The REST API operation payload. + /// The REST API payload. private static RestApiPayload? CreateRestApiOperationPayload(string operationId, OpenApiRequestBody requestBody) { if (requestBody?.Content is null) @@ -452,12 +452,12 @@ private static List CreateRestApiOperationParameters(string op } /// - /// Returns REST API operation payload properties. + /// Returns REST API payload properties. /// /// The operation id. /// An OpenAPI document schema representing request body properties. /// Current level in OpenAPI schema. - /// The REST API operation payload properties. + /// The REST API payload properties. private static List GetPayloadProperties(string operationId, OpenApiSchema? schema, int level = 0) { if (schema is null) diff --git a/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs b/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs index f90237e2c2d7..858c16557aba 100644 --- a/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs +++ b/dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs @@ -385,7 +385,7 @@ private static string ConvertOperationIdToValidFunctionName(string operationId, /// /// Converts the parameter type to a C# object. /// - /// The REST API operation parameter. + /// The REST API parameter. /// private static Type? ConvertParameterDataType(RestApiParameter parameter) { diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs index 341e924d77b6..da296260e60a 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/FormStyleParameterSerializer.cs @@ -7,14 +7,14 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// Serializes REST API operation parameter of the 'Form' style. +/// Serializes REST API parameter of the 'Form' style. /// internal static class FormStyleParameterSerializer { /// - /// Serializes a REST API operation `Form` style parameter. + /// Serializes a REST API `Form` style parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The parameter argument. /// The serialized parameter. public static string Serialize(RestApiParameter parameter, JsonNode argument) @@ -27,7 +27,7 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) var style = parameter.Style ?? RestApiParameterStyle.Form; if (style != RestApiParameterStyle.Form) { - throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); + throw new NotSupportedException($"Unsupported Rest API parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } // Handling parameters of array type. @@ -49,7 +49,7 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) /// /// Serializes an array-type parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The argument value. /// The serialized parameter string. private static string SerializeArrayParameter(RestApiParameter parameter, JsonNode argument) diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs index dd09d0c41594..7a19dcf100c0 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/PipeDelimitedStyleParameterSerializer.cs @@ -6,14 +6,14 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// Serializes REST API operation parameter of the 'PipeDelimited' style. +/// Serializes REST API parameter of the 'PipeDelimited' style. /// internal static class PipeDelimitedStyleParameterSerializer { /// - /// Serializes a REST API operation `PipeDelimited` style parameter. + /// Serializes a REST API `PipeDelimited` style parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The parameter argument. /// The serialized parameter. public static string Serialize(RestApiParameter parameter, JsonNode argument) @@ -25,12 +25,12 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) if (parameter.Style != RestApiParameterStyle.PipeDelimited) { - throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); + throw new NotSupportedException($"Unsupported Rest API parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } if (parameter.Type != ArrayType) { - throw new NotSupportedException($"Unsupported Rest API operation parameter type '{parameter.Type}' for parameter '{parameter.Name}'"); + throw new NotSupportedException($"Unsupported Rest API parameter type '{parameter.Type}' for parameter '{parameter.Name}'"); } return SerializeArrayParameter(parameter, argument); @@ -39,7 +39,7 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) /// /// Serializes an array-type parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The argument value. /// The serialized parameter string. private static string SerializeArrayParameter(RestApiParameter parameter, JsonNode argument) diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs index 1dc72aeb4a25..3a653c1b900e 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/SimpleStyleParameterSerializer.cs @@ -6,14 +6,14 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// Serializes REST API operation parameter of the 'Simple' style. +/// Serializes REST API parameter of the 'Simple' style. /// internal static class SimpleStyleParameterSerializer { /// - /// Serializes a REST API operation `Simple` style parameter. + /// Serializes a REST API `Simple` style parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The parameter argument. /// The serialized parameter. public static string Serialize(RestApiParameter parameter, JsonNode argument) @@ -26,7 +26,7 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) var style = parameter.Style ?? RestApiParameterStyle.Simple; if (style != RestApiParameterStyle.Simple) { - throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); + throw new NotSupportedException($"Unsupported Rest API parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } // Serializing parameters of array type. @@ -48,7 +48,7 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) /// /// Serializes an array-type parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The argument value. /// The serialized parameter string. private static string SerializeArrayParameter(RestApiParameter parameter, object argument) diff --git a/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs b/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs index f5edb4fa9ec3..ec7f5f16ec99 100644 --- a/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs +++ b/dotnet/src/Functions/Functions.OpenApi/Serialization/SpaceDelimitedStyleParameterSerializer.cs @@ -6,14 +6,14 @@ namespace Microsoft.SemanticKernel.Plugins.OpenApi; /// -/// Serializes REST API operation parameter of the 'SpaceDelimited' style. +/// Serializes REST API parameter of the 'SpaceDelimited' style. /// internal static class SpaceDelimitedStyleParameterSerializer { /// - /// Serializes a REST API operation `SpaceDelimited` style parameter. + /// Serializes a REST API `SpaceDelimited` style parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The parameter argument. /// The serialized parameter. public static string Serialize(RestApiParameter parameter, JsonNode argument) @@ -24,12 +24,12 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) if (parameter.Style != RestApiParameterStyle.SpaceDelimited) { - throw new NotSupportedException($"Unsupported Rest API operation parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); + throw new NotSupportedException($"Unsupported Rest API parameter style '{parameter.Style}' for parameter '{parameter.Name}'"); } if (parameter.Type != ArrayType) { - throw new NotSupportedException($"Unsupported Rest API operation parameter type '{parameter.Type}' for parameter '{parameter.Name}'"); + throw new NotSupportedException($"Unsupported Rest API parameter type '{parameter.Type}' for parameter '{parameter.Name}'"); } return SerializeArrayParameter(parameter, argument); @@ -38,7 +38,7 @@ public static string Serialize(RestApiParameter parameter, JsonNode argument) /// /// Serializes an array-type parameter. /// - /// The REST API operation parameter to serialize. + /// The REST API parameter to serialize. /// The argument value. /// The serialized parameter string. private static string SerializeArrayParameter(RestApiParameter parameter, JsonNode argument)