diff options
Diffstat (limited to 'lib/listenbrainz_util.ml')
-rw-r--r-- | lib/listenbrainz_util.ml | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/lib/listenbrainz_util.ml b/lib/listenbrainz_util.ml index 35a7af8..5056c09 100644 --- a/lib/listenbrainz_util.ml +++ b/lib/listenbrainz_util.ml @@ -1,9 +1,32 @@ open Listenbrainz_t -let validate_submission s = +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_response r = +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 |