aboutsummaryrefslogtreecommitdiff
path: root/lib/listenbrainz_util.ml
blob: 5056c0933d3e9f2f1138dbad27744ae476ca52df (plain) (blame)
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
open Listenbrainz_t

let uuid_v4_re =
  (* UUIDs are 8-4-4-4-12 hex digits.
     * The third block of version 4 UUIDS starts with a 4. *)
  let four_hex = "[0-9a-f][0-9a-f][0-9a-f][0-9a-f]"
  in Str.regexp_case_fold ("^" ^ four_hex ^ four_hex
                           ^ "-" ^ four_hex
                           ^ "-4[0-9a-f][0-9a-f][0-9a-f]"
                           ^ "-" ^ four_hex
                           ^ "-" ^ four_hex ^ four_hex ^ four_hex ^ "$")
let tm_unwrap tm =
  let (f, _) = Unix.mktime tm in f

let validate_mbid mbid = Str.string_match uuid_v4_re mbid 0

let validate_post_submit_listens s =
  match s.listen_type with
  | `Single -> List.length s.payload = 1
  | _ -> true

let validate_get_validate_token r =
  r.code = 200 || r.code = 400

let validate_get_user_playing_now r =
  match r.listens with
  | [] -> true
  | [l] -> l.listened_at = None
  | _ -> false

let validate_get_user_listens r =
  List.length r.listens = r.count