Example #1
0
        private void MapParameters(OpenApiModel.OpenApiModelBuilder openApiModelBuilder,
                                   Dictionary <string, Parameter> versionedParameters)
        {
            foreach (var(key, parameter) in versionedParameters)
            {
                var schemaPath = parameter.Schema.GetRef() ?? $"{key}/schema";
                var schema     = openApiModelBuilder.GetSchemaForPath(schemaPath);

                if (schema == null)
                {
                    throw new ArgumentException(
                              $"Couldn't create parameter - missing schema {schemaPath}. Pleas validate them earlier.");
                }

                var name                = parameter.Name ?? throw new ArgumentException("Parameter has to have the name.");
                var isRequired          = parameter.Required ?? false;
                var isDeprecated        = parameter.Deprecated ?? false;
                var allowEmptyValue     = parameter.AllowEmptyValue ?? false;
                var parameterTypeString = parameter.In ?? "";

                var map = new Dictionary <string, ParameterType>
                {
                    { "query", ParameterType.Query },
                    { "header", ParameterType.Header },
                    { "path", ParameterType.Path }
                };

                if (!map.ContainsKey(parameterTypeString))
                {
                    throw new ArgumentException($"Invalid `in` value - {parameterTypeString}");
                }

                openApiModelBuilder.AttachParameter(key,
                                                    new Models.Parameters.Parameter(name, map[parameterTypeString], schema, isRequired, isDeprecated,
                                                                                    allowEmptyValue));
            }
        }