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(); } }
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(); } }
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(); } }