コード例 #1
0
        private void FrameReceivedHandler(object sender, FrameReceivedEventArgs args)
        {
            var stream = args.Stream;
            var method = stream.Headers.GetValue(":method").ToLower();

            try
            {
                if (args.Frame is DataFrame)
                {
                    switch (method)
                    {
                        case "post":
                        case "put":
                            SaveDataFrame(stream, (DataFrame) args.Frame);
                            //Avoid leading \ at the filename
                            AddFileToRootFileList(stream.Headers.GetValue(":path").Substring(1));
                            break;
                    }
                } 
                else if (args.Frame is Headers)
                {
                    byte[] binary;
                    switch (method)
                    {
                        case "get":
                        case "dir":
                            try
                            {
                                binary = _fileHelper.GetFile(stream.Headers.GetValue(":path"));
                            }
                            catch (FileNotFoundException)
                            {
                                binary = new NotFound404().Bytes;
                            }
                            SendDataTo(stream, binary);
                            break;
                        case "delete":
                            binary = new AccessDenied401().Bytes;
                            SendDataTo(stream, binary);
                            break;
                    }
                }
            }
            catch (Exception)
            {
                stream.WriteRst(ResetStatusCode.InternalError);

                stream.Dispose();
            }
        }
コード例 #2
0
        private void FrameReceivedHandler(object sender, FrameReceivedEventArgs args)
        {
            var stream = args.Stream;
            var method = stream.Headers.GetValue(":method").ToLower();

            try
            {
                switch (method)
                {
                    case "dir":
                    case "get":
                        if (args.Frame is DataFrame)
                        {
                            SaveDataFrame(stream, (DataFrame) args.Frame);
                        }
                        else if (args.Frame is HeadersFrame)
                        {
                            Http2Logger.LogConsole("Headers received for stream: " + args.Frame.StreamId + " status:" + ((HeadersFrame)args.Frame).Headers.GetValue(":status"));
                        }
                        break;
                }
            }
            catch (Exception)
            {
                stream.WriteRst(ResetStatusCode.InternalError);
                stream.Dispose();
            }
        }
コード例 #3
0
        private void FrameReceivedHandler(object sender, FrameReceivedEventArgs args)
        {
            var stream = args.Stream;
            var method = stream.Headers.GetValue(":method");
            if (!string.IsNullOrEmpty(method)) 
                method = method.ToLower();

            try
            {
                if (args.Frame is DataFrame)
                {
                    switch (method)
                    {
                        case "post":
                        case "put":
                            SaveDataFrame(stream, (DataFrame) args.Frame);
                            //Avoid leading \ at the filename
                            AddFileToRootFileList(stream.Headers.GetValue(":path").Substring(1));
                            break;
                    }
                } 
                else if (args.Frame is HeadersFrame)
                {
                    switch (method)
                    {
                        case "get":
                        case "dir":
                            try
                            {
                                string path = stream.Headers.GetValue(":path").Trim('/');
                                SendFile(path, stream);
                            }
                            catch (FileNotFoundException e)
                            {
                                Http2Logger.LogDebug("File not found: " + e.FileName);
                                WriteStatus(stream, StatusCode.Code404NotFound, true);
                            }

                            break;
                        case "delete":
                            WriteStatus(stream, StatusCode.Code401Forbidden, true);
                            break;

                        default:
                            Http2Logger.LogDebug("Received headers with Status: " + stream.Headers.GetValue(":status"));
                            break;
                    }
                }
            }
            catch (Exception e)
            {
                Http2Logger.LogDebug("Error: " + e.Message);
                stream.WriteRst(ResetStatusCode.InternalError);
                stream.Dispose();
            }
        }