110 lines
1.9 KiB
D
110 lines
1.9 KiB
D
module api_data;
|
|
import mir.serde, util: JsonObject;
|
|
|
|
struct Moderate {
|
|
string user_id;
|
|
@serdeOptional string reason;
|
|
}
|
|
|
|
struct State {
|
|
struct PowerLevels {
|
|
short[string] users;
|
|
}
|
|
|
|
struct ACL {
|
|
@serdeOptional:
|
|
bool allow_ip_literals;
|
|
string[] allow = ["*"];
|
|
string[] deny;
|
|
}
|
|
|
|
JsonObject content;
|
|
string event_id;
|
|
string sender;
|
|
string type;
|
|
}
|
|
|
|
struct Encrypted {
|
|
char[] algorithm;
|
|
char[] ciphertext;
|
|
char[] device_id;
|
|
char[] sender_key;
|
|
char[] session_id;
|
|
}
|
|
|
|
struct MSG {
|
|
struct Meta {
|
|
int h, w;
|
|
ulong size;
|
|
string mimetype;
|
|
}
|
|
|
|
struct Relates {
|
|
struct EvtBase {
|
|
string event_id;
|
|
}
|
|
|
|
@serdeOptional @serdeKeys("m.in_reply_to") EvtBase reply;
|
|
}
|
|
|
|
string body;
|
|
@serdeOptional @serdeIgnoreDefault string formatted_body;
|
|
string msgtype = "m.notice";
|
|
@serdeOptional string format = "org.matrix.custom.html";
|
|
|
|
@serdeOptional @serdeIgnoreDefault:
|
|
@serdeKeys("m.relates_to") Relates relates;
|
|
string rel_type;
|
|
string url;
|
|
string filename;
|
|
Meta info;
|
|
}
|
|
|
|
struct Sync {
|
|
struct StrippedStateEvent {
|
|
JsonObject content;
|
|
string sender, state_key, type;
|
|
}
|
|
|
|
struct Unsigned {
|
|
int age;
|
|
string membership, transaction_id;
|
|
}
|
|
|
|
struct Rooms {
|
|
struct Invited {
|
|
struct IS { StrippedStateEvent[] events; }
|
|
IS invite_state;
|
|
}
|
|
struct Joined {
|
|
struct Timeline {
|
|
EventWithoutRoomID[] events;
|
|
@serdeOptional bool limited;
|
|
string prev_batch;
|
|
}
|
|
|
|
struct UNC {
|
|
int highlight_count;
|
|
int notification_count;
|
|
}
|
|
|
|
@serdeOptional Timeline timeline;
|
|
@serdeOptional UNC unread_notifications;
|
|
}
|
|
|
|
@serdeOptional Invited[string] invite;
|
|
@serdeOptional Joined[string] join;
|
|
}
|
|
|
|
@serdeOptional Rooms rooms;
|
|
string next_batch;
|
|
}
|
|
|
|
struct EventWithoutRoomID {
|
|
JsonObject content;
|
|
string event_id;
|
|
ulong origin_server_ts;
|
|
@serdeOptional string sender, state_key, type;
|
|
@serdeIgnore string room;
|
|
// Unsigned unsigned;
|
|
} |