github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/catalog/v1alpha1/CredentialRequestDefinition.go (about) 1 /* 2 * This file is automatically generated 3 */ 4 5 package catalog 6 7 import ( 8 "encoding/json" 9 10 apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 11 12 "github.com/Axway/agent-sdk/pkg/util/log" 13 ) 14 15 var ( 16 CredentialRequestDefinitionCtx log.ContextField = "credentialRequestDefinition" 17 18 _CredentialRequestDefinitionGVK = apiv1.GroupVersionKind{ 19 GroupKind: apiv1.GroupKind{ 20 Group: "catalog", 21 Kind: "CredentialRequestDefinition", 22 }, 23 APIVersion: "v1alpha1", 24 } 25 26 CredentialRequestDefinitionScopes = []string{"AuthorizationProfile"} 27 ) 28 29 const ( 30 CredentialRequestDefinitionResourceName = "credentialrequestdefinitions" 31 CredentialRequestDefinitionReferencesSubResourceName = "references" 32 CredentialRequestDefinitionWebhooksSubResourceName = "webhooks" 33 ) 34 35 func CredentialRequestDefinitionGVK() apiv1.GroupVersionKind { 36 return _CredentialRequestDefinitionGVK 37 } 38 39 func init() { 40 apiv1.RegisterGVK(_CredentialRequestDefinitionGVK, CredentialRequestDefinitionScopes[0], CredentialRequestDefinitionResourceName) 41 log.RegisterContextField(CredentialRequestDefinitionCtx) 42 } 43 44 // CredentialRequestDefinition Resource 45 type CredentialRequestDefinition struct { 46 apiv1.ResourceMeta 47 Owner *apiv1.Owner `json:"owner"` 48 References CredentialRequestDefinitionReferences `json:"references"` 49 Spec CredentialRequestDefinitionSpec `json:"spec"` 50 Webhooks interface{} `json:"webhooks"` 51 } 52 53 // NewCredentialRequestDefinition creates an empty *CredentialRequestDefinition 54 func NewCredentialRequestDefinition(name, scopeName string) *CredentialRequestDefinition { 55 return &CredentialRequestDefinition{ 56 ResourceMeta: apiv1.ResourceMeta{ 57 Name: name, 58 GroupVersionKind: _CredentialRequestDefinitionGVK, 59 Metadata: apiv1.Metadata{ 60 Scope: apiv1.MetadataScope{ 61 Name: scopeName, 62 Kind: CredentialRequestDefinitionScopes[0], 63 }, 64 }, 65 }, 66 } 67 } 68 69 // CredentialRequestDefinitionFromInstanceArray converts a []*ResourceInstance to a []*CredentialRequestDefinition 70 func CredentialRequestDefinitionFromInstanceArray(fromArray []*apiv1.ResourceInstance) ([]*CredentialRequestDefinition, error) { 71 newArray := make([]*CredentialRequestDefinition, 0) 72 for _, item := range fromArray { 73 res := &CredentialRequestDefinition{} 74 err := res.FromInstance(item) 75 if err != nil { 76 return make([]*CredentialRequestDefinition, 0), err 77 } 78 newArray = append(newArray, res) 79 } 80 81 return newArray, nil 82 } 83 84 // AsInstance converts a CredentialRequestDefinition to a ResourceInstance 85 func (res *CredentialRequestDefinition) AsInstance() (*apiv1.ResourceInstance, error) { 86 meta := res.ResourceMeta 87 meta.GroupVersionKind = CredentialRequestDefinitionGVK() 88 res.ResourceMeta = meta 89 90 m, err := json.Marshal(res) 91 if err != nil { 92 return nil, err 93 } 94 95 instance := apiv1.ResourceInstance{} 96 err = json.Unmarshal(m, &instance) 97 if err != nil { 98 return nil, err 99 } 100 101 return &instance, nil 102 } 103 104 // FromInstance converts a ResourceInstance to a CredentialRequestDefinition 105 func (res *CredentialRequestDefinition) FromInstance(ri *apiv1.ResourceInstance) error { 106 if ri == nil { 107 res = nil 108 return nil 109 } 110 var err error 111 rawResource := ri.GetRawResource() 112 if rawResource == nil { 113 rawResource, err = json.Marshal(ri) 114 if err != nil { 115 return err 116 } 117 } 118 err = json.Unmarshal(rawResource, res) 119 return err 120 } 121 122 // MarshalJSON custom marshaller to handle sub resources 123 func (res *CredentialRequestDefinition) MarshalJSON() ([]byte, error) { 124 m, err := json.Marshal(&res.ResourceMeta) 125 if err != nil { 126 return nil, err 127 } 128 129 var out map[string]interface{} 130 err = json.Unmarshal(m, &out) 131 if err != nil { 132 return nil, err 133 } 134 135 out["owner"] = res.Owner 136 out["references"] = res.References 137 out["spec"] = res.Spec 138 out["webhooks"] = res.Webhooks 139 140 return json.Marshal(out) 141 } 142 143 // UnmarshalJSON custom unmarshaller to handle sub resources 144 func (res *CredentialRequestDefinition) UnmarshalJSON(data []byte) error { 145 var err error 146 147 aux := &apiv1.ResourceInstance{} 148 err = json.Unmarshal(data, aux) 149 if err != nil { 150 return err 151 } 152 153 res.ResourceMeta = aux.ResourceMeta 154 res.Owner = aux.Owner 155 156 // ResourceInstance holds the spec as a map[string]interface{}. 157 // Convert it to bytes, then convert to the spec type for the resource. 158 sr, err := json.Marshal(aux.Spec) 159 if err != nil { 160 return err 161 } 162 163 err = json.Unmarshal(sr, &res.Spec) 164 if err != nil { 165 return err 166 } 167 168 // marshalling subresource References 169 if v, ok := aux.SubResources["references"]; ok { 170 sr, err = json.Marshal(v) 171 if err != nil { 172 return err 173 } 174 175 delete(aux.SubResources, "references") 176 err = json.Unmarshal(sr, &res.References) 177 if err != nil { 178 return err 179 } 180 } 181 182 // marshalling subresource Webhooks 183 if v, ok := aux.SubResources["webhooks"]; ok { 184 sr, err = json.Marshal(v) 185 if err != nil { 186 return err 187 } 188 189 delete(aux.SubResources, "webhooks") 190 err = json.Unmarshal(sr, &res.Webhooks) 191 if err != nil { 192 return err 193 } 194 } 195 196 return nil 197 } 198 199 // PluralName returns the plural name of the resource 200 func (res *CredentialRequestDefinition) PluralName() string { 201 return CredentialRequestDefinitionResourceName 202 }