Skip to content

Commit

Permalink
Add RoleEligibilityScheduleRequestClient
Browse files Browse the repository at this point in the history
  • Loading branch information
JonasBak committed Jan 16, 2023
1 parent c9e50bb commit 4964d45
Show file tree
Hide file tree
Showing 2 changed files with 129 additions and 0 deletions.
11 changes: 11 additions & 0 deletions msgraph/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -1759,3 +1759,14 @@ type UserFlowAttribute struct {
UserFlowAttributeType *string `json:"userFlowAttributeType,omitempty"`
DataType *UserflowAttributeDataType `json:"dataType,omitempty"`
}

type UnifiedRoleEligibilityScheduleRequest struct {
DirectoryObject

Action *string `json:"action,omitempty"`
DirectoryScopeId *string `json:"directoryScopeId,omitempty"`
Justification *string `json:"justification,omitempty"`
PrincipalId *string `json:"principalId,omitempty"`
RoleDefinitionId *string `json:"roleDefinitionId,omitempty"`
ScheduleInfo *interface{} `json:"scheduleInfo,omitempty"`
}
118 changes: 118 additions & 0 deletions msgraph/role_eligibility_schedule_request.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package msgraph

import (
"context"
"encoding/json"
"fmt"
"io"
"net/http"

"github.com/manicminer/hamilton/odata"
)

var actionAdminAssign string = "adminAssign"
var actionAdminRemove string = "adminRemove"

// RoleEligibilityScheduleRequestClient performs operations on RoleEligibilityScheduleRequests.
type RoleEligibilityScheduleRequestClient struct {
BaseClient Client
}

// NewRoleEligibilityScheduleRequest returns a new RoleEligibilityScheduleRequestClient
func NewRoleEligibilityScheduleRequestClient(tenantId string) *RoleEligibilityScheduleRequestClient {
return &RoleEligibilityScheduleRequestClient{
BaseClient: NewClient(Version10, tenantId),
}
}

// Get retrieves a UnifiedRoleEligibilityScheduleRequest
func (c *RoleEligibilityScheduleRequestClient) Get(ctx context.Context, id string, query odata.Query) (*UnifiedRoleEligibilityScheduleRequest, int, error) {
resp, status, _, err := c.BaseClient.Get(ctx, GetHttpRequestInput{
OData: query,
ValidStatusCodes: []int{http.StatusOK},
Uri: Uri{
Entity: fmt.Sprintf("/roleManagement/directory/roleEligibilityScheduleRequests/%s", id),
},
})
if err != nil {
return nil, status, fmt.Errorf("RoleEligibilityScheduleRequestClient.BaseClient.Get(): %v", err)
}

defer resp.Body.Close()
respBody, err := io.ReadAll(resp.Body)
if err != nil {
return nil, status, fmt.Errorf("io.ReadAll(): %v", err)
}

var dirRole UnifiedRoleEligibilityScheduleRequest
if err := json.Unmarshal(respBody, &dirRole); err != nil {
return nil, status, fmt.Errorf("json.Unmarshal(): %v", err)
}

return &dirRole, status, nil
}

// Create creates a new UnifiedRoleEligibilityScheduleRequest.
func (c *RoleEligibilityScheduleRequestClient) Create(ctx context.Context, resr UnifiedRoleEligibilityScheduleRequest) (*UnifiedRoleEligibilityScheduleRequest, int, error) {
var status int

resr.Action = &actionAdminAssign
body, err := json.Marshal(resr)
if err != nil {
return nil, status, fmt.Errorf("json.Marshal(): %v", err)
}

resp, status, _, err := c.BaseClient.Post(ctx, PostHttpRequestInput{
Body: body,
ValidStatusCodes: []int{http.StatusCreated},
Uri: Uri{
Entity: "/roleManagement/directory/roleEligibilityScheduleRequests",
},
})
if err != nil {
return nil, status, fmt.Errorf("RoleEligibilityScheduleRequestClient.BaseClient.Post(): %v", err)
}

defer resp.Body.Close()
respBody, err := io.ReadAll(resp.Body)
if err != nil {
return nil, status, fmt.Errorf("io.ReadAll(): %v", err)
}

var newRoleAssignment UnifiedRoleEligibilityScheduleRequest
if err := json.Unmarshal(respBody, &newRoleAssignment); err != nil {
return nil, status, fmt.Errorf("json.Unmarshal(): %v", err)
}

return &newRoleAssignment, status, nil
}

// Delete removes a UnifiedRoleEligibilityScheduleRequest.
func (c *RoleEligibilityScheduleRequestClient) Delete(ctx context.Context, id string) (int, error) {
resr, status, err := c.Get(ctx, id, odata.Query{})
if err != nil {
return status, fmt.Errorf("RoleEligibilityScheduleRequestClient.Get(): %v", err)
}
resrBody := UnifiedRoleEligibilityScheduleRequest{
Action: &actionAdminRemove,
RoleDefinitionId: resr.RoleDefinitionId,
DirectoryScopeId: resr.DirectoryScopeId,
PrincipalId: resr.PrincipalId,
}
body, err := json.Marshal(resrBody)
if err != nil {
return status, fmt.Errorf("json.Marshal(): %v", err)
}
_, status, _, err = c.BaseClient.Post(ctx, PostHttpRequestInput{
Body: body,
ValidStatusCodes: []int{http.StatusCreated},
Uri: Uri{
Entity: "/roleManagement/directory/roleEligibilityScheduleRequests",
},
})
if err != nil {
return status, fmt.Errorf("RoleAssignments.BaseClient.Get(): %v", err)
}

return status, nil
}

0 comments on commit 4964d45

Please sign in to comment.