Program.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using Ben.Http;
  3. using Microsoft.Net.Http.Headers;
  4. using Sql = Npgsql.NpgsqlConnection;
  5. var connection = Environment.GetEnvironmentVariable("DB_CONNECTION");
  6. var (server, app) = (new HttpServer("http://+:8080"), new HttpApp());
  7. app.Get("/plaintext", () => "Hello, World!");
  8. app.Get("/json", (req, res) => {
  9. res.Headers.ContentLength = 27;
  10. return res.Json(new Note { message = "Hello, World!" });
  11. });
  12. app.Get("/fortunes", async (req, res) => {
  13. res.Headers[HeaderNames.ContentType] = "text/html; charset=UTF-8";
  14. using Sql db = new(connection);
  15. var model = await db.QueryAsync<(int id, string message)>("SELECT id, message FROM fortune");
  16. model.Add((0, "Additional fortune added at request time."));
  17. model.Sort((x, y) => string.CompareOrdinal(x.message, y.message));
  18. MustacheTemplates.RenderFortunes(model, res.Writer);
  19. });
  20. app.Get("/db", async (req, res) => {
  21. using Sql db = new(connection);
  22. await res.Json(await db.QueryRowAsync<World, int>(
  23. "SELECT id, randomnumber FROM world WHERE id = @id",
  24. (name: "@id", value: ConcurrentRandom.Next(10000) + 1)));
  25. });
  26. await server.RunAsync(app);
  27. struct Note { public string message { get; set; } }
  28. struct World { public int id { get; set; } public int randomnumber { get; set; } }