diff options
| author | Adelyn Breelove <[email protected]> | 2018-12-13 15:50:37 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2018-12-13 15:50:37 -0700 |
| commit | 179d9598fe62e2966471b312fd438e98ff3a272a (patch) | |
| tree | cbe69315ccd51dc69912a39fee30dfa767fa491e /lib/models | |
| parent | Working on deriving types from json (diff) | |
| download | disml-179d9598fe62e2966471b312fd438e98ff3a272a.tar.xz disml-179d9598fe62e2966471b312fd438e98ff3a272a.zip | |
Fix more dispatch issues
Diffstat (limited to 'lib/models')
| -rw-r--r-- | lib/models/activity.atd | 6 | ||||
| -rw-r--r-- | lib/models/activity_j.ml | 223 | ||||
| -rw-r--r-- | lib/models/activity_j.mli | 24 | ||||
| -rw-r--r-- | lib/models/activity_t.ml | 4 | ||||
| -rw-r--r-- | lib/models/activity_t.mli | 4 | ||||
| -rw-r--r-- | lib/models/member.atd | 8 | ||||
| -rw-r--r-- | lib/models/member_j.ml | 404 | ||||
| -rw-r--r-- | lib/models/member_j.mli | 30 | ||||
| -rw-r--r-- | lib/models/member_t.ml | 10 | ||||
| -rw-r--r-- | lib/models/member_t.mli | 10 | ||||
| -rw-r--r-- | lib/models/message.atd | 3 | ||||
| -rw-r--r-- | lib/models/message_j.ml | 46 | ||||
| -rw-r--r-- | lib/models/message_j.mli | 50 | ||||
| -rw-r--r-- | lib/models/message_t.ml | 6 | ||||
| -rw-r--r-- | lib/models/message_t.mli | 6 | ||||
| -rw-r--r-- | lib/models/presence.atd | 10 | ||||
| -rw-r--r-- | lib/models/presence_j.ml | 140 | ||||
| -rw-r--r-- | lib/models/presence_j.mli | 58 | ||||
| -rw-r--r-- | lib/models/presence_t.ml | 10 | ||||
| -rw-r--r-- | lib/models/presence_t.mli | 10 | ||||
| -rw-r--r-- | lib/models/user.atd | 4 | ||||
| -rw-r--r-- | lib/models/user_j.ml | 100 | ||||
| -rw-r--r-- | lib/models/user_j.mli | 22 | ||||
| -rw-r--r-- | lib/models/user_t.ml | 2 | ||||
| -rw-r--r-- | lib/models/user_t.mli | 2 |
25 files changed, 916 insertions, 276 deletions
diff --git a/lib/models/activity.atd b/lib/models/activity.atd index 94b4b3c..8e02191 100644 --- a/lib/models/activity.atd +++ b/lib/models/activity.atd @@ -1,5 +1,5 @@ -type snowflake <ocaml from="Snowflake" t="t"> = abstract - type t = { - id: snowflake; + name: string; + kind <json name="type">: int; + ?url: string option; }
\ No newline at end of file diff --git a/lib/models/activity_j.ml b/lib/models/activity_j.ml index 8a4eb2e..eb1a62e 100644 --- a/lib/models/activity_j.ml +++ b/lib/models/activity_j.ml @@ -1,22 +1,65 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t +type t = Activity_t.t = { name: string; kind: int; url: string option } -type t = Activity_t.t = { id: snowflake } - -let write_snowflake = ( - Snowflake_j.write_t +let write__1 = ( + Atdgen_runtime.Oj_run.write_option ( + Yojson.Safe.write_string + ) ) -let string_of_snowflake ?(len = 1024) x = +let string_of__1 ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_snowflake ob x; + write__1 ob x; Bi_outbuf.contents ob -let read_snowflake = ( - Snowflake_j.read_t +let read__1 = ( + fun p lb -> + Yojson.Safe.read_space p lb; + match Yojson.Safe.start_any_variant p lb with + | `Edgy_bracket -> ( + match Yojson.Safe.read_ident p lb with + | "None" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (None : _ option) + | "Some" -> + Atdgen_runtime.Oj_run.read_until_field_value p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_gt p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Double_quote -> ( + match Yojson.Safe.finish_string p lb with + | "None" -> + (None : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) + | `Square_bracket -> ( + match Atdgen_runtime.Oj_run.read_string p lb with + | "Some" -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_comma p lb; + Yojson.Safe.read_space p lb; + let x = ( + Atdgen_runtime.Oj_run.read_string + ) p lb + in + Yojson.Safe.read_space p lb; + Yojson.Safe.read_rbr p lb; + (Some x : _ option) + | x -> + Atdgen_runtime.Oj_run.invalid_variant_tag p x + ) ) -let snowflake_of_string s = - read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let _1_of_string s = + read__1 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write_t : _ -> t -> _ = ( fun ob x -> Bi_outbuf.add_char ob '{'; @@ -25,11 +68,31 @@ let write_t : _ -> t -> _ = ( is_first := false else Bi_outbuf.add_char ob ','; - Bi_outbuf.add_string ob "\"id\":"; + Bi_outbuf.add_string ob "\"name\":"; + ( + Yojson.Safe.write_string + ) + ob x.name; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"type\":"; ( - write_snowflake + Yojson.Safe.write_int ) - ob x.id; + ob x.kind; + (match x.url with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"url\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); Bi_outbuf.add_char ob '}'; ) let string_of_t ?(len = 1024) x = @@ -40,7 +103,9 @@ let read_t = ( fun p lb -> Yojson.Safe.read_space p lb; Yojson.Safe.read_lcurl p lb; - let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_name = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_kind = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_url = ref (None) in let bits0 = ref 0 in try Yojson.Safe.read_space p lb; @@ -50,24 +115,69 @@ let read_t = ( fun s pos len -> if pos < 0 || len < 0 || pos + len > String.length s then invalid_arg "out-of-bounds substring position or length"; - if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( - 0 - ) - else ( - -1 - ) + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 2 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) in let i = Yojson.Safe.map_ident p f lb in Atdgen_runtime.Oj_run.read_until_field_value p lb; ( match i with | 0 -> - field_id := ( + field_name := ( ( - read_snowflake + Atdgen_runtime.Oj_run.read_string ) p lb ); bits0 := !bits0 lor 0x1; + | 1 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) | _ -> ( Yojson.Safe.skip_json p lb ) @@ -80,24 +190,69 @@ let read_t = ( fun s pos len -> if pos < 0 || len < 0 || pos + len > String.length s then invalid_arg "out-of-bounds substring position or length"; - if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( - 0 - ) - else ( - -1 - ) + match len with + | 3 -> ( + if String.unsafe_get s pos = 'u' && String.unsafe_get s (pos+1) = 'r' && String.unsafe_get s (pos+2) = 'l' then ( + 2 + ) + else ( + -1 + ) + ) + | 4 -> ( + match String.unsafe_get s pos with + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'a' && String.unsafe_get s (pos+2) = 'm' && String.unsafe_get s (pos+3) = 'e' then ( + 0 + ) + else ( + -1 + ) + ) + | 't' -> ( + if String.unsafe_get s (pos+1) = 'y' && String.unsafe_get s (pos+2) = 'p' && String.unsafe_get s (pos+3) = 'e' then ( + 1 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | _ -> ( + -1 + ) in let i = Yojson.Safe.map_ident p f lb in Atdgen_runtime.Oj_run.read_until_field_value p lb; ( match i with | 0 -> - field_id := ( + field_name := ( ( - read_snowflake + Atdgen_runtime.Oj_run.read_string ) p lb ); bits0 := !bits0 lor 0x1; + | 1 -> + field_kind := ( + ( + Atdgen_runtime.Oj_run.read_int + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 2 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_url := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) | _ -> ( Yojson.Safe.skip_json p lb ) @@ -105,10 +260,12 @@ let read_t = ( done; assert false; with Yojson.End_of_object -> ( - if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id" |]; + if !bits0 <> 0x3 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "name"; "kind" |]; ( { - id = !field_id; + name = !field_name; + kind = !field_kind; + url = !field_url; } : t) ) diff --git a/lib/models/activity_j.mli b/lib/models/activity_j.mli index 3c93cc1..c179efb 100644 --- a/lib/models/activity_j.mli +++ b/lib/models/activity_j.mli @@ -1,29 +1,7 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t - -type t = Activity_t.t = { id: snowflake } - -val write_snowflake : - Bi_outbuf.t -> snowflake -> unit - (** Output a JSON value of type {!snowflake}. *) - -val string_of_snowflake : - ?len:int -> snowflake -> string - (** Serialize a value of type {!snowflake} - into a JSON string. - @param len specifies the initial length - of the buffer used internally. - Default: 1024. *) - -val read_snowflake : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake - (** Input JSON data of type {!snowflake}. *) - -val snowflake_of_string : - string -> snowflake - (** Deserialize JSON data of type {!snowflake}. *) +type t = Activity_t.t = { name: string; kind: int; url: string option } val write_t : Bi_outbuf.t -> t -> unit diff --git a/lib/models/activity_t.ml b/lib/models/activity_t.ml index f9ba6a6..6bb2049 100644 --- a/lib/models/activity_t.ml +++ b/lib/models/activity_t.ml @@ -1,6 +1,4 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t - -type t = { id: snowflake } +type t = { name: string; kind: int; url: string option } diff --git a/lib/models/activity_t.mli b/lib/models/activity_t.mli index f9ba6a6..6bb2049 100644 --- a/lib/models/activity_t.mli +++ b/lib/models/activity_t.mli @@ -1,6 +1,4 @@ (* Auto-generated from "activity.atd" *) [@@@ocaml.warning "-27-32-35-39"] -type snowflake = Snowflake_t.t - -type t = { id: snowflake } +type t = { name: string; kind: int; url: string option } diff --git a/lib/models/member.atd b/lib/models/member.atd index ea00032..11d8b62 100644 --- a/lib/models/member.atd +++ b/lib/models/member.atd @@ -1,11 +1,15 @@ type snowflake <ocaml from="Snowflake" t="t"> = abstract type user <ocaml from="User" t="t"> = abstract -type t = { - user: user; +type partial_member = { ?nick: string option; roles: snowflake list; joined_at: string; deaf: bool; mute: bool; +} + +type t = { + inherit partial_member; + user: user; }
\ No newline at end of file diff --git a/lib/models/member_j.ml b/lib/models/member_j.ml index 3826c93..7fd4aec 100644 --- a/lib/models/member_j.ml +++ b/lib/models/member_j.ml @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = Member_t.t = { - user: user; + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = Member_t.partial_member = { nick: string option; roles: snowflake list; joined_at: string; @@ -115,15 +123,6 @@ let write_t : _ -> t -> _ = ( fun ob x -> Bi_outbuf.add_char ob '{'; let is_first = ref true in - if !is_first then - is_first := false - else - Bi_outbuf.add_char ob ','; - Bi_outbuf.add_string ob "\"user\":"; - ( - write_user - ) - ob x.user; (match x.nick with None -> () | Some x -> if !is_first then is_first := false @@ -171,6 +170,15 @@ let write_t : _ -> t -> _ = ( Yojson.Safe.write_bool ) ob x.mute; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"user\":"; + ( + write_user + ) + ob x.user; Bi_outbuf.add_char ob '}'; ) let string_of_t ?(len = 1024) x = @@ -181,12 +189,12 @@ let read_t = ( fun p lb -> Yojson.Safe.read_space p lb; Yojson.Safe.read_lcurl p lb; - let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_nick = ref (None) in let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_joined_at = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_deaf = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_mute = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in let bits0 = ref 0 in try Yojson.Safe.read_space p lb; @@ -201,7 +209,7 @@ let read_t = ( match String.unsafe_get s pos with | 'd' -> ( if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( - 4 + 3 ) else ( -1 @@ -209,7 +217,7 @@ let read_t = ( ) | 'm' -> ( if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( - 5 + 4 ) else ( -1 @@ -217,7 +225,7 @@ let read_t = ( ) | 'n' -> ( if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( - 1 + 0 ) else ( -1 @@ -225,7 +233,7 @@ let read_t = ( ) | 'u' -> ( if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( - 0 + 5 ) else ( -1 @@ -237,7 +245,7 @@ let read_t = ( ) | 5 -> ( if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( - 2 + 1 ) else ( -1 @@ -245,7 +253,7 @@ let read_t = ( ) | 9 -> ( if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( - 3 + 2 ) else ( -1 @@ -260,13 +268,6 @@ let read_t = ( ( match i with | 0 -> - field_user := ( - ( - read_user - ) p lb - ); - bits0 := !bits0 lor 0x1; - | 1 -> if not (Yojson.Safe.read_null_if_possible p lb) then ( field_nick := ( Some ( @@ -276,31 +277,38 @@ let read_t = ( ) ); ) - | 2 -> + | 1 -> field_roles := ( ( read__2 ) p lb ); - bits0 := !bits0 lor 0x2; - | 3 -> + bits0 := !bits0 lor 0x1; + | 2 -> field_joined_at := ( ( Atdgen_runtime.Oj_run.read_string ) p lb ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); bits0 := !bits0 lor 0x4; | 4 -> - field_deaf := ( + field_mute := ( ( Atdgen_runtime.Oj_run.read_bool ) p lb ); bits0 := !bits0 lor 0x8; | 5 -> - field_mute := ( + field_user := ( ( - Atdgen_runtime.Oj_run.read_bool + read_user ) p lb ); bits0 := !bits0 lor 0x10; @@ -321,7 +329,7 @@ let read_t = ( match String.unsafe_get s pos with | 'd' -> ( if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( - 4 + 3 ) else ( -1 @@ -329,7 +337,7 @@ let read_t = ( ) | 'm' -> ( if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( - 5 + 4 ) else ( -1 @@ -337,7 +345,7 @@ let read_t = ( ) | 'n' -> ( if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( - 1 + 0 ) else ( -1 @@ -345,7 +353,7 @@ let read_t = ( ) | 'u' -> ( if String.unsafe_get s (pos+1) = 's' && String.unsafe_get s (pos+2) = 'e' && String.unsafe_get s (pos+3) = 'r' then ( - 0 + 5 ) else ( -1 @@ -357,7 +365,7 @@ let read_t = ( ) | 5 -> ( if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( - 2 + 1 ) else ( -1 @@ -365,7 +373,7 @@ let read_t = ( ) | 9 -> ( if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( - 3 + 2 ) else ( -1 @@ -380,13 +388,6 @@ let read_t = ( ( match i with | 0 -> - field_user := ( - ( - read_user - ) p lb - ); - bits0 := !bits0 lor 0x1; - | 1 -> if not (Yojson.Safe.read_null_if_possible p lb) then ( field_nick := ( Some ( @@ -396,31 +397,38 @@ let read_t = ( ) ); ) - | 2 -> + | 1 -> field_roles := ( ( read__2 ) p lb ); - bits0 := !bits0 lor 0x2; - | 3 -> + bits0 := !bits0 lor 0x1; + | 2 -> field_joined_at := ( ( Atdgen_runtime.Oj_run.read_string ) p lb ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); bits0 := !bits0 lor 0x4; | 4 -> - field_deaf := ( + field_mute := ( ( Atdgen_runtime.Oj_run.read_bool ) p lb ); bits0 := !bits0 lor 0x8; | 5 -> - field_mute := ( + field_user := ( ( - Atdgen_runtime.Oj_run.read_bool + read_user ) p lb ); bits0 := !bits0 lor 0x10; @@ -431,18 +439,312 @@ let read_t = ( done; assert false; with Yojson.End_of_object -> ( - if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "joined_at"; "deaf"; "mute" |]; + if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute"; "user" |]; ( { - user = !field_user; nick = !field_nick; roles = !field_roles; joined_at = !field_joined_at; deaf = !field_deaf; mute = !field_mute; + user = !field_user; } : t) ) ) let t_of_string s = read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_member : _ -> partial_member -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + (match x.nick with None -> () | Some x -> + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"nick\":"; + ( + Yojson.Safe.write_string + ) + ob x; + ); + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"roles\":"; + ( + write__2 + ) + ob x.roles; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"joined_at\":"; + ( + Yojson.Safe.write_string + ) + ob x.joined_at; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"deaf\":"; + ( + Yojson.Safe.write_bool + ) + ob x.deaf; + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"mute\":"; + ( + Yojson.Safe.write_bool + ) + ob x.mute; + Bi_outbuf.add_char ob '}'; +) +let string_of_partial_member ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_partial_member ob x; + Bi_outbuf.contents ob +let read_partial_member = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_nick = ref (None) in + let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_joined_at = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_deaf = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_mute = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'd' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( + 3 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + match len with + | 4 -> ( + match String.unsafe_get s pos with + | 'd' -> ( + if String.unsafe_get s (pos+1) = 'e' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 'f' then ( + 3 + ) + else ( + -1 + ) + ) + | 'm' -> ( + if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'e' then ( + 4 + ) + else ( + -1 + ) + ) + | 'n' -> ( + if String.unsafe_get s (pos+1) = 'i' && String.unsafe_get s (pos+2) = 'c' && String.unsafe_get s (pos+3) = 'k' then ( + 0 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + ) + | 5 -> ( + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) + ) + | 9 -> ( + if String.unsafe_get s pos = 'j' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'n' && String.unsafe_get s (pos+4) = 'e' && String.unsafe_get s (pos+5) = 'd' && String.unsafe_get s (pos+6) = '_' && String.unsafe_get s (pos+7) = 'a' && String.unsafe_get s (pos+8) = 't' then ( + 2 + ) + else ( + -1 + ) + ) + | _ -> ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + if not (Yojson.Safe.read_null_if_possible p lb) then ( + field_nick := ( + Some ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ) + ); + ) + | 1 -> + field_roles := ( + ( + read__2 + ) p lb + ); + bits0 := !bits0 lor 0x1; + | 2 -> + field_joined_at := ( + ( + Atdgen_runtime.Oj_run.read_string + ) p lb + ); + bits0 := !bits0 lor 0x2; + | 3 -> + field_deaf := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x4; + | 4 -> + field_mute := ( + ( + Atdgen_runtime.Oj_run.read_bool + ) p lb + ); + bits0 := !bits0 lor 0x8; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0xf then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "roles"; "joined_at"; "deaf"; "mute" |]; + ( + { + nick = !field_nick; + roles = !field_roles; + joined_at = !field_joined_at; + deaf = !field_deaf; + mute = !field_mute; + } + : partial_member) + ) +) +let partial_member_of_string s = + read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/member_j.mli b/lib/models/member_j.mli index 28c89fd..f160b6d 100644 --- a/lib/models/member_j.mli +++ b/lib/models/member_j.mli @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = Member_t.t = { - user: user; + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = Member_t.partial_member = { nick: string option; roles: snowflake list; joined_at: string; @@ -74,3 +82,23 @@ val t_of_string : string -> t (** Deserialize JSON data of type {!t}. *) +val write_partial_member : + Bi_outbuf.t -> partial_member -> unit + (** Output a JSON value of type {!partial_member}. *) + +val string_of_partial_member : + ?len:int -> partial_member -> string + (** Serialize a value of type {!partial_member} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_partial_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member + (** Input JSON data of type {!partial_member}. *) + +val partial_member_of_string : + string -> partial_member + (** Deserialize JSON data of type {!partial_member}. *) + diff --git a/lib/models/member_t.ml b/lib/models/member_t.ml index 1dd6ecd..6262e1b 100644 --- a/lib/models/member_t.ml +++ b/lib/models/member_t.ml @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = { - user: user; + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = { nick: string option; roles: snowflake list; joined_at: string; diff --git a/lib/models/member_t.mli b/lib/models/member_t.mli index 1dd6ecd..6262e1b 100644 --- a/lib/models/member_t.mli +++ b/lib/models/member_t.mli @@ -6,7 +6,15 @@ type user = User_t.t type snowflake = Snowflake_t.t type t = { - user: user; + nick: string option; + roles: snowflake list; + joined_at: string; + deaf: bool; + mute: bool; + user: user +} + +type partial_member = { nick: string option; roles: snowflake list; joined_at: string; diff --git a/lib/models/message.atd b/lib/models/message.atd index 88c60ec..1c90be9 100644 --- a/lib/models/message.atd +++ b/lib/models/message.atd @@ -1,6 +1,7 @@ type snowflake <ocaml from="Snowflake" t="t"> = abstract type user <ocaml from="User" t="t"> = abstract type member <ocaml from="Member" t="t"> = abstract +type partial_member <ocaml from="Member" t="partial_member"> = abstract type role <ocaml from="Role" t="t"> = abstract type attachment <ocaml from="Attachment" t="t"> = abstract type embed <ocaml from="Embed" t="t"> = abstract @@ -10,7 +11,7 @@ type t = { id: snowflake; author: user; channel_id: snowflake; - ?member: member option; + ?member: partial_member option; ?guild_id: snowflake option; content: string; timestamp: string; diff --git a/lib/models/message_j.ml b/lib/models/message_j.ml index 79f33a1..206d69c 100644 --- a/lib/models/message_j.ml +++ b/lib/models/message_j.ml @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = Message_t.t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -37,6 +37,8 @@ type t = Message_t.t = { kind: int } +type member = Member_t.t + let write_user = ( User_j.write_t ) @@ -85,18 +87,18 @@ let read_reaction = ( ) let reaction_of_string s = read_reaction (Yojson.Safe.init_lexer ()) (Lexing.from_string s) -let write_member = ( - Member_j.write_t +let write_partial_member = ( + Member_j.write_partial_member ) -let string_of_member ?(len = 1024) x = +let string_of_partial_member ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_member ob x; + write_partial_member ob x; Bi_outbuf.contents ob -let read_member = ( - Member_j.read_t +let read_partial_member = ( + Member_j.read_partial_member ) -let member_of_string s = - read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let partial_member_of_string s = + read_partial_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write_embed = ( Embed_j.write_t ) @@ -317,7 +319,7 @@ let _2_of_string s = read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write__1 = ( Atdgen_runtime.Oj_run.write_option ( - write_member + write_partial_member ) ) let string_of__1 ?(len = 1024) x = @@ -337,7 +339,7 @@ let read__1 = ( | "Some" -> Atdgen_runtime.Oj_run.read_until_field_value p lb; let x = ( - read_member + read_partial_member ) p lb in Yojson.Safe.read_space p lb; @@ -360,7 +362,7 @@ let read__1 = ( Yojson.Safe.read_comma p lb; Yojson.Safe.read_space p lb; let x = ( - read_member + read_partial_member ) p lb in Yojson.Safe.read_space p lb; @@ -410,7 +412,7 @@ let write_t : _ -> t -> _ = ( Bi_outbuf.add_char ob ','; Bi_outbuf.add_string ob "\"member\":"; ( - write_member + write_partial_member ) ob x; ); @@ -810,7 +812,7 @@ let read_t = ( field_member := ( Some ( ( - read_member + read_partial_member ) p lb ) ); @@ -1158,7 +1160,7 @@ let read_t = ( field_member := ( Some ( ( - read_member + read_partial_member ) p lb ) ); @@ -1312,3 +1314,15 @@ let read_t = ( ) let t_of_string s = read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_member = ( + Member_j.write_t +) +let string_of_member ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_member ob x; + Bi_outbuf.contents ob +let read_member = ( + Member_j.read_t +) +let member_of_string s = + read_member (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/message_j.mli b/lib/models/message_j.mli index 8f7ce13..e3a3e5b 100644 --- a/lib/models/message_j.mli +++ b/lib/models/message_j.mli @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = Message_t.t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -37,6 +37,8 @@ type t = Message_t.t = { kind: int } +type member = Member_t.t + val write_user : Bi_outbuf.t -> user -> unit (** Output a JSON value of type {!user}. *) @@ -117,25 +119,25 @@ val reaction_of_string : string -> reaction (** Deserialize JSON data of type {!reaction}. *) -val write_member : - Bi_outbuf.t -> member -> unit - (** Output a JSON value of type {!member}. *) +val write_partial_member : + Bi_outbuf.t -> partial_member -> unit + (** Output a JSON value of type {!partial_member}. *) -val string_of_member : - ?len:int -> member -> string - (** Serialize a value of type {!member} +val string_of_partial_member : + ?len:int -> partial_member -> string + (** Serialize a value of type {!partial_member} into a JSON string. @param len specifies the initial length of the buffer used internally. Default: 1024. *) -val read_member : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> member - (** Input JSON data of type {!member}. *) +val read_partial_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_member + (** Input JSON data of type {!partial_member}. *) -val member_of_string : - string -> member - (** Deserialize JSON data of type {!member}. *) +val partial_member_of_string : + string -> partial_member + (** Deserialize JSON data of type {!partial_member}. *) val write_embed : Bi_outbuf.t -> embed -> unit @@ -197,3 +199,23 @@ val t_of_string : string -> t (** Deserialize JSON data of type {!t}. *) +val write_member : + Bi_outbuf.t -> member -> unit + (** Output a JSON value of type {!member}. *) + +val string_of_member : + ?len:int -> member -> string + (** Serialize a value of type {!member} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_member : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> member + (** Input JSON data of type {!member}. *) + +val member_of_string : + string -> member + (** Deserialize JSON data of type {!member}. *) + diff --git a/lib/models/message_t.ml b/lib/models/message_t.ml index 3d37442..2442d76 100644 --- a/lib/models/message_t.ml +++ b/lib/models/message_t.ml @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -36,3 +36,5 @@ type t = { webhook_id: snowflake; kind: int } + +type member = Member_t.t diff --git a/lib/models/message_t.mli b/lib/models/message_t.mli index 3d37442..2442d76 100644 --- a/lib/models/message_t.mli +++ b/lib/models/message_t.mli @@ -9,7 +9,7 @@ type role = Role_t.t type reaction = Reaction_t.t -type member = Member_t.t +type partial_member = Member_t.partial_member type embed = Embed_t.t @@ -19,7 +19,7 @@ type t = { id: snowflake; author: user; channel_id: snowflake; - member: member option; + member: partial_member option; guild_id: snowflake option; content: string; timestamp: string; @@ -36,3 +36,5 @@ type t = { webhook_id: snowflake; kind: int } + +type member = Member_t.t diff --git a/lib/models/presence.atd b/lib/models/presence.atd index c455fec..da9b3fd 100644 --- a/lib/models/presence.atd +++ b/lib/models/presence.atd @@ -1,13 +1,13 @@ +type snowflake <ocaml from="Snowflake" t="t"> = abstract type user <ocaml from="User" t="t"> = abstract -type role <ocaml from="Role" t="t"> = abstract +type partial_user <ocaml from="User" t="partial_user"> = abstract type activity <ocaml from="Activity" t="t"> = abstract -type guild <ocaml from="Guild" t="t"> = abstract type t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; ?game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list; }
\ No newline at end of file diff --git a/lib/models/presence_j.ml b/lib/models/presence_j.ml index 91ef86d..b4ea497 100644 --- a/lib/models/presence_j.ml +++ b/lib/models/presence_j.ml @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = Presence_t.t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } @@ -30,30 +30,30 @@ let read_user = ( ) let user_of_string s = read_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) -let write_role = ( - Role_j.write_t +let write_snowflake = ( + Snowflake_j.write_t ) -let string_of_role ?(len = 1024) x = +let string_of_snowflake ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_role ob x; + write_snowflake ob x; Bi_outbuf.contents ob -let read_role = ( - Role_j.read_t +let read_snowflake = ( + Snowflake_j.read_t ) -let role_of_string s = - read_role (Yojson.Safe.init_lexer ()) (Lexing.from_string s) -let write_guild = ( - Guild_j.write_t +let snowflake_of_string s = + read_snowflake (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_user = ( + User_j.write_partial_user ) -let string_of_guild ?(len = 1024) x = +let string_of_partial_user ?(len = 1024) x = let ob = Bi_outbuf.create len in - write_guild ob x; + write_partial_user ob x; Bi_outbuf.contents ob -let read_guild = ( - Guild_j.read_t +let read_partial_user = ( + User_j.read_partial_user ) -let guild_of_string s = - read_guild (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let partial_user_of_string s = + read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write_activity = ( Activity_j.write_t ) @@ -141,7 +141,7 @@ let _2_of_string s = read__2 (Yojson.Safe.init_lexer ()) (Lexing.from_string s) let write__1 = ( Atdgen_runtime.Oj_run.write_list ( - write_role + write_snowflake ) ) let string_of__1 ?(len = 1024) x = @@ -150,7 +150,7 @@ let string_of__1 ?(len = 1024) x = Bi_outbuf.contents ob let read__1 = ( Atdgen_runtime.Oj_run.read_list ( - read_role + read_snowflake ) ) let _1_of_string s = @@ -165,7 +165,7 @@ let write_t : _ -> t -> _ = ( Bi_outbuf.add_char ob ','; Bi_outbuf.add_string ob "\"user\":"; ( - write_user + write_partial_user ) ob x.user; if !is_first then @@ -192,11 +192,11 @@ let write_t : _ -> t -> _ = ( is_first := false else Bi_outbuf.add_char ob ','; - Bi_outbuf.add_string ob "\"guild\":"; + Bi_outbuf.add_string ob "\"guild_id\":"; ( - write_guild + write_snowflake ) - ob x.guild; + ob x.guild_id; if !is_first then is_first := false else @@ -228,7 +228,7 @@ let read_t = ( let field_user = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_roles = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_game = ref (None) in - let field_guild = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let field_guild_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_status = ref (Obj.magic (Sys.opaque_identity 0.0)) in let field_activities = ref (Obj.magic (Sys.opaque_identity 0.0)) in let bits0 = ref 0 in @@ -264,26 +264,12 @@ let read_t = ( ) ) | 5 -> ( - match String.unsafe_get s pos with - | 'g' -> ( - if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' then ( - 3 - ) - else ( - -1 - ) - ) - | 'r' -> ( - if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( - 1 - ) - else ( - -1 - ) - ) - | _ -> ( - -1 - ) + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) ) | 6 -> ( if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 's' then ( @@ -293,6 +279,14 @@ let read_t = ( -1 ) ) + | 8 -> ( + if String.unsafe_get s pos = 'g' && String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 3 + ) + else ( + -1 + ) + ) | 10 -> ( if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'v' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 's' then ( 5 @@ -312,7 +306,7 @@ let read_t = ( | 0 -> field_user := ( ( - read_user + read_partial_user ) p lb ); bits0 := !bits0 lor 0x1; @@ -334,9 +328,9 @@ let read_t = ( ); ) | 3 -> - field_guild := ( + field_guild_id := ( ( - read_guild + read_snowflake ) p lb ); bits0 := !bits0 lor 0x4; @@ -390,26 +384,12 @@ let read_t = ( ) ) | 5 -> ( - match String.unsafe_get s pos with - | 'g' -> ( - if String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' then ( - 3 - ) - else ( - -1 - ) - ) - | 'r' -> ( - if String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( - 1 - ) - else ( - -1 - ) - ) - | _ -> ( - -1 - ) + if String.unsafe_get s pos = 'r' && String.unsafe_get s (pos+1) = 'o' && String.unsafe_get s (pos+2) = 'l' && String.unsafe_get s (pos+3) = 'e' && String.unsafe_get s (pos+4) = 's' then ( + 1 + ) + else ( + -1 + ) ) | 6 -> ( if String.unsafe_get s pos = 's' && String.unsafe_get s (pos+1) = 't' && String.unsafe_get s (pos+2) = 'a' && String.unsafe_get s (pos+3) = 't' && String.unsafe_get s (pos+4) = 'u' && String.unsafe_get s (pos+5) = 's' then ( @@ -419,6 +399,14 @@ let read_t = ( -1 ) ) + | 8 -> ( + if String.unsafe_get s pos = 'g' && String.unsafe_get s (pos+1) = 'u' && String.unsafe_get s (pos+2) = 'i' && String.unsafe_get s (pos+3) = 'l' && String.unsafe_get s (pos+4) = 'd' && String.unsafe_get s (pos+5) = '_' && String.unsafe_get s (pos+6) = 'i' && String.unsafe_get s (pos+7) = 'd' then ( + 3 + ) + else ( + -1 + ) + ) | 10 -> ( if String.unsafe_get s pos = 'a' && String.unsafe_get s (pos+1) = 'c' && String.unsafe_get s (pos+2) = 't' && String.unsafe_get s (pos+3) = 'i' && String.unsafe_get s (pos+4) = 'v' && String.unsafe_get s (pos+5) = 'i' && String.unsafe_get s (pos+6) = 't' && String.unsafe_get s (pos+7) = 'i' && String.unsafe_get s (pos+8) = 'e' && String.unsafe_get s (pos+9) = 's' then ( 5 @@ -438,7 +426,7 @@ let read_t = ( | 0 -> field_user := ( ( - read_user + read_partial_user ) p lb ); bits0 := !bits0 lor 0x1; @@ -460,9 +448,9 @@ let read_t = ( ); ) | 3 -> - field_guild := ( + field_guild_id := ( ( - read_guild + read_snowflake ) p lb ); bits0 := !bits0 lor 0x4; @@ -487,13 +475,13 @@ let read_t = ( done; assert false; with Yojson.End_of_object -> ( - if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "guild"; "status"; "activities" |]; + if !bits0 <> 0x1f then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "user"; "roles"; "guild_id"; "status"; "activities" |]; ( { user = !field_user; roles = !field_roles; game = !field_game; - guild = !field_guild; + guild_id = !field_guild_id; status = !field_status; activities = !field_activities; } diff --git a/lib/models/presence_j.mli b/lib/models/presence_j.mli index 9da05ec..be68b3f 100644 --- a/lib/models/presence_j.mli +++ b/lib/models/presence_j.mli @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = Presence_t.t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } @@ -38,45 +38,45 @@ val user_of_string : string -> user (** Deserialize JSON data of type {!user}. *) -val write_role : - Bi_outbuf.t -> role -> unit - (** Output a JSON value of type {!role}. *) +val write_snowflake : + Bi_outbuf.t -> snowflake -> unit + (** Output a JSON value of type {!snowflake}. *) -val string_of_role : - ?len:int -> role -> string - (** Serialize a value of type {!role} +val string_of_snowflake : + ?len:int -> snowflake -> string + (** Serialize a value of type {!snowflake} into a JSON string. @param len specifies the initial length of the buffer used internally. Default: 1024. *) -val read_role : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> role - (** Input JSON data of type {!role}. *) +val read_snowflake : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> snowflake + (** Input JSON data of type {!snowflake}. *) -val role_of_string : - string -> role - (** Deserialize JSON data of type {!role}. *) +val snowflake_of_string : + string -> snowflake + (** Deserialize JSON data of type {!snowflake}. *) -val write_guild : - Bi_outbuf.t -> guild -> unit - (** Output a JSON value of type {!guild}. *) +val write_partial_user : + Bi_outbuf.t -> partial_user -> unit + (** Output a JSON value of type {!partial_user}. *) -val string_of_guild : - ?len:int -> guild -> string - (** Serialize a value of type {!guild} +val string_of_partial_user : + ?len:int -> partial_user -> string + (** Serialize a value of type {!partial_user} into a JSON string. @param len specifies the initial length of the buffer used internally. Default: 1024. *) -val read_guild : - Yojson.Safe.lexer_state -> Lexing.lexbuf -> guild - (** Input JSON data of type {!guild}. *) +val read_partial_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user + (** Input JSON data of type {!partial_user}. *) -val guild_of_string : - string -> guild - (** Deserialize JSON data of type {!guild}. *) +val partial_user_of_string : + string -> partial_user + (** Deserialize JSON data of type {!partial_user}. *) val write_activity : Bi_outbuf.t -> activity -> unit diff --git a/lib/models/presence_t.ml b/lib/models/presence_t.ml index 7a26905..940d986 100644 --- a/lib/models/presence_t.ml +++ b/lib/models/presence_t.ml @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } diff --git a/lib/models/presence_t.mli b/lib/models/presence_t.mli index 7a26905..940d986 100644 --- a/lib/models/presence_t.mli +++ b/lib/models/presence_t.mli @@ -3,17 +3,17 @@ type user = User_t.t -type role = Role_t.t +type snowflake = Snowflake_t.t -type guild = Guild_t.t +type partial_user = User_t.partial_user type activity = Activity_t.t type t = { - user: user; - roles: role list; + user: partial_user; + roles: snowflake list; game: activity option; - guild: guild; + guild_id: snowflake; status: string; activities: activity list } diff --git a/lib/models/user.atd b/lib/models/user.atd index 73e2ff9..106b3b0 100644 --- a/lib/models/user.atd +++ b/lib/models/user.atd @@ -6,4 +6,8 @@ type t = { discriminator: string; ?avatar: string option; ~bot <ocaml default="false">: bool; +} + +type partial_user = { + id: snowflake; }
\ No newline at end of file diff --git a/lib/models/user_j.ml b/lib/models/user_j.ml index 6eb93e6..552a20d 100644 --- a/lib/models/user_j.ml +++ b/lib/models/user_j.ml @@ -11,6 +11,8 @@ type t = User_t.t = { bot: bool } +type partial_user = User_t.partial_user = { id: snowflake } + let write_snowflake = ( Snowflake_j.write_t ) @@ -366,3 +368,101 @@ let read_t = ( ) let t_of_string s = read_t (Yojson.Safe.init_lexer ()) (Lexing.from_string s) +let write_partial_user : _ -> partial_user -> _ = ( + fun ob x -> + Bi_outbuf.add_char ob '{'; + let is_first = ref true in + if !is_first then + is_first := false + else + Bi_outbuf.add_char ob ','; + Bi_outbuf.add_string ob "\"id\":"; + ( + write_snowflake + ) + ob x.id; + Bi_outbuf.add_char ob '}'; +) +let string_of_partial_user ?(len = 1024) x = + let ob = Bi_outbuf.create len in + write_partial_user ob x; + Bi_outbuf.contents ob +let read_partial_user = ( + fun p lb -> + Yojson.Safe.read_space p lb; + Yojson.Safe.read_lcurl p lb; + let field_id = ref (Obj.magic (Sys.opaque_identity 0.0)) in + let bits0 = ref 0 in + try + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_end lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + while true do + Yojson.Safe.read_space p lb; + Yojson.Safe.read_object_sep p lb; + Yojson.Safe.read_space p lb; + let f = + fun s pos len -> + if pos < 0 || len < 0 || pos + len > String.length s then + invalid_arg "out-of-bounds substring position or length"; + if len = 2 && String.unsafe_get s pos = 'i' && String.unsafe_get s (pos+1) = 'd' then ( + 0 + ) + else ( + -1 + ) + in + let i = Yojson.Safe.map_ident p f lb in + Atdgen_runtime.Oj_run.read_until_field_value p lb; + ( + match i with + | 0 -> + field_id := ( + ( + read_snowflake + ) p lb + ); + bits0 := !bits0 lor 0x1; + | _ -> ( + Yojson.Safe.skip_json p lb + ) + ); + done; + assert false; + with Yojson.End_of_object -> ( + if !bits0 <> 0x1 then Atdgen_runtime.Oj_run.missing_fields p [| !bits0 |] [| "id" |]; + ( + { + id = !field_id; + } + : partial_user) + ) +) +let partial_user_of_string s = + read_partial_user (Yojson.Safe.init_lexer ()) (Lexing.from_string s) diff --git a/lib/models/user_j.mli b/lib/models/user_j.mli index 0a1c6e1..576768e 100644 --- a/lib/models/user_j.mli +++ b/lib/models/user_j.mli @@ -11,6 +11,8 @@ type t = User_t.t = { bot: bool } +type partial_user = User_t.partial_user = { id: snowflake } + val write_snowflake : Bi_outbuf.t -> snowflake -> unit (** Output a JSON value of type {!snowflake}. *) @@ -51,3 +53,23 @@ val t_of_string : string -> t (** Deserialize JSON data of type {!t}. *) +val write_partial_user : + Bi_outbuf.t -> partial_user -> unit + (** Output a JSON value of type {!partial_user}. *) + +val string_of_partial_user : + ?len:int -> partial_user -> string + (** Serialize a value of type {!partial_user} + into a JSON string. + @param len specifies the initial length + of the buffer used internally. + Default: 1024. *) + +val read_partial_user : + Yojson.Safe.lexer_state -> Lexing.lexbuf -> partial_user + (** Input JSON data of type {!partial_user}. *) + +val partial_user_of_string : + string -> partial_user + (** Deserialize JSON data of type {!partial_user}. *) + diff --git a/lib/models/user_t.ml b/lib/models/user_t.ml index b303aa3..294cf0a 100644 --- a/lib/models/user_t.ml +++ b/lib/models/user_t.ml @@ -10,3 +10,5 @@ type t = { avatar: string option; bot: bool } + +type partial_user = { id: snowflake } diff --git a/lib/models/user_t.mli b/lib/models/user_t.mli index b303aa3..294cf0a 100644 --- a/lib/models/user_t.mli +++ b/lib/models/user_t.mli @@ -10,3 +10,5 @@ type t = { avatar: string option; bot: bool } + +type partial_user = { id: snowflake } |