From 09692929f068977bee12821b48bb29cca7895790 Mon Sep 17 00:00:00 2001 From: Kevin Bintzik Date: Fri, 17 Jun 2022 11:31:02 +0200 Subject: [PATCH] add GetEvents endpoint --- client.go | 12 +++++++++--- gopherscloak.go | 2 +- models.go | 11 +++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/client.go b/client.go index f1e4f2d..964e2f5 100644 --- a/client.go +++ b/client.go @@ -432,7 +432,7 @@ func (g *gopherCloak) LogoutAllUserSessions(accessToken string, realm string, us return nil } -func (g *gopherCloak) GetEvents(accessToken string, realm, query string) ([]byte, error) { +func (g *gopherCloak) GetEvents(accessToken string, realm, query string) ([]*Event, error) { if len(query) > 0 && string(query[0]) != "?" { query = "?" + query } @@ -448,8 +448,14 @@ func (g *gopherCloak) GetEvents(accessToken string, realm, query string) ([]byte return nil, err } defer response.Body.Close() - content, _ := ioutil.ReadAll(response.Body) - return content, g.checkForErrorsInResponse(response) + body, _ := ioutil.ReadAll(response.Body) + events := make([]*Event, 0) + err = json.Unmarshal(body, &events) + if err != nil { + return nil, err + } + + return events, g.checkForErrorsInResponse(response) } // =============== diff --git a/gopherscloak.go b/gopherscloak.go index ba2256b..a83a12a 100644 --- a/gopherscloak.go +++ b/gopherscloak.go @@ -53,5 +53,5 @@ type GophersCloak interface { // GetGroupMembers get a list of users of group with id in realm GetGroupMembers(accessToken string, realm, groupID string) ([]*User, error) // GetEvents Returns all events, or filters them based on URL query parameters listed here - GetEvents(accessToken string, realm, query string) ([]byte, error) + GetEvents(accessToken string, realm, query string) ([]*Event, error) } diff --git a/models.go b/models.go index 805e6b9..d42a8a2 100644 --- a/models.go +++ b/models.go @@ -127,3 +127,14 @@ type Group struct { ClientRoles map[string][]string `json:"clientRoles,omitempty"` RealmRoles []string `json:"realmRoles,omitempty"` } + +type Event struct { + Time int64 `json:"time"` + Type string `json:"type"` + RealmId string `json:"realmId"` + ClientId string `json:"clientId"` + UserId string `json:"userId"` + SessionId string `json:"sessionId"` + IpAddress string `json:"ipAddress"` + Details string `json:"details"` +}