/// <summary> /// Detects if a file is binary or text and sends appropriately. /// </summary> public void SendFile(Util.FilePath path) { if (path.Exists == false) { Send404(); } else { var mimeType = MimeType.GetMimeType(path.FullPath); if (mimeType.IsBinary) { var data = Util.FileIO.LoadBinaryFile(path); StatusCode = 200; ContentType = mimeType.ContentType; ContentLength64 = data.Length; Write(data); Close(); } else { var data = Util.FileIO.LoadTextFile(path); StatusCode = 200; ContentType = mimeType.ContentType; ContentLength64 = data.Length; Write(data); Close(); } } }
/// <summary> /// Reads the request URL and calls the appropriate method /// to send a response. /// </summary> public void HandleRequest(LPWebContext context) { // TODO: add route for requests: // // /settings/midimap // if data posted, update the data // always write out the latest data as a response // // /settings/implants // if data posted, updated the data // always write out all current status of implants // // /settings/hardware // for which midi devices are active, and the names of those available if (context.Request.Path.StartsWith("/settings/")) { if (context.Request.Path.StartsWith("/settings/implants")) { ImplantSettingsAjax.Process(context); } else if (context.Request.Path.StartsWith("/settings/devices")) { DeviceSettingsAjax.Process(context); } else if (context.Request.Path.StartsWith("/settings/midimap")) { MappingSettingsAjax.Process(context); } else if (context.Request.Path.StartsWith("/settings/gui")) { GuiSettingsAjax.Process(context); } else { context.Response.Send500("Invalid settings ajax request: " + context.Request.RawUrl); } return; } else if (context.Request.Path.StartsWith("/logs/")) { LoggingAjax.Process(context); return; } // static file var path = new Util.FilePath() { BaseFolder = WebRoot, Filename = "~" + context.Request.Filename, Source = "WebServer" }; context.Response.SendFile(path); }