///WARNING! Need enternet public async Task URLErrorUploadTest() { var cd = Directory.GetCurrentDirectory(); var model = new UploadImageURLModel { URL = @"https://notfoundurl.nf/", Latitude = 0, Longitude = 0, Scale = 17 }; var ret = await MainControllerService.UploadImageFromURL(model, Guid.Empty); Assert.False(File.Exists(cd + "\\images\\101.bmp")); var expected = ("", 404, "Host_Not_found"); Assert.Equal(expected.Item2, ret.Item2); Assert.Equal(expected.Item3, ret.Item3); Assert.Equal(expected.Item1.GetHashCode(), ret.Item1.GetHashCode()); File.Delete(cd + "\\images\\101.bmp"); }
///WARNING! Need enternet public async Task URLUploadTest() { var cd = Directory.GetCurrentDirectory(); var model = new UploadImageURLModel { URL = @"https://www.google.com.ua/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png", Latitude = 0, Longitude = 0, Scale = 17 }; var ret = await MainControllerService.UploadImageFromURL(model, Guid.Empty); Assert.True(File.Exists(cd + "\\images\\101.bmp")); var expected = (new { resultImagePath = "\\images\\101.bmp" }, 200, ""); Assert.Equal(expected.Item2, ret.Item2); Assert.Equal(expected.Item3, ret.Item3); Assert.Equal(expected.Item1.GetHashCode(), ret.Item1.GetHashCode()); File.Delete(cd + "\\images\\101.bmp"); }
public async Task <IActionResult> UploadImageFromURL([FromBody] UploadImageURLModel model) { return(await Upload <UploadImageURLModel>(model)); }
/// <summary> /// Upload image from URL with longitude, lantitude and scale /// </summary> /// <param name="model">Model to upload</param> /// <returns>(result, state, message)</returns> public async Task <(object, int, string)> UploadImageFromURL(UploadImageURLModel model, Guid UserId) { if (!model.IsPreview) { ImageDBModel image = _applicationDBContext.Images.SingleOrDefault(img => img.URL == model.URL); if (image != null) { image.Expires = DateTime.Now + TimeSpan.FromDays(30); image.Latitude = model.Latitude; image.IsPreview = false; image.Longitude = model.Longitude; image.Scale = model.Scale; await _applicationDBContext.SaveChangesAsync(); return(new { resultImagePath = model.URL }, 200, ""); } else { //TODO: errors } } else { var filePath = _fileService.GetNextFilesPath(1, DirectoryType.Upload)[0]; using (var client = new HttpClient()) { try { using (var result = await client.GetAsync(model.URL)) { if (result.IsSuccessStatusCode) { if ((await result.Content.ReadAsStreamAsync()).TryConvertToImage(out Image img)) { img.Save(filePath, System.Drawing.Imaging.ImageFormat.Bmp); string retUrl = filePath.Remove(0, filePath.LastIndexOf("\\images\\")); ImageDBModel image = new ImageDBModel { Cells = null, Expires = DateTime.Now + TimeSpan.FromDays(1), IsPreview = model.IsPreview, Longitude = -1, Latitude = -1, Scale = -1, URL = retUrl }; if (UserId == Guid.Empty) { _applicationDBContext.Images.Add(image); } else { _applicationDBContext.Users.Find(UserId).DownloadedImages.Add(image); } await _applicationDBContext.SaveChangesAsync(); return(new { resultImagePath = retUrl }, 200, ""); } return("", 400, "File_Not_Image"); } } } catch (HttpRequestException) { return("", 404, "Host_Not_found"); } } } return("", 404, "Unavailable_URL"); }