Files
sailpoint-cli/cmd/transform/model/models.go
2022-09-27 15:55:45 -04:00

134 lines
4.0 KiB
Go

// Copyright (c) 2021, SailPoint Technologies, Inc. All rights reserved.
package transmodel
type Transform struct {
ID string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
}
func (t Transform) TransformToColumns() []string {
return []string{t.ID, t.Name}
}
var TransformColumns = []string{"ID", "Name"}
type AttributesOfAccount struct {
AttributeName string `json:"attributeName"`
SourceName string `json:"sourceName"`
}
type AccountAttribute struct {
Type string `json:"type"`
Attributes AttributesOfAccount `json:"attributes"`
}
type AttributesOfReference struct {
Id string `json:"id"`
Input AccountAttribute `json:"input"`
}
type Reference struct {
Type string `json:"type"`
Attributes AttributesOfReference `json:"attributes"`
}
type TransformDefinition struct {
Type string `json:"type"`
Attributes interface{} `json:"attributes"`
}
type AttributeTransform struct {
IdentityAttributeName string `json:"identityAttributeName"`
TransformDefinition TransformDefinition `json:"transformDefinition"`
}
type AttributeTransformPreview struct {
AttributeName string `json:"attributeName"`
Attributes AttributesOfReference `json:"attributes"`
Type string `json:"type"`
}
type PreviewBodyImplicit struct {
AttributeTransforms []AttributeTransformPreview `json:"attributeTransforms"`
}
type PreviewBodyExplicit struct {
AttributeTransforms []map[string]interface{} `json:"attributeTransforms"`
}
type IdentityAttributeConfig struct {
AttributeTransforms []AttributeTransform `json:"attributeTransforms"`
}
type ObjectRef struct {
Type string `json:"type"`
Id string `json:"id"`
Name string `json:"name"`
}
type IdentityProfile struct {
AuthoritativeSource ObjectRef `json:"authoritativeSource"`
IdentityAttributeConfig IdentityAttributeConfig `json:"identityAttributeConfig"`
}
type PreviewAttribute struct {
Name string `json:"name"`
PreviousValue string `json:"previousValue"`
Value string `json:"value"`
}
type PreviewResponse struct {
PreviewAttributes []PreviewAttribute `json:"previewAttributes"`
}
type User struct {
Id string `json:"id"`
}
func MakeAttributesOfAccount(data interface{}) AttributesOfAccount {
m := data.(map[string]interface{})
attribute := AttributesOfAccount{}
attribute.AttributeName = m["attributeName"].(string)
attribute.SourceName = m["sourceName"].(string)
return attribute
}
func MakeAccountAttribute(data interface{}) AccountAttribute {
m := data.(map[string]interface{})
account := AccountAttribute{}
account.Type = m["type"].(string)
account.Attributes = MakeAttributesOfAccount(m["attributes"])
return account
}
func MakeReference(data interface{}) AttributesOfReference {
m := data.(map[string]interface{})
reference := AttributesOfReference{}
reference.Id = m["id"].(string)
reference.Input = MakeAccountAttribute(m["input"])
return reference
}
func MakePreviewBodyImplicit(identityAttribute string, transformName string, accountAttribute string, sourceName string) PreviewBodyImplicit {
attributeTransform := AttributeTransformPreview{}
attributeTransform.AttributeName = identityAttribute
attributeTransform.Attributes.Id = transformName
attributeTransform.Attributes.Input.Type = "accountAttribute"
attributeTransform.Attributes.Input.Attributes.AttributeName = accountAttribute
attributeTransform.Attributes.Input.Attributes.SourceName = sourceName
attributeTransform.Type = "reference"
previewBody := PreviewBodyImplicit{}
previewBody.AttributeTransforms = append(previewBody.AttributeTransforms, attributeTransform)
return previewBody
}
func MakePreviewBodyExplicit(identityAttribute string, transformData map[string]interface{}) PreviewBodyExplicit {
transformData["attributeName"] = identityAttribute
previewBody := PreviewBodyExplicit{}
previewBody.AttributeTransforms = append(previewBody.AttributeTransforms, transformData)
return previewBody
}