Ejemplo n.º 1
0
        public Parameter Build()
        {
            string           parameterName      = _swaggerParameter.Name;
            SwaggerParameter unwrappedParameter = _swaggerParameter;

            if (_swaggerParameter.Reference != null)
            {
                unwrappedParameter = Modeler.Unwrap(_swaggerParameter);
            }

            if (unwrappedParameter.Schema != null && unwrappedParameter.Schema.Reference != null)
            {
                parameterName = unwrappedParameter.Schema.Reference.StripComponentsSchemaPath();
            }

            if (parameterName == null)
            {
                parameterName = unwrappedParameter.Name;
            }

            var isRequired = unwrappedParameter.IsRequired || unwrappedParameter.In == AutoRest.Modeler.Model.ParameterLocation.Path;

            unwrappedParameter.IsRequired = isRequired;
            if (unwrappedParameter.Extensions.ContainsKey("x-ms-enum") && !unwrappedParameter.Schema.Extensions.ContainsKey("x-ms-enum"))
            {
                unwrappedParameter.Schema.Extensions["x-ms-enum"] = unwrappedParameter.Extensions["x-ms-enum"];
            }
            IModelType parameterType = BuildServiceType(parameterName, isRequired);
            var        parameter     = New <Parameter>(new
            {
                Name           = unwrappedParameter.Name,
                SerializedName = unwrappedParameter.Name,
                ModelType      = parameterType,
                Location       = (Core.Model.ParameterLocation)Enum.Parse(typeof(Core.Model.ParameterLocation), unwrappedParameter.In.ToString())
            });

            // translate allowReserved back to what "code-model-v1"-gen generators expect
            if (unwrappedParameter.AllowReserved.HasValue && !parameter.Extensions.ContainsKey("x-ms-skip-url-encoding"))
            {
                parameter.Extensions["x-ms-skip-url-encoding"] = unwrappedParameter.AllowReserved.Value;
            }

            PopulateParameter(parameter, unwrappedParameter);
            parameter.DeprecationMessage = unwrappedParameter.GetDeprecationMessage(EntityType.Parameter);

            if (_swaggerParameter.Reference != null)
            {
                var clientProperty = Modeler.CodeModel.Properties.FirstOrDefault(p => p.SerializedName == unwrappedParameter.Name);
                parameter.ClientProperty = clientProperty;
            }

            return(parameter);
        }