Esempio n. 1
0
 internal RequestContext(HttpListenerContext originalContext,
                         TemplateProvider templateProvider,
                         DbConnectionFactory dbConnectionFactory)
 {
     _originalContext     = originalContext;
     Request              = new HttpRequest(_originalContext.Request);
     _templateProvider    = templateProvider;
     Response             = new HttpResponse(_originalContext.Response, this, templateProvider);
     _dbConnectionFactory = dbConnectionFactory;
 }
Esempio n. 2
0
        private static void ProcessRequest(HttpListener listener,
                                           TemplateProvider templateProvider,
                                           Router router,
                                           Options options,
                                           DbConnectionFactory dbConnectionFactory)
        {
            HttpListenerContext  originalContext  = listener.GetContext();
            HttpListenerResponse originalResponse = originalContext.Response;


            RequestContext context = new RequestContext(originalContext, templateProvider, dbConnectionFactory);
            Stream         output  = originalResponse.OutputStream;

            try
            {
                Before(context);
                router.RouteRequestToMethod(context);

                SendResponse(context, originalResponse, output);
            }
            catch (Exception e)
            {
                originalResponse.StatusCode = 500;

                if (options.DisplayExceptions)
                {
                    byte[] buffer = Encoding.UTF8.GetBytes(e.ToString());
                    originalResponse.ContentLength64 = buffer.Length;
                    output.Write(buffer, 0, buffer.Length);
                }

                Logger.Error(e);
            }
            finally
            {
                context.Dispose();
                output.Close();
            }
        }
Esempio n. 3
0
        private static int Main(string[] args)
        {
            string configFilePath = "config.yml";

            if (args.Length >= 1)
            {
                configFilePath = args[0];
            }

            Options options = ReadOptionsFile(configFilePath);

            Console.WriteLine(options);

            Console.WriteLine("Initializing TemplateProvider...");
            TemplateProvider templateProvider = new TemplateProvider(
                options.TemplatesDirectory,
                options.ReloadTemplates
                );

            Console.WriteLine("Initialized TemplateProvider.");

            DbConnectionFactory dbConnectionFactory = new DbConnectionFactory(options.PostgresConnectionString);
            HttpListener        listener            = new HttpListener();

            listener.Prefixes.Add("http://*:8080/");
            listener.Start();
            Console.WriteLine("Server started.");

            Router router = new Router();

            router.AddGetRoute(@"^/blog(\?.*|$)", BlogController.Get);
            router.AddPostRoute(@"^/blog(\?.*|$)", BlogController.Post);

            while (true)
            {
                ProcessRequest(listener, templateProvider, router, options, dbConnectionFactory);
            }
        }
Esempio n. 4
0
 public TemplateLoader(TemplateProvider templateProvider)
 {
     _templateProvider = templateProvider;
 }
Esempio n. 5
0
 public HttpResponse(HttpListenerResponse response, RequestContext context, TemplateProvider templateProvider)
 {
     _response         = response;
     _templateProvider = templateProvider;
     _context          = context;
 }