コード例 #1
0
        public virtual void Handle(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
        {
            RequestsReceived++;

            if (m_Auth != null)
            {
                HttpStatusCode statusCode;

                if (!m_Auth.Authenticate(httpRequest.Headers, httpResponse.AddHeader, out statusCode))
                {
                    httpResponse.StatusCode = (int)statusCode;
                    return;
                }
            }

            try
            {
                if (m_processRequest != null)
                {
                    m_processRequest(httpRequest, httpResponse);
                }
                else
                {
                    ProcessRequest(httpRequest, httpResponse);
                }
            }
            catch
            {
                httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError;
            }

            RequestsHandled++;
        }
コード例 #2
0
        public virtual void Handle(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
        {
            RequestsReceived++;
            if (httpRequest.HttpMethod != m_httMethod)
            {
                httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }
            OSDMap args;

            try
            {
                args = (OSDMap)OSDParser.Deserialize(httpRequest.InputStream);
            }
            catch
            {
                httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }
            if (args == null)
            {
                httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }

            if (m_Auth != null)
            {
                if (!m_Auth.Authenticate(httpRequest.Headers, httpResponse.AddHeader, out HttpStatusCode statusCode))
                {
                    httpResponse.StatusCode = (int)statusCode;
                    return;
                }
            }
            try
            {
                if (m_processRequest != null)
                {
                    m_processRequest(httpRequest, httpResponse, args);
                }
                else
                {
                    ProcessRequest(httpRequest, httpResponse, args);
                }
            }
            catch
            {
                httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError;
            }

            RequestsHandled++;
        }
コード例 #3
0
        public virtual byte[] Handle(
            string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
        {
            RequestsReceived++;
            if (m_Auth != null && !m_Auth.Authenticate(httpRequest.Headers, httpResponse.AddHeader))
            {
                httpResponse.StatusCode  = (int)HttpStatusCode.Unauthorized;
                httpResponse.ContentType = "text/plain";
                return(new byte[0]);
            }

            byte[] result = ProcessRequest(path, request, httpRequest, httpResponse);

            RequestsHandled++;

            return(result);
        }
コード例 #4
0
        public virtual void Handle(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
        {
            RequestsReceived++;
            if (httpRequest.HttpMethod != m_httMethod)
            {
                httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }

            if (httpRequest.InputStream == null || httpRequest.InputStream.Length == 0)
            {
                httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }

            if (m_maxDatasize > 0 && httpRequest.InputStream.Length > m_maxDatasize)
            {
                httpResponse.StatusCode = (int)HttpStatusCode.RequestEntityTooLarge;
                return;
            }

            byte[] data;
            try
            {
                Stream request = httpRequest.InputStream;
                if (request is MemoryStream)
                {
                    data = ((MemoryStream)request).ToArray();
                }
                else
                {
                    request.Seek(0, SeekOrigin.Begin);
                    using (MemoryStream ms = new MemoryStream((int)request.Length))
                    {
                        request.CopyTo(ms);
                        data = ms.ToArray();
                    }
                }
                request.Dispose();
            }
            catch
            {
                httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }

            if (m_Auth != null)
            {
                if (!m_Auth.Authenticate(httpRequest.Headers, httpResponse.AddHeader, out HttpStatusCode statusCode))
                {
                    httpResponse.StatusCode = (int)statusCode;
                    return;
                }
            }
            try
            {
                if (m_processRequest != null)
                {
                    m_processRequest(httpRequest, httpResponse, data);
                }
                else
                {
                    ProcessRequest(httpRequest, httpResponse, data);
                }
            }
            catch
            {
                httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError;
            }

            RequestsHandled++;
        }