Example #1
0
 public string ToHttp()
 {
     return(HttpRequestKindUtils.ConvertToString(Kind)
            + " "
            + Resource.Representation
            + " "
            + HttpVersionUtils.ConvertToString(Version)
            + "\r\n"
            + Message.ToHttp());
 }
Example #2
0
        public static HttpRequestValidationCode Validate(string request, out HttpRequestKind kind, out Resource resource, out HttpVersion version)
        {
            var elements = request?.Split(' ') ?? new string[0];

            kind = elements.Length > 0 ? HttpRequestKindUtils.ParseHttpRequestKind(elements[0]) : HttpRequestKind.Unknown;
            if (kind == HttpRequestKind.Unknown)
            {
                resource = new Resource();
                version  = HttpVersion.Unknown;
                return(HttpRequestValidationCode.RequestUnknown);
            }

            if (elements.Length > 1)
            {
                resource = new Resource(elements[1]);
                if (!resource.IsValid)
                {
                    version = HttpVersion.Unknown;
                    return(HttpRequestValidationCode.InvalidResource);
                }
            }
            else
            {
                resource = new Resource();
                version  = HttpVersion.Unknown;
                return(HttpRequestValidationCode.NoResource);
            }

            if (elements.Length > 2)
            {
                version = HttpVersionUtils.Parse(elements[2]);
                if (version == HttpVersion.Unknown)
                {
                    return(HttpRequestValidationCode.UnknownVersion);
                }
            }
            else
            {
                version = HttpVersion.Unknown;
                return(HttpRequestValidationCode.NoVersion);
            }

            return(HttpRequestValidationCode.Valid);
        }