diff --git a/client.go b/client.go index 051c1f8..6f2a7ea 100644 --- a/client.go +++ b/client.go @@ -652,6 +652,14 @@ func (cli *Client) Messages(roomID, from, to string, dir rune, limit int) (resp return } +// TurnServer returns turn server details and credentials for the client to use when initiating calls. +// See http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-voip-turnserver +func (cli *Client) TurnServer() (resp *RespTurnServer, err error) { + urlPath := cli.BuildURL("voip", "turnServer") + _, err = cli.MakeRequest("GET", urlPath, nil, &resp) + return +} + func txnID() string { return "go" + strconv.FormatInt(time.Now().UnixNano(), 10) } diff --git a/responses.go b/responses.go index 58191bc..1b9b066 100644 --- a/responses.go +++ b/responses.go @@ -162,3 +162,10 @@ type RespSync struct { } `json:"invite"` } `json:"rooms"` } + +type RespTurnServer struct { + Username string `json:"username"` + Password string `json:"password"` + TTL int `json:"ttl"` + URIs []string `json:"uris"` +}