Skip to content

Commit 113e66a

Browse files
authored
Merge pull request #105 from onelogin/feature/update-role-api
Improve Roles API with context support and consistent parameters
2 parents cdd6571 + f050b67 commit 113e66a

File tree

5 files changed

+72
-15
lines changed

5 files changed

+72
-15
lines changed

changelog.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog
22

3+
## [4.5.0]
4+
5+
### Improved
6+
- Added context support for roles API methods:
7+
- `CreateRoleWithContext`
8+
- `GetRolesWithContext`
9+
- `GetRoleByIDWithContext`
10+
- `UpdateRoleWithContext`
11+
- `DeleteRoleWithContext`
12+
- Improved `UpdateRole` function to use pointer parameter for consistency with other API methods
13+
- Removed unused queryParams parameter from DeleteRole function
14+
- Updated Role model documentation to match the actual structure
15+
316
## [4.4.0]
417

518
### Added

docs/models.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,15 @@ type Privilege struct {
9494
9595
## [Role](../pkg/onelogin/models/role.go)
9696
97-
The `Role` model represents a role within the OneLogin platform. It contains information such as the role's name, description, and any associated privileges.
97+
The `Role` model represents a role within the OneLogin platform. It contains information such as the role's name and associated users, admins, and apps.
9898
9999
```go
100100
type Role struct {
101-
ID int64 `json:"id"`
102-
Name string `json:"name"`
103-
// ...
101+
ID *int32 `json:"id,omitempty"`
102+
Name *string `json:"name,omitempty"`
103+
Admins []int32 `json:"admins,omitempty"`
104+
Apps []int32 `json:"apps,omitempty"`
105+
Users []int32 `json:"users,omitempty"`
104106
}
105107
```
106108

docs/usage_examples.md

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,28 @@ func main() {
5252
fmt.Println(err)
5353
}
5454

55-
role, err := client.CreateRole(models.Role{
55+
// Create a role
56+
role, err := client.CreateRole(&models.Role{
5657
Name: &name,
5758
})
5859
if err != nil {
5960
fmt.Println(err)
6061
}
61-
fmt.Printf("%+v\n", role)
62+
fmt.Printf("Created role: %+v\n", role)
63+
64+
// Extract role ID for updates
65+
roleResp, _ := role.(map[string]interface{})
66+
roleID := int(roleResp["id"].(float64))
67+
68+
// Update a role - the name field is optional for updates
69+
updatedRole, err := client.UpdateRole(roleID, &models.Role{
70+
// Add users to the role
71+
Users: []int32{123456789},
72+
})
73+
if err != nil {
74+
fmt.Println(err)
75+
}
76+
fmt.Printf("Updated role: %+v\n", updatedRole)
6277
}
6378
```
6479

pkg/onelogin/roles.go

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package onelogin
22

33
import (
4+
"context"
5+
46
mod "github.com/onelogin/onelogin-go-sdk/v4/pkg/onelogin/models"
57
utl "github.com/onelogin/onelogin-go-sdk/v4/pkg/onelogin/utilities"
68
)
@@ -10,60 +12,85 @@ var (
1012
)
1113

1214
func (sdk *OneloginSDK) CreateRole(role *mod.Role) (interface{}, error) {
15+
return sdk.CreateRoleWithContext(context.Background(), role)
16+
}
17+
18+
// CreateRoleWithContext creates a role using the provided context
19+
func (sdk *OneloginSDK) CreateRoleWithContext(ctx context.Context, role *mod.Role) (interface{}, error) {
1320
p, err := utl.BuildAPIPath(RolePath)
1421
if err != nil {
1522
return nil, err
1623
}
17-
resp, err := sdk.Client.Post(&p, role)
24+
resp, err := sdk.Client.PostWithContext(ctx, &p, role)
1825
if err != nil {
1926
return nil, err
2027
}
2128
return utl.CheckHTTPResponse(resp)
2229
}
2330

24-
// ListRoles
31+
// GetRoles retrieves a list of roles
2532
func (sdk *OneloginSDK) GetRoles(queryParams mod.Queryable) (interface{}, error) {
33+
return sdk.GetRolesWithContext(context.Background(), queryParams)
34+
}
35+
36+
// GetRolesWithContext retrieves a list of roles using the provided context
37+
func (sdk *OneloginSDK) GetRolesWithContext(ctx context.Context, queryParams mod.Queryable) (interface{}, error) {
2638
p, err := utl.BuildAPIPath(RolePath)
2739
if err != nil {
2840
return nil, err
2941
}
30-
resp, err := sdk.Client.Get(&p, queryParams)
42+
resp, err := sdk.Client.GetWithContext(ctx, &p, queryParams)
3143
if err != nil {
3244
return nil, err
3345
}
3446
return utl.CheckHTTPResponse(resp)
3547
}
3648

3749
func (sdk *OneloginSDK) GetRoleByID(id int, queryParams mod.Queryable) (interface{}, error) {
50+
return sdk.GetRoleByIDWithContext(context.Background(), id, queryParams)
51+
}
52+
53+
// GetRoleByIDWithContext retrieves a role by ID using the provided context
54+
func (sdk *OneloginSDK) GetRoleByIDWithContext(ctx context.Context, id int, queryParams mod.Queryable) (interface{}, error) {
3855
p, err := utl.BuildAPIPath(RolePath, id)
3956
if err != nil {
4057
return nil, err
4158
}
42-
resp, err := sdk.Client.Get(&p, queryParams)
59+
resp, err := sdk.Client.GetWithContext(ctx, &p, queryParams)
4360
if err != nil {
4461
return nil, err
4562
}
4663
return utl.CheckHTTPResponse(resp)
4764
}
4865

49-
func (sdk *OneloginSDK) UpdateRole(id int, role mod.Role, queryParams map[string]string) (interface{}, error) {
66+
func (sdk *OneloginSDK) UpdateRole(id int, role *mod.Role) (interface{}, error) {
67+
return sdk.UpdateRoleWithContext(context.Background(), id, role)
68+
}
69+
70+
// UpdateRoleWithContext updates a role using the provided context
71+
func (sdk *OneloginSDK) UpdateRoleWithContext(ctx context.Context, id int, role *mod.Role) (interface{}, error) {
5072
p, err := utl.BuildAPIPath(RolePath, id)
5173
if err != nil {
5274
return nil, err
5375
}
54-
resp, err := sdk.Client.Put(&p, role)
76+
resp, err := sdk.Client.PutWithContext(ctx, &p, role)
5577
if err != nil {
5678
return nil, err
5779
}
5880
return utl.CheckHTTPResponse(resp)
5981
}
6082

61-
func (sdk *OneloginSDK) DeleteRole(id int, queryParams map[string]string) (interface{}, error) {
83+
func (sdk *OneloginSDK) DeleteRole(id int) (interface{}, error) {
84+
return sdk.DeleteRoleWithContext(context.Background(), id)
85+
}
86+
87+
// DeleteRoleWithContext deletes a role using the provided context
88+
func (sdk *OneloginSDK) DeleteRoleWithContext(ctx context.Context, id int) (interface{}, error) {
6289
p, err := utl.BuildAPIPath(RolePath, id)
6390
if err != nil {
6491
return nil, err
6592
}
66-
resp, err := sdk.Client.Delete(&p)
93+
resp, err := sdk.Client.DeleteWithContext(ctx, &p)
6794
if err != nil {
6895
return nil, err
6996
}

pkg/onelogin/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package onelogin
22

3-
const Version = "4.4.0"
3+
const Version = "4.5.0"

0 commit comments

Comments
 (0)