From d1b66d30883c9e5fda0c4cace494dec74d7df024 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Wed, 26 Feb 2020 17:45:25 +0100 Subject: Stub web interface --- mxlib/api.go | 13 +++++++++++++ mxlib/client.go | 26 +++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) (limited to 'mxlib') diff --git a/mxlib/api.go b/mxlib/api.go index 7752abc..6d35108 100644 --- a/mxlib/api.go +++ b/mxlib/api.go @@ -26,6 +26,19 @@ type Event struct { OriginServerTs int `json:"origin_server_ts"` } +type PasswordLoginRequest struct { + Type string `json:"type"` + Identifier map[string]string `json:"identifier"` + Password string `json:"password"` + DeviceID string `json:"device_id"` + InitialDeviceDisplayNAme string `json:"initial_device_display_name"` +} + +type LoginResponse struct { + UserID string `json:"user_id"` + AccessToken string `json:"access_token"` +} + type RegisterRequest struct { Username string `json:"username"` } diff --git a/mxlib/client.go b/mxlib/client.go index f8124d3..e382ddd 100644 --- a/mxlib/client.go +++ b/mxlib/client.go @@ -79,7 +79,9 @@ func (mx *Client) PostApiCall(endpoint string, data interface{}, response interf } func (mx *Client) DoAndParse(req *http.Request, response interface{}) error { - req.Header.Add("Authorization", "Bearer "+mx.Token) + if mx.Token != "" { + req.Header.Add("Authorization", "Bearer "+mx.Token) + } resp, err := mx.httpClient.Do(req) if err != nil { @@ -107,6 +109,28 @@ func (mx *Client) DoAndParse(req *http.Request, response interface{}) error { // ---- +func (mx *Client) PasswordLogin(username string, password string, device_id string, device_name string) (string, error) { + req := PasswordLoginRequest{ + Type: "m.login.password", + Identifier: map[string]string{ + "type": "m.id.user", + "user": username, + }, + Password: password, + DeviceID: device_id, + InitialDeviceDisplayNAme: device_name, + } + var rep LoginResponse + err := mx.PostApiCall("/_matrix/client/r0/login", &req, &rep) + if err != nil { + return "", err + } + if mx.Token == "" { + mx.Token = rep.AccessToken + } + return rep.UserID, nil +} + func (mx *Client) RegisterUser(username string) error { req := RegisterRequest{ Username: username, -- cgit v1.2.3