/// <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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
		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);

		}
Beispiel #5
0
 public FileSystem(string root)
 {
     _physicalFileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem(root);
 }