Source file subreddit_rules.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
43
44
open! Core_kernel
include Json_object.Utils
module Rule = struct
include Json_object.Utils
module Kind = struct
type t =
| Link
| All
[@@deriving sexp]
let of_string string =
match string with
| "link" -> Link
| "comment" -> Comment
| "all" -> All
| _ ->
raise_s
[%message "Unrecognized [Subreddit_rules.Rule.Kind.t] string" (string : string)]
;;
end
let kind = required_field "kind" (string >> Kind.of_string)
let description t markup =
let field =
match markup with
| `markdown -> "description"
| `HTML -> "description_html"
in
required_field field string t
;;
let short_name = required_field "short_name" string
let report_reason = required_field "violation_reason" string
let creation_time = required_field "created_utc" time
let priority = required_field "priority" int
end
let subreddit_rules = required_field "rules" (Json.get_list Rule.of_json)
let site_rules = required_field "site_rules" ident
let site_rules_flow = required_field "site_rules_flow" ident