Beispiel #1
0
        public static IncomingRawHeaders ToIncomingRawHeaders(this IDictionary <string, StringValues> source, IConfiguration appConfiguration)
        {
            var incomingRawHeaders = new IncomingRawHeaders(appConfiguration);
            var objectType         = incomingRawHeaders.GetType();

            foreach (var item in source)
            {
                objectType
                .GetProperty(item.Key.Replace("-", ""))?
                .SetValue(incomingRawHeaders, item.Value.ToString(), null);
            }

            return(incomingRawHeaders);
        }
        public static bool Validate(this IncomingRawHeaders incomingRawHeaders, IConfiguration appConfiguration, out List <string> errorMessages)
        {
            errorMessages = new List <string>();
            if (!String.IsNullOrWhiteSpace(incomingRawHeaders.IncludeHateoas))
            {
                if (incomingRawHeaders.IncludeHateoas.ToLower() != "0" &
                    incomingRawHeaders.IncludeHateoas.ToLower() != "1")
                {
                    errorMessages.Add("The header '" + nameof(incomingRawHeaders.IncludeHateoas) + "' can only take a value of '0' (false) or '1' (true)!");
                }
            }

            var latestSupportedApiVersion = appConfiguration.GetValue <int>("LatestApiVersion");

            if (!String.IsNullOrWhiteSpace(incomingRawHeaders.ApiVersion))
            {
                var unacceptableIncomingApiVersionErrorMessage = "The header '" + ConstantHttpHeaderNames.ApiVersion.ToLower() + "' can only take an integer value of greater than or equal to '1'. The latest supported version is " + latestSupportedApiVersion;
                if (!int.TryParse(incomingRawHeaders.ApiVersion, out var incomingApiVersion))
                {
                    errorMessages.Add(unacceptableIncomingApiVersionErrorMessage);
                }

                if (incomingApiVersion < 1 || incomingApiVersion > latestSupportedApiVersion)
                {
                    errorMessages.Add(unacceptableIncomingApiVersionErrorMessage);
                }

                errorMessages = errorMessages.Distinct().ToList();
            }
            ////else
            ////{
            ////    errorMessages.Add("A header '" + ConstantHttpHeaderNames.ApiVersion.ToLower() + "' must be specified and take an integer value greater than or equal to '1'. The latest supported version is " + latestSupportedApiVersion);
            ////}

            if (errorMessages.Count > 0)
            {
                return(false);
            }
            return(true);
        }