private void AddHeaderToRequest(HttpRq r, string headerLine)
    {
        var hp = headerLine.Split(new[] { ':' }, 2);
        var hn = hp[0].Trim();
        var hv = hp.Length == 2 ? hp[1].Trim() : string.Empty;

        r.AddHeader(hn, hv);
    }
 public HttpResponse Handle(HttpRq request)
 {
     str filePath = Environment.CurrentDirectory + "/" + request.Uri;
     if (!this.FileExists("C:\\", filePath, 3))
     {
         return new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotFound, "File not found");
     }
     str fileContents = File.ReadAllText(filePath);
     var response = new HttpResponse(request.ProtocolVersion, HttpStatusCode.OK, fileContents);
     return response;
 }
Пример #3
0
    public HttpResponse Handle(HttpRq request)
    {
        str filePath = Environment.CurrentDirectory + "/" + request.Uri;

        if (!this.FileExists("C:\\", filePath, 3))
        {
            return(new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotFound, "File not found"));
        }
        str fileContents = File.ReadAllText(filePath);
        var response     = new HttpResponse(request.ProtocolVersion, HttpStatusCode.OK, fileContents);

        return(response);
    }
Пример #4
0
    private HttpResponse Process(HttpRq request)
    {
        if (request.Method.ToLower() == "options")
        {
            var routes =
                Assembly.GetEntryAssembly()
                .GetTypes()
                .Where(x => x.Name.EndsWith("Controller") && typeof(Controller).IsAssignableFrom(x))
                .Select(
                    x => new { x.Name, Methods = x.GetMethods().Where(m => m.ReturnType == typeof(IActionResult)) })
                .SelectMany(
                    x =>
                    x.Methods.Select(
                        m =>
                        string.Format("/{0}/{1}/{{parameter}}", x.Name.Replace("Controller", string.Empty), m.Name)))
                .ToList();

            return(new HttpResponse(
                       request.ProtocolVersion,
                       HttpStatusCode.OK,
                       string.Join(Environment.NewLine, routes)));
        }
        else if (new StaticFileHandler().CanHandle(request))
        {
            return(new StaticFileHandler().Handle(request));
        }
        else if (request.ProtocolVersion.Major <= 3)
        {
            HttpResponse response;
            try
            {
                var controller    = CreateController(request);
                var actionInvoker = new NewActionInvoker();
                var actionResult  = actionInvoker.InvokeAction(controller, request.Action);
                response = actionResult.GetResponse();
            }
            catch (HttpNotFound exception)
            {
                response = new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotFound, exception.Message);
            }
            catch (Exception exception)
            {
                response = new HttpResponse(request.ProtocolVersion, HttpStatusCode.InternalServerError, exception.Message);
            }
            return(response);
        }
        else
        {
            return(new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotImplemented, "Request cannot be handled."));
        }
    }
    private HttpResponse Process(HttpRq request)
    {
        if (request.Method.ToLower() == "options")
        {
            var routes =
                Assembly.GetEntryAssembly()
                    .GetTypes()
                    .Where(x => x.Name.EndsWith("Controller") && typeof(Controller).IsAssignableFrom(x))
                    .Select(
                        x => new { x.Name, Methods = x.GetMethods().Where(m => m.ReturnType == typeof(IActionResult)) })
                    .SelectMany(
                        x =>
                        x.Methods.Select(
                            m =>
                            string.Format("/{0}/{1}/{{parameter}}", x.Name.Replace("Controller", string.Empty), m.Name)))
                    .ToList();

            return new HttpResponse(
                request.ProtocolVersion,
                HttpStatusCode.OK,
                string.Join(Environment.NewLine, routes));
        }
        else if (new StaticFileHandler().CanHandle(request))
        {
            return new StaticFileHandler().Handle(request);
        }
        else if (request.ProtocolVersion.Major <= 3)
        {
            HttpResponse response;
            try
            {
                var controller = CreateController(request);
                var actionInvoker = new NewActionInvoker();
                var actionResult = actionInvoker.InvokeAction(controller, request.Action);
                response = actionResult.GetResponse();
            }
            catch (HttpNotFound exception)
            {
                response = new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotFound, exception.Message);
            }
            catch (Exception exception)
            {
                response = new HttpResponse(request.ProtocolVersion, HttpStatusCode.InternalServerError, exception.Message);
            }
            return response;
        }
        else
        {
            return new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotImplemented, "Request cannot be handled.");
        }
    }
Пример #6
0
 public HttpResponse GetResponse(string requestAsString)
 {
     HttpRq request;
     try
     {
         var requestParser = new HttpRq("GET","/","1.1");
         request = requestParser.Parse(requestAsString);
     }
     catch (Exception ex)
     {
         return new HttpResponse(new Version(1, 1), HttpStatusCode.BadRequest, ex.Message);
     }
     var response = this.Process(request);
     return response;
 }
Пример #7
0
 private Controller CreateController(HttpRq request)
 {
     var controllerClassName = request.Action.ControllerName + "Controller";
     var type =
         Assembly.GetEntryAssembly()
             .GetTypes()
             .FirstOrDefault(
                 x => x.Name.ToLower() == controllerClassName.ToLower() && typeof(Controller).IsAssignableFrom(x));
     if (type == null)
     {
         throw new HttpNotFound(
             string.Format("Controller with name {0} not found!", controllerClassName));
     }
     var instance = (Controller)Activator.CreateInstance(type, request);
     return instance;
 }
    private R CreateRequest(string frl)
    {
        var firstRequestLineParts = frl.Split(' ');

        if (firstRequestLineParts.Length != 3)
        {
            throw new HttpNotFound.ParserException(
                      "Invalid format for the first request line. Expected format: [Method] [Uri] HTTP/[Version]");
        }
        var requestObject = new R(
            firstRequestLineParts[0],
            firstRequestLineParts[1],
            firstRequestLineParts[2]);

        return(requestObject);
    }
    public HttpResponse GetResponse(string requestAsString)
    {
        HttpRq request;

        try
        {
            var requestParser = new HttpRq("GET", "/", "1.1");
            request = requestParser.Parse(requestAsString);
        }
        catch (Exception ex)
        {
            return(new HttpResponse(new Version(1, 1), HttpStatusCode.BadRequest, ex.Message));
        }
        var response = this.Process(request);

        return(response);
    }
    private Controller CreateController(HttpRq request)
    {
        var controllerClassName = request.Action.ControllerName + "Controller";
        var type =
            Assembly.GetEntryAssembly()
            .GetTypes()
            .FirstOrDefault(
                x => x.Name.ToLower() == controllerClassName.ToLower() && typeof(Controller).IsAssignableFrom(x));

        if (type == null)
        {
            throw new HttpNotFound(
                      string.Format("Controller with name {0} not found!", controllerClassName));
        }
        var instance = (Controller)Activator.CreateInstance(type, request);

        return(instance);
    }
Пример #11
0
 public ContentActionResult(HttpRq request, object model)
 {
     this.model   = model;
     this.Request = request;
     this
     .
     ResponseHeaders
         =
             new
             List
             <
                 KeyValuePair
                 <
                     string
                     ,
                     string
                 >
             >
             (
             )
         ;
 }
 public JsonActionResult(HttpRq rq, object m)
 {
     model           = m;
     Request         = rq;
     ResponseHeaders = new List <KeyValuePair <string, string> >();
 }
Пример #13
0
 protected Controller(HttpRq r)
 {
     this.Request = r;
 }
Пример #14
0
 public HomeController(HttpRq request)
     : base(request)
 {
 }
Пример #15
0
 public ApiController(HttpRq request) : base(request)
 {
 }
Пример #16
0
 public JsonActionResult(HttpRq rq, object m)
 {
     model = m;
     Request = rq;
     ResponseHeaders = new List<KeyValuePair<string, string>>();
 }
 public JsonActionResultWithCorsWithoutCaching(HttpRq request, object model, string corsSettings)
     : base(request, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair <string, string>("Access-Control-Allow-Origin", corsSettings));
     this.ResponseHeaders.Add(new KeyValuePair <string, string>("Cache-Control", "private, max-age=0, no-cache"));
 }
Пример #18
0
 public JsonActionResultWithCorsWithoutCaching(HttpRq request, object model, string corsSettings)
     : base(request, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair<string, string>("Access-Control-Allow-Origin", corsSettings));
     this.ResponseHeaders.Add(new KeyValuePair<string, string>("Cache-Control", "private, max-age=0, no-cache"));
 }
Пример #19
0
 private void AddHeaderToRequest(R r, string headerLine)
 {
     var hp = headerLine.Split(new[] { ':' }, 2);
     var hn = hp[0].Trim();
     var hv = hp.Length == 2 ? hp[1].Trim() : string.Empty;
     r.AddHeader(hn, hv);
 }
Пример #20
0
    private R CreateRequest(string frl)
    {
        var firstRequestLineParts = frl.Split(' ');
        if (firstRequestLineParts.Length != 3)
        {
            throw new HttpNotFound.ParserException(
                "Invalid format for the first request line. Expected format: [Method] [Uri] HTTP/[Version]");
        }
        var requestObject = new R(
            firstRequestLineParts[0],
            firstRequestLineParts[1],
            firstRequestLineParts[2]);

        return requestObject;
    }
Пример #21
0
 public ContentActionResult(HttpRq request, object model)
 {
     this.model = model;
     this.Request = request;
     this.ResponseHeaders = new List<KeyValuePair<string, string>>();
 }
 public JsonActionResultWithCors(HttpRq request, object model, string corsSettings)
     : base(request, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair <string, string>("Access-Control-Allow-Origin", corsSettings));
 }
 public JsonActionResultWithoutCaching(HttpRq r, object model)
     : base(r, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair <string, string>("Cache-Control", "private, max-age=0, no-cache"));
     throw new Exception();
 }
Пример #24
0
 public bool CanHandle(HttpRq request)
 {
     return request.Uri.LastIndexOf(".", StringComparison.Ordinal)
             > request.Uri.LastIndexOf("/", StringComparison.Ordinal);
 }
Пример #25
0
 public ContentActionResultWithoutCaching(HttpRq request, object model) : base(request, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair <string, string>("Cache-Control", "private, max-age=0, no-cache"));
 }
Пример #26
0
 protected Controller(HttpRq r)
 {
     this.Request = r;
 }
Пример #27
0
 public JsonActionResultWithCors(HttpRq request, object model, string corsSettings)
     : base(request, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair<string, string>("Access-Control-Allow-Origin", corsSettings));
 }
Пример #28
0
 public bool CanHandle(HttpRq request)
 {
     return(request.Uri.LastIndexOf(".", StringComparison.Ordinal)
            > request.Uri.LastIndexOf("/", StringComparison.Ordinal));
 }
Пример #29
0
 public JsonActionResultWithoutCaching(HttpRq r, object model)
     : base(r, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair<string, string>("Cache-Control", "private, max-age=0, no-cache"));
     throw new Exception();
 }
Пример #30
0
 public ApiController(HttpRq request)
     : base(request)
 {
 }
Пример #31
0
 public ContentActionResultWithoutCaching(HttpRq request, object model)
     : base(request, model)
 {
     this.ResponseHeaders.Add(new KeyValuePair<string, string>(CacheControl, Keys));
 }
Пример #32
0
 public HomeController(HttpRq request) : base(request)
 {
 }