Ejemplo n.º 1
0
        public IActionResult MultipleOperation([FromBody] MultiOperation inputs)
        {
            if (inputs == null || inputs.Imagestream == null || inputs.MultiOperationParam == null)
            {
                return(StatusCode(400, new EmptyInputError()
                {
                }));
            }
            ImageProHandler.LoadImage(inputs.Imagestream);
            var response = ImageProHandler.MultipleOperation(inputs);

            ImageProHandler.outStream.Close();
            ImageProHandler.inStream.Close();
            if (response.Message == OpMessage.InvalidOperation)
            {
                return(StatusCode(405, new InvalidOperationError()
                {
                }));
            }
            else if (response.Message == OpMessage.InvalidInputParameter)
            {
                return(StatusCode(409, new InvalidInputParameterError()
                {
                }));
            }
            return(Ok(response));
        }
Ejemplo n.º 2
0
        private IOperation GetOperationByName(string name)
        {
            IOperation operation = null;

            switch (name)
            {
            case "+":
                operation = new AddOperation();
                break;

            case "-":
                operation = new SubOperation();
                break;

            case "*":
                operation = new MultiOperation();
                break;

            case "/":
                operation = new DivisionOperation();
                break;

            case "^":
                operation = new ExpOperation();
                break;

            default:
                break;
            }

            return(operation);
        }
Ejemplo n.º 3
0
        static public T InvokeAllSerial <T, P2, P3, P4, P5, P6, P7, P8>(this MultiOperation <T, T> item, T input, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
        {
            if (item != null)
            {
                return(item.GetInvocationList()
                       .Convert <MultiOperation <T, T, P2, P3, P4, P5, P6, P7, P8> >()
                       .Apply(input, (i, o) => o(i, p2, p3, p4, p5, p6, p7, p8)));
            }

            return(input);
        }
Ejemplo n.º 4
0
        static public T InvokeAllSerial <T>(this MultiOperation <T, T> item, T input)
        {
            if (item != null)
            {
                return(item.GetInvocationList()
                       .Convert <MultiOperation <T, T> >()
                       .Apply(input, (i, o) => o(i)));
            }

            return(input);
        }
Ejemplo n.º 5
0
        static public T InvokeAllSerial <T, P2, P3, P4>(this MultiOperation <T, T> item, T input, P2 p2, P3 p3, P4 p4)
        {
            if (item != null)
            {
                return(item.GetInvocationList()
                       .Convert <MultiOperation <T, T, P2, P3, P4> >()
                       .Apply(input, (i, o) => o(i, p2, p3, p4)));
            }

            return(input);
        }
Ejemplo n.º 6
0
        static public IEnumerable <T> InvokeAllParallel <T, P1, P2, P3, P4, P5, P6>(this MultiOperation <T, P1> item, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
        {
            if (item != null)
            {
                return(item.GetInvocationList()
                       .Convert <MultiOperation <T, P1, P2, P3, P4, P5, P6> >()
                       .Convert(o => o(p1, p2, p3, p4, p5, p6)));
            }

            return(Empty.IEnumerable <T>());
        }
Ejemplo n.º 7
0
        static public IEnumerable <T> InvokeAllParallel <T>(this MultiOperation <T> item)
        {
            if (item != null)
            {
                return(item.GetInvocationList()
                       .Convert <MultiOperation <T> >()
                       .Convert(o => o()));
            }

            return(Empty.IEnumerable <T>());
        }
Ejemplo n.º 8
0
        public ImageResult MultipleOperation(MultiOperation inputs)
        {
            var result = new ImageResult
            {
                Message = OpMessage.Success
            };
            var param        = inputs.MultiOperationParam;
            var flipOps      = param.FlipParam;
            var gsOps        = param.GreyScaleParam;
            var resizeOps    = param.ResizeParam;
            var rotateOps    = param.RotateParam;
            var thumbnailOps = param.ThumbnailParam;

            var allOps = flipOps.Count() + gsOps.Count() + resizeOps.Count() + rotateOps.Count() + thumbnailOps.Count();

            if (allOps != param.MultiOperationSequence.Count() || param.MultiOperationSequence.Count() == 0)
            {
                result.Message = OpMessage.InvalidInputParameter;
                return(result);
            }
            try
            {
                param.MultiOperationSequence.ForEach(operation => {
                    switch (operation)
                    {
                    case Operations.FLIP:
                        var flipParam = flipOps[0];
                        flipOps.Remove(flipParam);
                        var fp = new FlipImage
                        {
                            Param = flipParam,
                        };
                        FlipImage(fp);
                        break;

                    case Operations.ROTATE:
                        var rotateParam = rotateOps[0];
                        rotateOps.Remove(rotateParam);
                        var rop = new RotateImage
                        {
                            Param = rotateParam,
                        };
                        RotateImage(rop);
                        break;

                    case Operations.RESIZE:
                        var resizeParam = resizeOps[0];
                        resizeOps.Remove(resizeParam);
                        var rep = new ResizeImage
                        {
                            Param = resizeParam,
                        };
                        ResizeImage(rep);
                        break;

                    case Operations.GRAYSCALE:
                        var gsParam = gsOps[0];
                        gsOps.Remove(gsParam);
                        GrayScaleImage();
                        break;

                    case Operations.THUMBNAIL:
                        var tp = thumbnailOps[0];
                        thumbnailOps.Remove(tp);
                        ThumbnailImage();
                        break;

                    default:
                        throw new Exception();
                    }
                    imageFactory.Load(outStream);
                });
            }
            catch (Exception ex)
            {
                result.Message = OpMessage.InvalidOperation;
                return(result);
            }
            result.Result = outStream.ToArray();
            return(result);
        }