aboutsummaryrefslogtreecommitdiff
path: root/lib/http_date.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/http_date.ml')
-rw-r--r--lib/http_date.ml37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/http_date.ml b/lib/http_date.ml
new file mode 100644
index 0000000..38bda02
--- /dev/null
+++ b/lib/http_date.ml
@@ -0,0 +1,37 @@
+(* Taken from https://github.com/gopiandcode/ocamlot *)
+let parse_date = Parser.parse_date
+let parse_date_exn = Parser.parse_date_exn
+
+let to_utc_string t =
+ let www =
+ Ptime.weekday t |> function
+ | `Sat -> "Sat"
+ | `Fri -> "Fri"
+ | `Mon -> "Mon"
+ | `Wed -> "Wed"
+ | `Sun -> "Sun"
+ | `Tue -> "Tue"
+ | `Thu -> "Thu"
+ in
+ let (yyyy, mmm, dd), ((hh, mm, ss), _) = Ptime.to_date_time t in
+ let mmm =
+ match mmm with
+ | 1 -> "Jan"
+ | 2 -> "Feb"
+ | 3 -> "Mar"
+ | 4 -> "Apr"
+ | 5 -> "May"
+ | 6 -> "Jun"
+ | 7 -> "Jul"
+ | 8 -> "Aug"
+ | 9 -> "Sep"
+ | 10 -> "Oct"
+ | 11 -> "Nov"
+ | 12 -> "Dec"
+ | _ -> assert false
+ in
+ Printf.sprintf "%s, %02d %s %04d %02d:%02d:%02d GMT" www dd mmm yyyy hh mm ss
+
+let%test "rev" =
+ List.equal Int.equal (List.rev [ 3; 2; 1 ]) [ 3; 2; 1 ]
+