Пример #1
0
        public Task <DowndloadImageResponse> DownloadImage(DownloadImageRequest request)
        {
            Stream stream = File.OpenRead("moon.jpg");

            return(Task.FromResult(new DowndloadImageResponse
            {
                FileName = "moon.jpg",
                ContentType = "image/jpg",
                Image = stream
            }));
        }
Пример #2
0
        public async Task <IActionResult> DownloadImage([FromQuery] DownloadImageRequest __request)
        {
            var result = await _service.DownloadImage(__request);

            if (Request.Headers.ContainsKey("Accept") &&
                System.Net.Http.Headers.MediaTypeHeaderValue.TryParse(Request.Headers["Accept"], out var mimeType) && mimeType?.MediaType == "application/x-cybtans")
            {
                return(new ObjectResult(result));
            }
            return(new FileStreamResult(result.Image, result.ContentType)
            {
                FileDownloadName = result.FileName
            });
        }
Пример #3
0
        /// <summary>
        /// Downloads the image.
        /// </summary>
        /// <param name="request">The download image request.</param>
        /// <returns>The <see cref="Task"/> containing the API response with image data.</returns>
        public virtual Task <ApiResponse <byte[]> > DownloadAsync(DownloadImageRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (request.Image == null)
            {
                throw new ApiException(400, $"Parameter '{nameof(request.Image)}' is missed.");
            }

            var downloadHref   = request.Image.GetDownloadHref(request.ImageType);
            var requestContext = PrepareRequestContext(path: downloadHref);

            return(CallAsync <byte[]>(requestContext));
        }
Пример #4
0
        public async Task <FileStreamResult> DownloadImageAsync(DownloadImageRequest request)
        {
            try
            {
                ImageLocationParam param = new ImageLocationParam()
                {
                    BucketName = request.BucketName,
                    ImageName  = request.ImageName
                };

                GetImageResult result = await _minioRepository.GetImageByteAsync(param);

                return(new FileStreamResult(new MemoryStream(result.ImageData.GetAllBytes()), "image/jpeg"));
            }
            catch (Exception exception)
            {
                //SentrySdk.CaptureException(exception);
                throw;
            }
        }
Пример #5
0
        public async Task DownloadImageAsync_Test()
        {
            SaveImageByUrlRequest saveRequest = new SaveImageByUrlRequest()
            {
                ImageUrl = "https://www.baidu.com/img/bd_logo1.png?where=super"
            };

            SaveImageResponse saveResponse = await _imageAppService.SaveImageByUrlAsync(saveRequest);

            DownloadImageRequest downloadRequest = new DownloadImageRequest()
            {
                BucketName = saveResponse.BucketName,
                ImageName  = saveResponse.ImageName,
                ImageType  = "png"
            };

            FileStreamResult getResponse = await _imageAppService.DownloadImageAsync(downloadRequest);

            getResponse.FileStream.Length.ShouldBe(7877);
        }
Пример #6
0
        public void AddTestDefinitions()
        {
            #region CustomerService

            FieldAsync <GetAllCustomerResponseGraphType>("customers",
                                                         description: "Returns a collection of CustomerDto",
                                                         arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Filter"
                },
                new QueryArgument <StringGraphType>()
                {
                    Name = "Sort"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Skip"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Take"
                },
            },
                                                         resolve: async context =>
            {
                var httpContext          = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                var authorizationService = context.RequestServices.GetRequiredService <IAuthorizationService>();
                var authorizationResult  = await authorizationService.AuthorizeAsync(httpContext.User, "AdminUser");
                if (!authorizationResult.Succeeded)
                {
                    throw new UnauthorizedAccessException("Policy Authorization Required");
                }

                var request    = new GetAllRequest();
                request.Filter = context.GetArgument <string>("filter", default(string));
                request.Sort   = context.GetArgument <string>("sort", default(string));
                request.Skip   = context.GetArgument <int?>("skip", default(int?));
                request.Take   = context.GetArgument <int?>("take", default(int?));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.ICustomerServiceClient>();
                return(await service.GetAll(request));
            }
                                                         );

            FieldAsync <CustomerDtoGraphType>("customer",
                                              description: "Returns one CustomerDto by Id",
                                              arguments: new QueryArguments()
            {
                new QueryArgument <GuidGraphType>()
                {
                    Name = "Id"
                },
            },
                                              resolve: async context =>
            {
                var httpContext          = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                var authorizationService = context.RequestServices.GetRequiredService <IAuthorizationService>();
                var authorizationResult  = await authorizationService.AuthorizeAsync(httpContext.User, "AdminUser");
                if (!authorizationResult.Succeeded)
                {
                    throw new UnauthorizedAccessException("Policy Authorization Required");
                }

                var request = new GetCustomerRequest();
                request.Id  = context.GetArgument <Guid>("id", default(Guid));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.ICustomerServiceClient>();
                return(await service.Get(request));
            }
                                              );

            #endregion CustomerService

            #region CustomerEventService

            FieldAsync <GetAllCustomerEventResponseGraphType>("customerEvents",
                                                              description: "Returns a collection of CustomerEventDto",
                                                              arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Filter"
                },
                new QueryArgument <StringGraphType>()
                {
                    Name = "Sort"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Skip"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Take"
                },
            },
                                                              resolve: async context =>
            {
                var httpContext = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                if (!httpContext.User.Identity.IsAuthenticated)
                {
                    throw new UnauthorizedAccessException("Authentication Required");
                }

                var request    = new GetAllRequest();
                request.Filter = context.GetArgument <string>("filter", default(string));
                request.Sort   = context.GetArgument <string>("sort", default(string));
                request.Skip   = context.GetArgument <int?>("skip", default(int?));
                request.Take   = context.GetArgument <int?>("take", default(int?));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.ICustomerEventServiceClient>();
                return(await service.GetAll(request));
            }
                                                              );

            FieldAsync <CustomerEventDtoGraphType>("customerEvent",
                                                   description: "Returns one CustomerEventDto by Id",
                                                   arguments: new QueryArguments()
            {
                new QueryArgument <GuidGraphType>()
                {
                    Name = "Id"
                },
            },
                                                   resolve: async context =>
            {
                var httpContext = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                if (!httpContext.User.Identity.IsAuthenticated)
                {
                    throw new UnauthorizedAccessException("Authentication Required");
                }

                var request = new GetCustomerEventRequest();
                request.Id  = context.GetArgument <Guid>("id", default(Guid));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.ICustomerEventServiceClient>();
                return(await service.Get(request));
            }
                                                   );

            #endregion CustomerEventService

            #region OrderService

            FieldAsync <DowndloadImageResponseGraphType>("OrderService_DownloadImage",
                                                         arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Name"
                },
            },
                                                         resolve: async context =>
            {
                var request  = new DownloadImageRequest();
                request.Name = context.GetArgument <string>("name", default(string));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderServiceClient>();
                return(await service.DownloadImage(request));
            }
                                                         );

            FieldAsync <GetAllNamesResponseGraphType>("ordernames",
                                                      resolve: async context =>
            {
                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderServiceClient>();
                return(await service.GetAllNames());
            }
                                                      );

            FieldAsync <OrderNamesDtoGraphType>("OrderService_OrderName",
                                                arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Id"
                },
            },
                                                resolve: async context =>
            {
                var request = new GetOrderNameRequest();
                request.Id  = context.GetArgument <string>("id", default(string));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderServiceClient>();
                return(await service.GetOrderName(request));
            }
                                                );

            FieldAsync <GetAllOrderResponseGraphType>("orders",
                                                      description: "Returns a collection of OrderDto",
                                                      arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Filter"
                },
                new QueryArgument <StringGraphType>()
                {
                    Name = "Sort"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Skip"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Take"
                },
            },
                                                      resolve: async context =>
            {
                var request    = new GetAllRequest();
                request.Filter = context.GetArgument <string>("filter", default(string));
                request.Sort   = context.GetArgument <string>("sort", default(string));
                request.Skip   = context.GetArgument <int?>("skip", default(int?));
                request.Take   = context.GetArgument <int?>("take", default(int?));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderServiceClient>();
                return(await service.GetAll(request));
            }
                                                      );

            FieldAsync <OrderDtoGraphType>("order",
                                           description: "Returns one OrderDto by Id",
                                           arguments: new QueryArguments()
            {
                new QueryArgument <GuidGraphType>()
                {
                    Name = "Id"
                },
            },
                                           resolve: async context =>
            {
                var request = new GetOrderRequest();
                request.Id  = context.GetArgument <Guid>("id", default(Guid));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderServiceClient>();
                return(await service.Get(request));
            }
                                           );

            #endregion OrderService

            #region OrderStateService

            FieldAsync <GetAllOrderStateResponseGraphType>("orderStates",
                                                           description: "Returns a collection of OrderStateDto",
                                                           arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Filter"
                },
                new QueryArgument <StringGraphType>()
                {
                    Name = "Sort"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Skip"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Take"
                },
            },
                                                           resolve: async context =>
            {
                var httpContext = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                if (!httpContext.User.IsInRole("admin"))
                {
                    throw new UnauthorizedAccessException("Roles Authorization Required");
                }

                var request    = new GetAllRequest();
                request.Filter = context.GetArgument <string>("filter", default(string));
                request.Sort   = context.GetArgument <string>("sort", default(string));
                request.Skip   = context.GetArgument <int?>("skip", default(int?));
                request.Take   = context.GetArgument <int?>("take", default(int?));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderStateServiceClient>();
                return(await service.GetAll(request));
            }
                                                           );

            FieldAsync <OrderStateDtoGraphType>("orderState",
                                                description: "Returns one OrderStateDto by Id",
                                                arguments: new QueryArguments()
            {
                new QueryArgument <IntGraphType>()
                {
                    Name = "Id"
                },
            },
                                                resolve: async context =>
            {
                var httpContext = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                if (!httpContext.User.IsInRole("admin"))
                {
                    throw new UnauthorizedAccessException("Roles Authorization Required");
                }

                var request = new GetOrderStateRequest();
                request.Id  = context.GetArgument <int>("id", default(int));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IOrderStateServiceClient>();
                return(await service.Get(request));
            }
                                                );

            #endregion OrderStateService

            #region ReadOnlyEntityService

            FieldAsync <GetAllReadOnlyEntityResponseGraphType>("readOnlyEntities",
                                                               description: "Returns a collection of ReadOnlyEntityDto",
                                                               arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Filter"
                },
                new QueryArgument <StringGraphType>()
                {
                    Name = "Sort"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Skip"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Take"
                },
            },
                                                               resolve: async context =>
            {
                var httpContext = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                if (!httpContext.User.IsInRole("admin"))
                {
                    throw new UnauthorizedAccessException("Roles Authorization Required");
                }

                var request    = new GetAllRequest();
                request.Filter = context.GetArgument <string>("filter", default(string));
                request.Sort   = context.GetArgument <string>("sort", default(string));
                request.Skip   = context.GetArgument <int?>("skip", default(int?));
                request.Take   = context.GetArgument <int?>("take", default(int?));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IReadOnlyEntityServiceClient>();
                return(await service.GetAll(request));
            }
                                                               );

            FieldAsync <ReadOnlyEntityDtoGraphType>("readOnlyEntity",
                                                    description: "Returns one ReadOnlyEntityDto by Id",
                                                    arguments: new QueryArguments()
            {
                new QueryArgument <IntGraphType>()
                {
                    Name = "Id"
                },
            },
                                                    resolve: async context =>
            {
                var httpContext = context.RequestServices.GetRequiredService <IHttpContextAccessor>().HttpContext;
                if (!httpContext.User.IsInRole("admin"))
                {
                    throw new UnauthorizedAccessException("Roles Authorization Required");
                }

                var request = new GetReadOnlyEntityRequest();
                request.Id  = context.GetArgument <int>("id", default(int));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.IReadOnlyEntityServiceClient>();
                return(await service.Get(request));
            }
                                                    );

            #endregion ReadOnlyEntityService

            #region SoftDeleteOrderService

            FieldAsync <GetAllSoftDeleteOrderResponseGraphType>("softDeleteOrders",
                                                                description: "Returns a collection of SoftDeleteOrderDto",
                                                                arguments: new QueryArguments()
            {
                new QueryArgument <StringGraphType>()
                {
                    Name = "Filter"
                },
                new QueryArgument <StringGraphType>()
                {
                    Name = "Sort"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Skip"
                },
                new QueryArgument <IntGraphType>()
                {
                    Name = "Take"
                },
            },
                                                                resolve: async context =>
            {
                var request    = new GetAllRequest();
                request.Filter = context.GetArgument <string>("filter", default(string));
                request.Sort   = context.GetArgument <string>("sort", default(string));
                request.Skip   = context.GetArgument <int?>("skip", default(int?));
                request.Take   = context.GetArgument <int?>("take", default(int?));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.ISoftDeleteOrderServiceClient>();
                return(await service.GetAll(request));
            }
                                                                );

            FieldAsync <SoftDeleteOrderDtoGraphType>("softDeleteOrder",
                                                     description: "Returns one SoftDeleteOrderDto by Id",
                                                     arguments: new QueryArguments()
            {
                new QueryArgument <GuidGraphType>()
                {
                    Name = "Id"
                },
            },
                                                     resolve: async context =>
            {
                var request = new GetSoftDeleteOrderRequest();
                request.Id  = context.GetArgument <Guid>("id", default(Guid));

                var service = context.RequestServices.GetRequiredService <global::Cybtans.Tests.Clients.ISoftDeleteOrderServiceClient>();
                return(await service.Get(request));
            }
                                                     );

            #endregion SoftDeleteOrderService
        }
Пример #7
0
        public DownloadImageResponse DownloadImage(DownloadImageRequest request)
        {
            string imageUrl          = string.Empty;
            string storagePath       = string.Empty;
            var    extension         = Path.GetExtension(request.ImageInputUrl) == "" ? ".JPEG" : Path.GetExtension(request.ImageInputUrl);
            string storageName       = Guid.NewGuid().ToString() + extension;
            string fileOriginalName  = Path.GetFileName(request.ImageInputUrl);
            var    imagePhysicalPath = ConfigurationManager.AppSettings["IMAGE_PHYSICAL_PATH"].ToString();

            DownloadImageResponse downloadResponse = new DownloadImageResponse();
            ImageViewModel        imageViewModel   = new ImageViewModel();

            //Checking for EditMode
            if (!System.IO.File.Exists(imagePhysicalPath + "/" + request.ImageInputUrl))
            {
                try
                {
                    WebRequest req = WebRequest.Create(request.ImageInputUrl);
                    req.Timeout = 10000;
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                                           | SecurityProtocolType.Tls11
                                                           | SecurityProtocolType.Tls12
                                                           | SecurityProtocolType.Ssl3;

                    WebResponse response = req.GetResponse();

                    Stream stream = response.GetResponseStream();
                    Image  Image  = Image.FromStream(stream);
                    if (!System.IO.Directory.Exists(imagePhysicalPath + "/" + request.AccountId))
                    {
                        Directory.CreateDirectory(imagePhysicalPath + "/" + request.AccountId);
                    }
                    switch (request.ImgCategory)
                    {
                    case ImageCategory.ContactProfile:
                        storagePath = request.AccountId + "/" + "pi";
                        imageViewModel.FriendlyName = fileOriginalName;
                        break;

                    case ImageCategory.Campaigns:
                        storagePath = request.AccountId + "/" + "ci";
                        break;

                    default:
                        break;
                    }
                    imagePhysicalPath = imagePhysicalPath + "/" + storagePath;
                    if (!System.IO.Directory.Exists(imagePhysicalPath))
                    {
                        System.IO.Directory.CreateDirectory(imagePhysicalPath);
                    }
                    imagePhysicalPath = Path.Combine(imagePhysicalPath, storageName);
                    if (!System.IO.File.Exists(imagePhysicalPath))
                    {
                        Image.Save(imagePhysicalPath, ImageFormat.Jpeg);
                    }
                    imageUrl = storageName;
                    imageViewModel.ImageContent    = imageUrl;
                    imageViewModel.OriginalName    = fileOriginalName;
                    imageViewModel.ImageType       = Path.GetExtension(request.ImageInputUrl) == "" ? ".JPEG" : Path.GetExtension(request.ImageInputUrl);
                    imageViewModel.StorageName     = storageName;
                    imageViewModel.ImageCategoryID = request.ImgCategory;
                    imageViewModel.AccountID       = Convert.ToInt16(request.AccountId);
                }
                catch (Exception ex)
                {
                    Logger.Current.Error("An error occured while downloading image from specified path : " + request.ImageInputUrl + " AccountID : " + request.AccountId, ex);
                }
            }

            else
            {
                imageUrl = request.ImageInputUrl;
            }
            downloadResponse.ImageViewModel = imageViewModel;
            return(downloadResponse);
        }