Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace MyCoolWebServer.Server.Handlers
- {
- using Common;
- using Contracts;
- using Http;
- using Http.Contracts;
- using System;
- public class RequestHandler : IRequestHandler
- {
- private readonly Func<IHttpRequest, IHttpResponse> handlingFunc;
- public RequestHandler(Func<IHttpRequest, IHttpResponse> handlingFunc)
- {
- CoreValidator.ThrowIfNull(handlingFunc, nameof(handlingFunc));
- this.handlingFunc = handlingFunc;
- }
- public IHttpResponse Handle(IHttpContext context)
- {
- string sessionIdToSend = null;
- if (!context.Request.Cookies.ContainsKey(SessionStore.SessionCookieKey))
- {
- var sessionId = Guid.NewGuid().ToString();
- context.Request.Session = SessionStore.Get(sessionId);
- sessionIdToSend = sessionId;
- }
- var response = this.handlingFunc(context.Request);
- if (sessionIdToSend != null)
- {
- response.Headers.Add(
- HttpHeader.SetCookie,
- $"{SessionStore.SessionCookieKey}={sessionIdToSend}; HttpOnly; path=/");
- }
- if (!response.Headers.ContainsKey(HttpHeader.ContentType))
- {
- response.Headers.Add(HttpHeader.ContentType, "text/plain");
- }
- foreach (var cookie in response.Cookies)
- {
- response.Headers.Add(HttpHeader.SetCookie, cookie.ToString());
- }
- return response;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment