aboutsummaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
Diffstat (limited to 'model')
-rw-r--r--model/app.go33
-rw-r--r--model/session.go34
2 files changed, 57 insertions, 10 deletions
diff --git a/model/app.go b/model/app.go
index 52ebdf5..89d656d 100644
--- a/model/app.go
+++ b/model/app.go
@@ -1,19 +1,40 @@
package model
-import "errors"
+import (
+ "errors"
+ "strings"
+)
var (
ErrAppNotFound = errors.New("app not found")
)
type App struct {
- InstanceURL string
- ClientID string
- ClientSecret string
+ InstanceDomain string
+ InstanceURL string
+ ClientID string
+ ClientSecret string
}
type AppRepository interface {
Add(app App) (err error)
- Update(instanceURL string, clientID string, clientSecret string) (err error)
- Get(instanceURL string) (app App, err error)
+ Get(instanceDomain string) (app App, err error)
+}
+
+func (a *App) Marshal() []byte {
+ str := a.InstanceURL + "\n" + a.ClientID + "\n" + a.ClientSecret
+ return []byte(str)
+}
+
+func (a *App) Unmarshal(instanceDomain string, data []byte) error {
+ str := string(data)
+ lines := strings.Split(str, "\n")
+ if len(lines) != 3 {
+ return errors.New("invalid data")
+ }
+ a.InstanceDomain = instanceDomain
+ a.InstanceURL = lines[0]
+ a.ClientID = lines[1]
+ a.ClientSecret = lines[2]
+ return nil
}
diff --git a/model/session.go b/model/session.go
index 43628ee..94f527b 100644
--- a/model/session.go
+++ b/model/session.go
@@ -1,15 +1,18 @@
package model
-import "errors"
+import (
+ "errors"
+ "strings"
+)
var (
ErrSessionNotFound = errors.New("session not found")
)
type Session struct {
- ID string
- InstanceURL string
- AccessToken string
+ ID string
+ InstanceDomain string
+ AccessToken string
}
type SessionRepository interface {
@@ -21,3 +24,26 @@ type SessionRepository interface {
func (s Session) IsLoggedIn() bool {
return len(s.AccessToken) > 0
}
+
+func (s *Session) Marshal() []byte {
+ str := s.InstanceDomain + "\n" + s.AccessToken
+ return []byte(str)
+}
+
+func (s *Session) Unmarshal(id string, data []byte) error {
+ str := string(data)
+ lines := strings.Split(str, "\n")
+
+ size := len(lines)
+ if size == 1 {
+ s.InstanceDomain = lines[0]
+ } else if size == 2 {
+ s.InstanceDomain = lines[0]
+ s.AccessToken = lines[1]
+ } else {
+ return errors.New("invalid data")
+ }
+
+ s.ID = id
+ return nil
+}