diff --git a/model/app.go b/model/app.go index 89d656d..7abc8ec 100644 --- a/model/app.go +++ b/model/app.go @@ -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 -} diff --git a/model/session.go b/model/session.go index 94f527b..af9e9e2 100644 --- a/model/session.go +++ b/model/session.go @@ -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 -} diff --git a/repository/appRepository.go b/repository/appRepository.go index 00ef64d..cfa7950 100644 --- a/repository/appRepository.go +++ b/repository/appRepository.go @@ -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 } diff --git a/repository/sessionRepository.go b/repository/sessionRepository.go index 6c26313..d5f399a 100644 --- a/repository/sessionRepository.go +++ b/repository/sessionRepository.go @@ -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 }