public async Task <IActionResult> PostImage([FromBody] ImagePostRequest request)
        {
            //Upload Image
            CloudBlockBlob blockBlob = _container.GetBlockBlobReference($"{request.Id}.{request.EncodingFormat}");

            HttpWebRequest  aRequest  = (HttpWebRequest)WebRequest.Create(request.URL);
            HttpWebResponse aResponse = (await aRequest.GetResponseAsync()) as HttpWebResponse;

            var stream = aResponse.GetResponseStream();
            await blockBlob.UploadFromStreamAsync(stream);

            stream.Dispose();

            //Save metadata
            var savedImage = new SavedImage();

            savedImage.UserId      = request.UserId;
            savedImage.Description = request.Description;
            savedImage.StorageUrl  = blockBlob.Uri.ToString();
            savedImage.Tags        = new List <SavedImageTag>();

            foreach (var tag in request.Tags)
            {
                savedImage.Tags.Add(new SavedImageTag()
                {
                    Tag = tag
                });
            }

            _context.Add(savedImage);
            _context.SaveChanges();

            return(Ok());
        }
Example #2
0
        public async Task <IActionResult> PostImage([FromBody] ImagePostRequest request)
        {
            System.IO.Stream stream = null;
            IActionResult    result = Ok();

            try
            {
                _logger.Info($"Call PostImage with data: user: {request.UserId}, image: (Id: {request.Id}, description: {request.Description}, tags: {request.Tags}, url: {request.URL})");


                var blockBlob = _container.GetBlockBlobReference(string.Format("{0}.{1}", request.Id, request.EncodingFormat));
                var aRequest  = (HttpWebRequest)WebRequest.Create(request.URL);
                var aResponse = (await aRequest.GetResponseAsync()) as HttpWebResponse;

                stream = aResponse.GetResponseStream();
                await blockBlob.UploadFromStreamAsync(stream);

                var savedImage = new SavedImage
                {
                    UserId      = request.UserId,
                    Description = request.Description,
                    StorageUrl  = blockBlob.Uri.ToString(),
                    Tags        = new List <SavedImageTag>()
                };

                foreach (var tag in request.Tags)
                {
                    savedImage.Tags.Add(new SavedImageTag {
                        Tag = tag
                    });
                }

                _logger.Debug("PostImage, saving data in db");
                _context.Add(savedImage);

                _context.SaveChanges();

                _logger.Debug("PostImage, succes");
            }
            catch (Exception e)
            {
                _logger.Error(e, e.Message);
                result = BadRequest();
            }
            finally
            {
                if (stream != null)
                {
                    stream.Dispose();
                }
                stream.Close();
            }

            return(result);
        }
Example #3
0
        private async Task <string> UploadPicture(Stream source)
        {
            var text           = _imageText ?? string.Empty;
            var pictureEncoded = ConvertService.Base64FromStream(source).Result;
            var image          = new SavedImage()
            {
                ImageConverted = pictureEncoded, Text = text
            };

            // var response = await ApiService.PostImagesConverted(image);
            return("");
            //return response;
        }
Example #4
0
        public IHttpActionResult Post(SavedImage image /*[FromBody]string text, [FromBody]string imageSerialized*/)
        {
            try
            {
                lock (_lock)
                {
                    _database.Images.Add(image);
                    _database.SaveChanges();
                }

                return(Ok());
            }
            catch (Exception e)
            {
                return(InternalServerError(e.InnerException));
            }
        }
Example #5
0
        public static async Task <string> PostImagesConverted(SavedImage entry)
        {
            var client = new HttpClient();

            var parsedEntry = JsonConvert.SerializeObject(entry);

            var response = await client.PostAsync(_uri + "api/Images/Post", new StringContent(parsedEntry)
            {
                Headers = { ContentType = new MediaTypeHeaderValue("application/json") }
            });

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return("OK");
            }

            return(await response.Content.ReadAsStringAsync());
        }
Example #6
0
        public async Task <IActionResult> PostImage([FromBody] ImagePostRequest request)
        {
            Contract.Requires(request != null);
            //if (request == null)
            //{
            //	throw new ArgumentNullException(nameof(request));
            //}

            //Uri requestUri = new Uri(request.URL);
            HttpWebRequest  aRequest  = (HttpWebRequest)WebRequest.Create(request.URL);
            HttpWebResponse aResponse = (await aRequest.GetResponseAsync().ConfigureAwait(false)) as HttpWebResponse;

            // Get a reference to a blob named "sample-file" in a container named "sample-container"
            string     blobName  = $"{request.Id}.{request.EncodingFormat}";
            BlobClient blockBlob = this._container.GetBlobClient(blobName);

            using (var stream = aResponse.GetResponseStream())
            {
                await blockBlob.UploadAsync(stream).ConfigureAwait(false);
            }

            //Save metadata
            var savedImage = new SavedImage()
            {
                UserId      = request.UserId,
                Description = request.Description,
                StorageUrl  = blockBlob.Uri
            };

            foreach (var tag in request.Tags)
            {
                savedImage.Tags.Add(new SavedImageTag()
                {
                    Tag = tag
                });
            }

            _context.Add(savedImage);
            _context.SaveChanges();

            return(Ok());
        }
Example #7
0
        private void saveImages(ItemModel itemModel, ICollection <IFormFile> files)
        {
            foreach (var file in files)
            {
                if (file.Length > 0)
                {
                    var savedImage = new SavedImage();
                    savedImage.ContentType = file.ContentType;
                    savedImage.FileName    = file.Name;
                    //var memStream = new MemoryStream();
                    using (var memStream = new MemoryStream())
                    {
                        file.CopyTo(memStream);
                        savedImage.Content = memStream.ToArray();
                    }

                    itemModel.Image.Add(savedImage);
                }
            }
        }
Example #8
0
        private void SaveImageMetadata(ImagePostRequest request, CloudBlockBlob blockBlob)
        {
            var savedImage = new SavedImage();

            savedImage.UserId      = request.UserId;
            savedImage.Description = request.Description;
            savedImage.StorageUrl  = blockBlob.Uri.ToString();
            savedImage.Tags        = new List <SavedImageTag>();

            foreach (var tag in request.Tags)
            {
                savedImage.Tags.Add(new SavedImageTag()
                {
                    Tag = tag
                });
            }

            _context.Add(savedImage);
            _context.SaveChanges();
        }
        public List <SavedImage> SaveFiles(string projectCode, string internalPath, string imageSize, HttpPostedFileBase file, bool newFile)
        {
            try
            {
                var inputFileName      = Path.GetFileNameWithoutExtension(file.FileName);
                var inputFileExtension = Path.GetExtension(file.FileName);

                //for clean url path, if someone enter \, replaces double \\, triple need two calls to replace
                internalPath = internalPath.Replace("\\", "/").Replace("//", "/").Replace("//", "/");

                var projectDir = Path.Combine(AppSettings.MediaPath, projectCode);
                var projectWeb = Url.Combine(AppSettings.MediaUrl, projectCode);

                var serverDir = Path.Combine(projectDir, internalPath);
                Directory.CreateDirectory(serverDir);
                var serverSavePath = Path.Combine(serverDir, inputFileName + inputFileExtension);

                if (newFile)
                {
                    inputFileName  = CheckFileExist(inputFileName, inputFileExtension, serverDir, 0);
                    serverSavePath = Path.Combine(serverDir, inputFileName + inputFileExtension);
                }

                file.SaveAs(serverSavePath);

                List <SavedImage> files = new List <SavedImage>();
                if (!string.IsNullOrEmpty(imageSize))
                {
                    var sizes = imageSize.ToLower().Split(',');

                    foreach (var sizeXY in sizes)
                    {
                        var subDir = Path.Combine(projectDir, "_" + sizeXY, internalPath);
                        var subWeb = Url.Combine(projectWeb, "_" + sizeXY, internalPath);
                        var size   = sizeXY.Split('x');
                        if (size.Length == 2)
                        {
                            int.TryParse(size[0], out int x);
                            int.TryParse(size[1], out int y);
                            if (x > 0 && y > 0)
                            {
                                ResizeSettings resizeSetting = new ResizeSettings
                                {
                                    Width        = x,
                                    Height       = y,
                                    Format       = "png",
                                    Mode         = FitMode.Pad,
                                    PaddingColor = Color.White,
                                };

                                Directory.CreateDirectory(subDir);
                                var subFile = Path.Combine(subDir, inputFileName + ".png");
                                ImageBuilder.Current.Build(serverSavePath, subFile, resizeSetting);
                                var saved = new SavedImage();
                                saved.Name = inputFileName + ".png";
                                saved.Size = sizeXY;
                                saved.Url  = Url.Combine(subWeb, inputFileName + ".png");
                                files.Add(saved);
                            }
                        }
                    }
                }
                return(files);
            }
            catch (System.Exception e)
            {
                var saved = new SavedImage();
                saved.Name = "ERROR";
                saved.Size = e.Message;
                saved.Url  = AppSettings.WebSite;
                return(new List <SavedImage>()
                {
                    saved
                });
            }
        }
Example #10
0
        public async Task SaveImage(SavedImage image)
        {
            _context.Add(image);

            await this.SaveAsync();
        }