Use json format for app and session repo
authorr <r@freesoftwareextremist.com>
Sat, 21 Dec 2019 09:56:18 +0000 (09:56 +0000)
committerr <r@freesoftwareextremist.com>
Sat, 21 Dec 2019 10:56:40 +0000 (10:56 +0000)
model/app.go
model/session.go
repository/appRepository.go
repository/sessionRepository.go

index 89d656d916dfb5c757f3c83b3d67bfc699388bd2..7abc8ec6b4f0da53817b0643787b9aed9ac27d0c 100644 (file)
@@ -2,7 +2,6 @@ package model
 
 import (
        "errors"
-       "strings"
 )
 
 var (
@@ -10,31 +9,13 @@ var (
 )
 
 type App struct {
-       InstanceDomain string
-       InstanceURL    string
-       ClientID       string
-       ClientSecret   string
+       InstanceDomain string `json:"instance_domain"`
+       InstanceURL    string `json:"instance_url"`
+       ClientID       string `json:"client_id"`
+       ClientSecret   string `json:"client_secret"`
 }
 
 type AppRepository interface {
        Add(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
-}
index 94f527bfdaf3ac37e96a1d9822f88ab6add042c6..af9e9e27b202654c0ade5881c8a64aea6d080813 100644 (file)
@@ -2,7 +2,6 @@ package model
 
 import (
        "errors"
-       "strings"
 )
 
 var (
@@ -10,9 +9,9 @@ var (
 )
 
 type Session struct {
-       ID             string
-       InstanceDomain string
-       AccessToken    string
+       ID             string `json:"id"`
+       InstanceDomain string `json:"instance_domain"`
+       AccessToken    string `json:"access_token"`
 }
 
 type SessionRepository interface {
@@ -24,26 +23,3 @@ 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
-}
index 00ef64d0e87b902fe4522f3c461c94e5dcd17a80..cfa79500113b9d1eae0ff5db8b1eb8fb4796677f 100644 (file)
@@ -1,6 +1,7 @@
 package repository
 
 import (
+       "encoding/json"
        "web/kv"
        "web/model"
 )
@@ -16,7 +17,11 @@ func NewAppRepository(db *kv.Database) *appRepository {
 }
 
 func (repo *appRepository) Add(a model.App) (err error) {
-       err = repo.db.Set(a.InstanceDomain, a.Marshal())
+       data, err := json.Marshal(a)
+       if err != nil {
+               return
+       }
+       err = repo.db.Set(a.InstanceDomain, data)
        return
 }
 
@@ -27,7 +32,10 @@ func (repo *appRepository) Get(instanceDomain string) (a model.App, err error) {
                return
        }
 
-       err = a.Unmarshal(instanceDomain, data)
+       err = json.Unmarshal(data, &a)
+       if err != nil {
+               return
+       }
 
        return
 }
index 6c26313b8897d2c70be6425dfda21edd28f3e47c..d5f399abd2a348894248cb9add5cd470685a7f69 100644 (file)
@@ -1,6 +1,7 @@
 package repository
 
 import (
+       "encoding/json"
        "web/kv"
        "web/model"
 )
@@ -16,7 +17,11 @@ func NewSessionRepository(db *kv.Database) *sessionRepository {
 }
 
 func (repo *sessionRepository) Add(s model.Session) (err error) {
-       err = repo.db.Set(s.ID, s.Marshal())
+       data, err := json.Marshal(s)
+       if err != nil {
+               return
+       }
+       err = repo.db.Set(s.ID, data)
        return
 }
 
@@ -27,14 +32,19 @@ func (repo *sessionRepository) Update(id string, accessToken string) (err error)
        }
 
        var s model.Session
-       err = s.Unmarshal(id, data)
+       err = json.Unmarshal(data, &s)
        if err != nil {
                return
        }
 
        s.AccessToken = accessToken
 
-       return repo.db.Set(id, s.Marshal())
+       data, err = json.Marshal(s)
+       if err != nil {
+               return
+       }
+
+       return repo.db.Set(id, data)
 }
 
 func (repo *sessionRepository) Get(id string) (s model.Session, err error) {
@@ -44,7 +54,10 @@ func (repo *sessionRepository) Get(id string) (s model.Session, err error) {
                return
        }
 
-       err = s.Unmarshal(id, data)
+       err = json.Unmarshal(data, &s)
+       if err != nil {
+               return
+       }
 
        return
 }