Ejemplo n.º 1
0
        public static HttpRequest Parse(byte[] raw)
        {
            string dat = Encoding.Default.GetString(raw ?? throw new ArgumentNullException("byte[] raw"));

            if (dat.Length < 1)
            {
                return(new HttpRequest());
            }
            string[] splitbody;
            if ((splitbody = dat.Split(bodySplit, StringSplitOptions.None)).Length < 2)
            {
                return(new HttpRequest());
            }
            ;
            RequestHeader request = RequestHeader.Parse(splitbody[0]);

            byte[] content = Encoding.Default.GetBytes(dat.Remove(0, splitbody[0].Length + 4).Take(request.RequestParameters.ContentLength).ToArray());
            Form   form    = null;

            //REMOVE THIS

            //request.RequestParameters.contentType = RequestParameters.ContentTypes.FORMMULTIPART;

            //
            if (request.Method == Methods.POST)
            {
                if (request.RequestParameters.contentType == RequestParameters.ContentTypes.FORMMULTIPART)
                {
                    form = Form.Parse(Form.FormTypes.Mutlipart, Encoding.Default.GetString(content), request.RequestParameters.boundary);
                }
                else if (request.RequestParameters.contentType == RequestParameters.ContentTypes.URLENCODEDFORM)
                {
                    form = Form.Parse(Form.FormTypes.UrlEncode, splitbody[1]);
                }
            }
            HttpRequest toreturn = new HttpRequest(request, new Content()
            {
                ContentBytes = content
            }, form);

            return(toreturn);
        }