aboutsummaryrefslogtreecommitdiff
path: root/lib/listenbrainz_util.ml
blob: f0b90dde1897dc73b7f8da4b27efd003a2fd4498 (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
33
34
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_isrc isrc = Str.string_match uuid_v4_re isrc 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 : get_user_playing_now) =
  match r.payload.listens with
  | [] -> true
  | [l] -> l.listened_at = None
  | _ -> false

let validate_get_user_listens (r : get_user_listens) =
  List.length r.payload.listens = r.payload.count