public void Start(string prefix)
        {
            lock (_listener)
            {
                if (!_isRunning)
                {
                    _listener.Prefixes.Clear();
                    _listener.Prefixes.Add(prefix);
                    _listener.Start();

                    _listenerThread = new Thread(Listen)
                    {
                        IsBackground = true,
                        Priority     = ThreadPriority.Highest
                    };
                    _listenerThread.Start();
                    _isRunning = true;

                    if (!ImageProcessingController.TryInitializeProcessors())
                    {
                        Dispose();
                    }
                }
            }
        }
        public override async Task <IResponse> Process(IRequest request)
        {
            if (_urlIsValid)
            {
                if (IsValid())
                {
                    var image = ImageProcessingController.ApplyFilter(Image, Filter, Coords);

                    if (image == null)
                    {
                        return(new Response(Context.Response, HttpStatusCode.NoContent));
                    }

                    return(new Response(Context.Response, HttpStatusCode.OK, image));
                }

                return(new Response(Context.Response, HttpStatusCode.NoContent));
            }

            return(new Response(Context.Response, HttpStatusCode.BadRequest));
        }