@@ -2,13 +2,14 @@ package common
22
33import (
44 "context"
5+ "encoding/json"
56 "errors"
67 "fmt"
78 "io/ioutil"
89 "net/http"
910)
1011
11- func (client * sysdigCommonClient ) GetUserById (ctx context.Context , id int ) (u User , err error ) {
12+ func (client * sysdigCommonClient ) GetUserById (ctx context.Context , id int ) (u * User , err error ) {
1213 response , err := client .doSysdigCommonRequest (ctx , http .MethodGet , client .GetUserUrl (id ), nil )
1314 if err != nil {
1415 return
@@ -22,12 +23,43 @@ func (client *sysdigCommonClient) GetUserById(ctx context.Context, id int) (u Us
2223 return
2324 }
2425
25- u = UserFromJSON (body )
26+ user := UserFromJSON (body )
27+ return & user , nil
28+ }
29+
30+ func (client * sysdigCommonClient ) GetUserByEmail (ctx context.Context , email string ) (u * User , err error ) {
31+ response , err := client .doSysdigCommonRequest (ctx , http .MethodGet , client .GetUsersUrl (), nil )
32+ if err != nil {
33+ return
34+ }
35+ defer response .Body .Close ()
36+
37+ body , _ := ioutil .ReadAll (response .Body )
38+
39+ if response .StatusCode != http .StatusOK {
40+ err = errors .New (response .Status )
41+ return
42+ }
43+
44+ var userList struct {
45+ Users []User `json:"users"`
46+ }
47+
48+ err = json .Unmarshal (body , & userList )
49+ if err != nil {
50+ return
51+ }
52+
53+ for _ , user := range userList .Users {
54+ if user .Email == email {
55+ return & user , nil
56+ }
57+ }
2658
27- return
59+ return nil , fmt . Errorf ( "user not found for the given email" )
2860}
2961
30- func (client * sysdigCommonClient ) CreateUser (ctx context.Context , uRequest User ) (u User , err error ) {
62+ func (client * sysdigCommonClient ) CreateUser (ctx context.Context , uRequest * User ) (u * User , err error ) {
3163 response , err := client .doSysdigCommonRequest (ctx , http .MethodPost , client .GetUsersUrl (), uRequest .ToJSON ())
3264
3365 if err != nil {
@@ -42,11 +74,11 @@ func (client *sysdigCommonClient) CreateUser(ctx context.Context, uRequest User)
4274 return
4375 }
4476
45- u = UserFromJSON (body )
46- return
77+ user : = UserFromJSON (body )
78+ return & user , nil
4779}
4880
49- func (client * sysdigCommonClient ) UpdateUser (ctx context.Context , uRequest User ) (u User , err error ) {
81+ func (client * sysdigCommonClient ) UpdateUser (ctx context.Context , uRequest * User ) (u * User , err error ) {
5082 response , err := client .doSysdigCommonRequest (ctx , http .MethodPut , client .GetUserUrl (uRequest .ID ), uRequest .ToJSON ())
5183 if err != nil {
5284 return
@@ -60,8 +92,8 @@ func (client *sysdigCommonClient) UpdateUser(ctx context.Context, uRequest User)
6092 return
6193 }
6294
63- u = UserFromJSON (body )
64- return
95+ user : = UserFromJSON (body )
96+ return & user , nil
6597}
6698
6799func (client * sysdigCommonClient ) DeleteUser (ctx context.Context , id int ) error {
@@ -77,7 +109,7 @@ func (client *sysdigCommonClient) DeleteUser(ctx context.Context, id int) error
77109 return nil
78110}
79111
80- func (client * sysdigCommonClient ) GetCurrentUser (ctx context.Context ) (u User , err error ) {
112+ func (client * sysdigCommonClient ) GetCurrentUser (ctx context.Context ) (u * User , err error ) {
81113 response , err := client .doSysdigCommonRequest (ctx , http .MethodGet , client .GetCurrentUserUrl (), nil )
82114 if err != nil {
83115 return
@@ -90,8 +122,8 @@ func (client *sysdigCommonClient) GetCurrentUser(ctx context.Context) (u User, e
90122 }
91123 body , _ := ioutil .ReadAll (response .Body )
92124
93- u = UserFromJSON (body )
94- return
125+ user : = UserFromJSON (body )
126+ return & user , nil
95127}
96128
97129func (client * sysdigCommonClient ) GetUsersUrl () string {
0 commit comments