From 8d3142500914210054c74887ffd8d5ecf98f3f9f Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 13 Jan 2023 14:40:21 +0200 Subject: [PATCH] Add struct for ping response --- provisioning.go | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/provisioning.go b/provisioning.go index bd96beb..da4b244 100644 --- a/provisioning.go +++ b/provisioning.go @@ -171,37 +171,34 @@ func (p *ProvisioningAPI) disconnect(w http.ResponseWriter, r *http.Request) { } } +type respPing struct { + Discord struct { + ID string `json:"id,omitempty"` + LoggedIn bool `json:"logged_in"` + Connected bool `json:"connected"` + Conn struct { + LastHeartbeatAck int64 `json:"last_heartbeat_ack,omitempty"` + LastHeartbeatSent int64 `json:"last_heartbeat_sent,omitempty"` + } `json:"conn"` + } + MXID id.UserID `json:"mxid"` + ManagementRoom id.RoomID `json:"management_room"` +} + func (p *ProvisioningAPI) ping(w http.ResponseWriter, r *http.Request) { user := r.Context().Value("user").(*User) - discord := map[string]interface{}{ - "logged_in": user.IsLoggedIn(), - "connected": user.Connected(), - "conn": nil, + resp := respPing{ + MXID: user.MXID, + ManagementRoom: user.ManagementRoom, } - - user.Lock() - if user.DiscordID != "" { - discord["id"] = user.DiscordID - } - + resp.Discord.LoggedIn = user.IsLoggedIn() + resp.Discord.Connected = user.Connected() + resp.Discord.ID = user.DiscordID if user.Session != nil { - user.Session.Lock() - discord["conn"] = map[string]interface{}{ - "last_heartbeat_ack": user.Session.LastHeartbeatAck, - "last_heartbeat_sent": user.Session.LastHeartbeatSent, - } - user.Session.Unlock() + resp.Discord.Conn.LastHeartbeatAck = user.Session.LastHeartbeatAck.UnixMilli() + resp.Discord.Conn.LastHeartbeatSent = user.Session.LastHeartbeatSent.UnixMilli() } - - resp := map[string]interface{}{ - "discord": discord, - "management_room": user.ManagementRoom, - "mxid": user.MXID, - } - - user.Unlock() - jsonResponse(w, http.StatusOK, resp) }