Source file thing_intf.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
open! Core_kernel
module type S = sig
type t [@@deriving sexp, bin_io]
module Id : Id36.S
include Json_object.S_with_fields with type t := t
include Json_object.S_with_kind with type t := t
val id : t -> Id.t
end
module type Thing = sig
module type S = S
and User : sig
include S
val name : t -> Username.t
val creation_time : t -> Time_ns.t
val link_karma : t -> int
val awarder_karma : t -> int
val awardee_karma : t -> int
val total_karma : t -> int
val subreddit : t -> Subreddit.t
end
and Link : sig
include S
val title : t -> string
val author : t -> Username.t option
val url : t -> Uri.t option
val permalink : t -> Uri.t
val domain : t -> string
val subreddit : t -> Subreddit_name.t
val is_stickied : t -> bool
val creation_time : t -> Time_ns.t
val score : t -> int
val moderator_reports : t -> Moderator_report.t list
end
and Message : sig
include S
val author : t -> Username.t option
end
and Subreddit : sig
include S
val name : t -> Subreddit_name.t
val title : t -> string
val description : t -> string
val subscribers : t -> int
val active_users : t -> int
val creation_time : t -> Time_ns.t
end
and Award : sig
include S
end
and Modmail_conversation : sig
include S
end
module Fullname : sig
type t =
[ `Comment of Comment.Id.t
| `User of User.Id.t
| `Link of Link.Id.t
| `Message of Message.Id.t
| `Subreddit of Subreddit.Id.t
| `Award of Award.Id.t
| `More_comments of More_comments.Id.t
| `Modmail_conversation of Modmail_conversation.Id.t
]
[@@deriving sexp]
include Identifiable.S with type t := t
val to_string : [< t ] -> string
val of_string : string -> [> t ]
end
module Poly : sig
type t =
[ `Comment of Comment.t
| `User of User.t
| `Link of Link.t
| `Message of Message.t
| `Subreddit of Subreddit.t
| `Award of Award.t
| `More_comments of More_comments.t
| `Modmail_conversation of Modmail_conversation.t
]
[@@deriving sexp]
val of_json : Json.t -> [> t ]
val fullname : [< t ] -> [> Fullname.t ]
end
end