Esempio n. 1
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "GetClientContainerSize/{container}")] HttpRequest req,
            string container)
        {
            try
            {
                IImageService     service          = Utilities.Utilities.GetImageService();
                IContainerService containerService = new ContainerClass(container);
                if (!service.CheckIfContainerExists(containerService))
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.BadRequest, "Provided container is invalid"));
                }

                double containerSizeInMiB = Math.Round(service.GetImagesDictionaryPathAndSize(containerService).Sum(x => x.Value) / (1024f * 1024f), 2);

                var sizeDictionary = new Dictionary <string, double>();
                sizeDictionary.Add(containerService.GetContainerName(), containerSizeInMiB);

                return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                           HttpStatusCode.OK, JsonConvert.SerializeObject(sizeDictionary)));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
        }
Esempio n. 2
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "ManageDatabase/{container}/{secKey}")] HttpRequest req,
            string container,
            string secKey)
        {
            try
            {
                IImageService     service          = Utilities.Utilities.GetImageService();
                IContainerService containerService = new ContainerClass(container);

                if (service.GetImageSecurityHash(containerService.GetContainerName(), Utilities.Utilities.ContainerRemoveKey) != secKey)
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.NotFound, "Provided SecKey is invalid"));
                }


                if (!service.CheckIfContainerExists(containerService))
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.NotFound, "Provided container is invalid"));
                }

                IDatabaseService databaseService = Utilities.Utilities.GetDatabaseService();

                databaseService.CreateTableIfNotExists();
                databaseService.RestoreDataForContainer(service, containerService);
                databaseService.CompareAndCorrectDbDataForContainer(service, containerService);


                return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                           HttpStatusCode.OK, $"Table data for container  was successfully restored"));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                           HttpStatusCode.InternalServerError, ""));
            }
        }
Esempio n. 3
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "Upload")] HttpRequest req)
        {
            try
            {
                if (!req.Form.Files.Any() || req.Form["container"] == string.Empty)
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.BadRequest, "invalid request data"));
                }

                IImageService service = Utilities.Utilities.GetImageService();

                IContainerService container = new ContainerClass(req.Form["container"]);

                if (!service.CheckIfContainerNameIsValid(container))
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.BadRequest, "invalid container name"));
                }

                foreach (var imageFile in req.Form.Files)
                {
                    if (!service.CheckIfFileIsSupported(imageFile.FileName))
                    {
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.BadRequest, "invalid image format"));
                    }

                    if (service.GetUploadImageSecurityKey(container.GetContainerName(), imageFile.FileName, imageFile.Length.ToString()) != imageFile.Name)
                    {
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.Forbidden, ""));
                    }
                }

                List <string>    notUploadedFiles = new List <string>();
                List <ImageData> filesToUpload    = new List <ImageData>();

                IDatabaseService databaseService = Utilities.Utilities.GetDatabaseService();

                foreach (var imageToUpload in req.Form.Files)
                {
                    string    imagePath    = service.GetImagePathUpload(imageToUpload.FileName);
                    ImageData uploadResult = service.UploadImage(
                        req.Form.Files.GetFile(imageToUpload.Name).OpenReadStream(),
                        container,
                        imagePath);

                    if (uploadResult.ImageName.IsNullOrEmpty())
                    {
                        notUploadedFiles.Add(imageToUpload.FileName);
                    }
                    else
                    {
                        filesToUpload.Add(uploadResult);
                    }
                }

                if (filesToUpload.Any())
                {
                    databaseService.SaveImagesData(filesToUpload);
                }

                if (notUploadedFiles.Any())
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.MultiStatus, JsonConvert.SerializeObject(notUploadedFiles)));
                }


                return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                           HttpStatusCode.Created, "Uploaded successfully"));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                           HttpStatusCode.InternalServerError, "Something gone wrong"));
            }
        }
Esempio n. 4
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "Remove")] HttpRequest req)
        {
            try
            {
                IImageService    service         = Utilities.Utilities.GetImageService();
                IDatabaseService databaseService = Utilities.Utilities.GetDatabaseService();

                string objectToDelete  = req.Form["objectToDelete"];
                string containerName   = req.Form["container"];
                string imageName       = req.Form["imageName"];
                string imageParameters = req.Form["imageParameters"];
                string secKey          = req.Form["secKey"];

                IContainerService containerService = new ContainerClass(containerName);


                if (!service.CheckIfContainerExists(containerService))
                {
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.NotFound, "Provided container is invalid"));
                }

                switch (objectToDelete)
                {
                case "container":
                    if (service.GetImageSecurityHash(containerService.GetContainerName(), Utilities.Utilities.ContainerRemoveKey) != secKey)
                    {
                        break;
                    }
                    if (service.CheckIfContainerExists(containerService))
                    {
                        service.DeleteClientContainer(containerService);
                        databaseService.DeleteClientContainer(containerService);

                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.OK, "Client container is gone"));
                    }
                    break;

                case "imageDirectory":
                    if (service.GetImageSecurityHash(containerName, imageName) != secKey || imageName.IsNullOrEmpty())
                    {
                        break;
                    }

                    if (service.DeleteImageDirectory(imageName, containerService))
                    {
                        databaseService.DeleteImage(imageName, containerService);
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.OK, "Requested directory is gone"));
                    }
                    else
                    {
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.NotFound, "Requested directory doesn't exist"));
                    }
                    break;

                case "singleImage":
                    if (service.GetImageSecurityHash(containerName, imageName) != secKey || imageName.IsNullOrEmpty())
                    {
                        break;
                    }

                    var requestedParameters = new QueryParameterValues(imageParameters);

                    if (service.GetImageSecurityHash(containerName, imageName).Substring(0, 4) == requestedParameters.WatermarkString)
                    {
                        requestedParameters.SetWatermarkPresence(false);
                    }

                    if (service.DeleteSingleCacheImage(service.GetImagePathResize(requestedParameters, imageName), containerService))
                    {
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.OK, "Requested image is gone"));
                    }
                    else
                    {
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.NotFound, "Requested file doesn't exists"));
                    }
                    break;

                case "letterDirectory":
                    if (service.GetImageSecurityHash(containerName, imageName) != secKey || imageName.IsNullOrEmpty())
                    {
                        break;
                    }

                    if (service.DeleteLetterDirectory(imageName, containerService))
                    {
                        databaseService.DeleteLetterDirectory(imageName, containerService);
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.OK, "Requested letter directory is gone"));
                    }
                    else
                    {
                        return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                                   HttpStatusCode.NotFound, "Requested letter directory doesn't exist"));
                    }
                    break;

                default:
                    return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                               HttpStatusCode.BadRequest, "Invalid objectToDelete option"));

                    break;
                }

                return(Utilities.Utilities.GetHttpResponseMessage_ReturnsStatusCodeAndMessage(
                           HttpStatusCode.Forbidden, ""));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }
        }