/// <summary> /// Ignore all routing from files, use HtmlRootFolder /// </summary> /// <param name="app"></param> private void ConfigureMiddleware(IAppBuilder app) { // create the html root folder if it doesn't exist var folderLocation = ContentUpdater.GetFolderLocation(""); bool exists = Directory.Exists(folderLocation); if (!exists) { Directory.CreateDirectory(folderLocation); } var physicalFileSystem = new PhysicalFileSystem(@"./" + StandingData.HtmlRootFolder); var options = new FileServerOptions { EnableDefaultFiles = true, FileSystem = physicalFileSystem }; options.StaticFileOptions.FileSystem = physicalFileSystem; options.StaticFileOptions.ServeUnknownFileTypes = true; options.DefaultFilesOptions.DefaultFileNames = new[] { "index.html" }; app.UseFileServer(options); }
public UnitOfWorkResult <DTO.Picture> Execute(DTO.PictureForCreation input) { if (input == null) { return(new UnitOfWorkResult <DTO.Picture>(null, UnitOfWorkStatus.Invalid)); } if (_ownerId == null) { // can only create a picture if we know who the user is return(new UnitOfWorkResult <DTO.Picture>(null, UnitOfWorkStatus.Forbidden)); } // does the trip exist? if (!(_tripRepository.TripExists(_tripId))) { return(new UnitOfWorkResult <DTO.Picture>(null, UnitOfWorkStatus.NotFound)); } // can this user add a picture to this trip? Either the trip must be public, // or the user must own the trip if (!(_tripRepository.CanAddPictureToTrip(_tripId, _ownerId))) { return(new UnitOfWorkResult <DTO.Picture>(null, UnitOfWorkStatus.Forbidden)); } // map to entity var pictureEntity = Mapper.Map <DTO.PictureForCreation, Repository.Entities.Picture>(input); // create guid var id = Guid.NewGuid(); pictureEntity.Id = id; pictureEntity.TripId = _tripId; pictureEntity.OwnerId = _ownerId; // save the array of bytes on disk // file name (limited/assumes JPG) var fileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem("Images"); string fileName = Guid.NewGuid().ToString() + ".jpg"; // write and auto-close File.WriteAllBytes(fileSystem.Root + "/" + fileName, input.PictureBytes); // fill out URI pictureEntity.Uri = "images/" + fileName; _tripRepository.InsertPicture(pictureEntity); // commit _ctx.SaveChanges(); // return a dto var dto = Mapper.Map <Repository.Entities.Picture, DTO.Picture>(pictureEntity); return(new UnitOfWorkResult <DTO.Picture>(dto, UnitOfWorkStatus.Ok)); }
public UnitOfWorkResult <DTO.Trip> Execute(DTO.TripForCreation input) { if (input == null) { return(new UnitOfWorkResult <DTO.Trip>(null, UnitOfWorkStatus.Invalid)); } if (_ownerId == null) { // cannot create a trip when there's no owner id return(new UnitOfWorkResult <DTO.Trip>(null, UnitOfWorkStatus.Forbidden)); } // map to entity var tripEntity = Mapper.Map <DTO.TripForCreation, Repository.Entities.Trip>(input); // create guid var id = Guid.NewGuid(); tripEntity.Id = id; tripEntity.OwnerId = _ownerId; // save the array of bytes on disk // file name (limited/assumes JPG) var fileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem("images"); string fileName = Guid.NewGuid().ToString() + ".jpg"; // write and auto-close File.WriteAllBytes(fileSystem.Root + "/" + fileName, input.MainPictureBytes); // fill out URI tripEntity.MainPictureUri = "images/" + fileName; _tripRepository.InsertTrip(tripEntity); // commit _ctx.SaveChanges(); // return a dto var dto = Mapper.Map <Repository.Entities.Trip, DTO.Trip>(tripEntity); return(new UnitOfWorkResult <DTO.Trip>(dto, UnitOfWorkStatus.Ok)); }
public void Configuration(IAppBuilder app) { string url = null; if (bool.Parse (System.Configuration.ConfigurationManager.AppSettings ["is_environment_based"])) { url = System.Environment.GetEnvironmentVariable ("web_site_url"); } else { url = System.Configuration.ConfigurationManager.AppSettings["web_site_url"]; } #if DEBUG app.UseErrorPage(); #endif //app.UseWelcomePage("/"); // Configure Web API for self-host. HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); /* config.Routes.MapHttpRoute( name: "DynamicApi", routeTemplate: "api-docs/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); */ config.Formatters.Clear(); config.Formatters.Add(new System.Net.Http.Formatting.JsonMediaTypeFormatter()); config.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()//, //NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }; //https://github.com/NSwag/NSwag/wiki/Middlewares //app.UseSwaggerUi(typeof(Startup).Assembly, new SwaggerUiOwinSettings()); //app.UseWebApi(config); config .EnableSwagger("docs/{apiVersion}/swagger", c => { c.SingleApiVersion("v1", "MMRIA data API"); c.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) + req.GetRequestContext().VirtualPathRoot.TrimEnd('/')); c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); //c.DocumentFilter<mmria.server.swashbuckle.Document_Filter>(); }) .EnableSwaggerUi("sandbox/{*assetPath}"); /* config .EnableSwagger(c => { //c.RootUrl(req => url); c.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) + req.GetRequestContext().VirtualPathRoot.TrimEnd('/')); c.Schemes(new[] { "http", "https" }); c.SingleApiVersion("v1", "Swashbuckle.Dummy") .Description("A sample API for testing and prototyping Swashbuckle features") .TermsOfService("Some terms") .Contact(cc => cc .Name("Some contact") .Url("http://tempuri.org/contact") .Email("*****@*****.**")) .License(lc => lc .Name("Some License") .Url("http://tempuri.org/license")); }) .EnableSwaggerUi("sandbox/{*assetPath}");*/ app.UseWebApi(config); // //app.UseSwagger(); string root = null; if (bool.Parse (System.Configuration.ConfigurationManager.AppSettings ["is_environment_based"])) { root = System.Environment.GetEnvironmentVariable("file_root_folder"); } else { root = System.Configuration.ConfigurationManager.AppSettings["file_root_folder"]; } var fileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem(root); var options = new Microsoft.Owin.StaticFiles.FileServerOptions() { EnableDirectoryBrowsing = true, EnableDefaultFiles = true, DefaultFilesOptions = { DefaultFileNames = {"index.html"}}, FileSystem = fileSystem, StaticFileOptions = { ContentTypeProvider = new CustomContentTypeProvider() } }; app.UseFileServer (options); }
public FileSystem(string root) { _physicalFileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem(root); }