added new API endpoints to show/hide typing indicators

see #166
This commit is contained in:
Bernhard B
2021-10-25 19:44:47 +02:00
parent d1190f8299
commit 80805c069d
6 changed files with 435 additions and 0 deletions

View File

@@ -72,6 +72,10 @@ type SendMessageV2 struct {
Base64Attachments []string `json:"base64_attachments"`
}
type TypingIndicatorRequest struct {
Recipient string `json:"recipient"`
}
type Error struct {
Msg string `json:"error"`
}
@@ -885,3 +889,69 @@ func (a *Api) QuitGroup(c *gin.Context) {
}
c.Status(http.StatusNoContent)
}
// @Summary Show Typing Indicator.
// @Tags Messages
// @Description Show Typing Indicator.
// @Accept json
// @Produce json
// @Success 201 {string} OK
// @Failure 400 {object} Error
// @Param number path string true "Registered Phone Number"
// @Param data body TypingIndicatorRequest true "Type"
// @Router /v1/typing-indicator/{number} [put]
func (a *Api) SendStartTyping(c *gin.Context) {
var req TypingIndicatorRequest
err := c.BindJSON(&req)
if err != nil {
c.JSON(400, Error{Msg: "Couldn't process request - invalid request"})
log.Error(err.Error())
return
}
number := c.Param("number")
if number == "" {
c.JSON(400, Error{Msg: "Couldn't process request - number missing"})
return
}
err = a.signalClient.SendStartTyping(number, req.Recipient)
if err != nil {
c.JSON(400, Error{Msg: err.Error()})
return
}
c.Status(http.StatusNoContent)
}
// @Summary Hide Typing Indicator.
// @Tags Messages
// @Description Hide Typing Indicator.
// @Accept json
// @Produce json
// @Success 201 {string} OK
// @Failure 400 {object} Error
// @Param number path string true "Registered Phone Number"
// @Param data body TypingIndicatorRequest true "Type"
// @Router /v1/typing-indicator/{number} [delete]
func (a *Api) SendStopTyping(c *gin.Context) {
var req TypingIndicatorRequest
err := c.BindJSON(&req)
if err != nil {
c.JSON(400, Error{Msg: "Couldn't process request - invalid request"})
log.Error(err.Error())
return
}
number := c.Param("number")
if number == "" {
c.JSON(400, Error{Msg: "Couldn't process request - number missing"})
return
}
err = a.signalClient.SendStopTyping(number, req.Recipient)
if err != nil {
c.JSON(400, Error{Msg: err.Error()})
return
}
c.Status(http.StatusNoContent)
}