package dream

  1. Overview
  2. Docs

Source file query.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(* This file is part of Dream, released under the MIT license. See LICENSE.md
   for details, or visit https://github.com/aantron/dream.

   Copyright 2021 Anton Bachin *)



(* TODO Long-term, query string handler is likely to become part of the
   router. *)

module Formats = Dream_pure.Formats
module Message = Dream_pure.Message



(* TODO Actually cache the result of parsing the query string. *)
(* let query_variable : (string * string) list Dream.local =
  Dream.new_local
    ~name:"dream.query"
    ~show_value:(fun query ->
      query
      |> List.map (fun (name, value) -> Printf.sprintf "%s=%s" name value)
      |> String.concat ", ") *)

let all_queries request =
  Message.target request
  |> Formats.split_target
  |> snd
  |> Formats.from_form_urlencoded

let query request name =
  List.assoc_opt name (all_queries request)

let queries request name =
  all_queries request
  |> List.fold_left (fun accumulator (name', value) ->
    if name' = name then
      value::accumulator
    else
      accumulator)
    []
  |> List.rev
OCaml

Innovation. Community. Security.