From 8c2e75df51d1a74d8bca1d3d1a423f777159ba82 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 6 May 2024 20:32:35 +0300 Subject: refactor project file structure --- internal/types/entry.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 internal/types/entry.go (limited to 'internal/types') diff --git a/internal/types/entry.go b/internal/types/entry.go new file mode 100644 index 0000000..a274e2c --- /dev/null +++ b/internal/types/entry.go @@ -0,0 +1,34 @@ +package types + +import ( + "crypto/sha256" + "encoding/json" + "fmt" +) + +type Shared struct { + Name string `json:"id"` + Is bool `json:"is,omitempty"` +} + +type Entry struct { + Body string `json:"body"` + Shared []Shared `json:"shared,omitempty"` + Epoch int `json:"epoch,omitempty"` + ID string `json:"id,omitempty"` +} + +func NewEntry(bytes []byte) (Entry, error) { + var entry Entry + if err := json.Unmarshal(bytes, &entry); err != nil { + return entry, fmt.Errorf("unable to deserialise payload: %w", err) + } + if entry.ID == "" { + entry.ID = fmt.Sprintf("%x", sha256.Sum256(bytes)) + } + return entry, nil +} + +func (e Entry) Serialize() ([]byte, error) { + return json.Marshal(e) +} -- cgit v1.2.3