summaryrefslogtreecommitdiff
path: root/external/evcli/identities.go
diff options
context:
space:
mode:
Diffstat (limited to 'external/evcli/identities.go')
-rw-r--r--external/evcli/identities.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/external/evcli/identities.go b/external/evcli/identities.go
new file mode 100644
index 0000000..f89ae1b
--- /dev/null
+++ b/external/evcli/identities.go
@@ -0,0 +1,73 @@
+package evcli
+
+import (
+ "encoding/json"
+ "fmt"
+ "time"
+
+ "github.com/exograd/eventline/pkg/eventline"
+ "github.com/exograd/eventline/pkg/utils"
+)
+
+type IdentityPage struct {
+ Elements Identities `json:"elements"`
+ Previous *eventline.Cursor `json:"previous,omitempty"`
+ Next *eventline.Cursor `json:"next,omitempty"`
+}
+
+type Identity struct {
+ Id eventline.Id `json:"id"`
+ ProjectId *eventline.Id `json:"project_id"`
+ Name string `json:"name"`
+ Status eventline.IdentityStatus `json:"status"`
+ ErrorMessage string `json:"error_message,omitempty"`
+ CreationTime time.Time `json:"creation_time"`
+ UpdateTime time.Time `json:"update_time"`
+ LastUseTime *time.Time `json:"last_use_time,omitempty"`
+ RefreshTime *time.Time `json:"refresh_time,omitempty"`
+ Connector string `json:"connector"`
+ Type string `json:"type"`
+ Data eventline.IdentityData `json:"-"`
+ RawData json.RawMessage `json:"data"`
+}
+
+type Identities []*Identity
+
+func (i *Identity) SortKey(sort string) (key string) {
+ switch sort {
+ case "id":
+ key = i.Id.String()
+ case "name":
+ key = i.Name
+ default:
+ utils.Panicf("unknown identity sort %q", sort)
+ }
+
+ return
+}
+
+func (pi *Identity) MarshalJSON() ([]byte, error) {
+ type Identity2 Identity
+
+ i := Identity2(*pi)
+ data, err := json.Marshal(i.Data)
+ if err != nil {
+ return nil, fmt.Errorf("cannot encode data: %w", err)
+ }
+
+ i.RawData = data
+
+ return json.Marshal(i)
+}
+
+func (pi *Identity) UnmarshalJSON(data []byte) error {
+ type Identity2 Identity
+
+ i := Identity2(*pi)
+ if err := json.Unmarshal(data, &i); err != nil {
+ return err
+ }
+
+ *pi = Identity(i)
+ return nil
+}