page_controller.ex 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. defmodule Hello.PageController do
  2. use Hello.Web, :controller
  3. alias Hello.World
  4. alias Hello.Fortune
  5. def index(conn, _params) do
  6. conn
  7. |> merge_resp_headers(%{"content-type" => "application/json"})
  8. |> json(%{"TE Benchmarks\n" => "Started"})
  9. end
  10. # avoid namespace collision
  11. def _json(conn, _params) do
  12. conn
  13. |> merge_resp_headers(%{"content-type" => "application/json"})
  14. |> json(%{message: "Hello, world!"})
  15. end
  16. def db(conn, _params) do
  17. conn
  18. |> merge_resp_headers(%{"content-type" => "application/json"})
  19. |> json(Repo.get(World, :rand.uniform(10000)))
  20. end
  21. def queries(conn, params) do
  22. q = try do
  23. case String.to_integer(params["queries"]) do
  24. x when x < 1 -> 1
  25. x when x > 500 -> 500
  26. x -> x
  27. end
  28. rescue
  29. ArgumentError -> 1
  30. end
  31. conn
  32. |> merge_resp_headers(%{"content-type" => "application/json"})
  33. |> json(Enum.map(1..q, fn _ -> Repo.get(World, :rand.uniform(10000)) end))
  34. end
  35. def fortunes(conn, _params) do
  36. additional_fortune = %Fortune{
  37. id: 0,
  38. message: "Additional fortune added at request time."
  39. }
  40. fortunes = [additional_fortune | Repo.all(Fortune)]
  41. render conn, "fortunes.html", fortunes: Enum.sort(fortunes, fn f1, f2 -> f1.message < f2.message end)
  42. end
  43. def updates(conn, params) do
  44. q = try do
  45. case String.to_integer(params["queries"]) do
  46. x when x < 1 -> 1
  47. x when x > 500 -> 500
  48. x -> x
  49. end
  50. rescue
  51. ArgumentError -> 1
  52. end
  53. conn
  54. |> merge_resp_headers(%{"content-type" => "application/json"})
  55. |> json(Enum.map(1..q, fn _ ->
  56. w = Repo.get(World, :rand.uniform(10000))
  57. changeset = World.changeset(w, %{randomNumber: :rand.uniform(10000)})
  58. Repo.update(changeset)
  59. w end))
  60. end
  61. def plaintext(conn, _params) do
  62. conn
  63. |> merge_resp_headers(%{"content-type" => "text/plain"})
  64. |> text("Hello, world!")
  65. end
  66. end