public virtual SillyProxyResponse Handle(SillyProxyRequest input, ILambdaContext lambdaContext)
        {
            try
            {
                if (input == null)
                {
                    throw new SillyException(SillyHttpStatusCode.ServerError, "Request aborted upon delivery.");
                }

                OriginalRequest = input;
                HttpMethod      = StringToHttpMethod(input.httpMethod);
                Path            = input.path;

                ISillyView sillyContent = Dispatch(this);

                if (sillyContent == null)
                {
                    throw new SillyException(SillyHttpStatusCode.NotFound, "The path " + input.path + " does not exist.");
                }

                SillyProxyResponse response = new SillyProxyResponse();
                response.body = sillyContent.Content;

                return(response);
            }
            catch (SillyException sillyEx)
            {
                return(buildErrorResponse(sillyEx));
            }
            catch (Exception Ex)
            {
                return(buildErrorResponse(SillyHttpStatusCode.ServerError, Ex.Message + "\n" + Ex.StackTrace));
            }
        }
        private SillyProxyResponse buildErrorResponse(SillyHttpStatusCode statusCode, string details)
        {
            SillyProxyResponse errorResponse = new SillyProxyResponse(statusCode);

            errorResponse.body  = "<h1>Server ERROR</h1><h3>" + errorResponse.StatusCodeToString() + "</h3>";
            errorResponse.body += "<p>" + details + "</p>";

            return(errorResponse);
        }