Compare commits
No commits in common. "ad48890a9fa61c5ffe473f35d96275988582d7f4" and "47d39a1c6fb2c2fb74772107d9a3e55efaa9681d" have entirely different histories.
ad48890a9f
...
47d39a1c6f
@ -68,7 +68,7 @@ type Handlers struct {
|
|||||||
|
|
||||||
func NewHandlers(parser *asm.FlagParser, pe *persist.Persister, userdataStore db.Db) (*Handlers, error) {
|
func NewHandlers(parser *asm.FlagParser, pe *persist.Persister, userdataStore db.Db) (*Handlers, error) {
|
||||||
userDb := utils.UserDataStore{
|
userDb := utils.UserDataStore{
|
||||||
Db: userdataStore,
|
Store: userdataStore,
|
||||||
}
|
}
|
||||||
if pe == nil {
|
if pe == nil {
|
||||||
return nil, fmt.Errorf("cannot create handler with nil persister")
|
return nil, fmt.Errorf("cannot create handler with nil persister")
|
||||||
@ -78,7 +78,7 @@ func NewHandlers(parser *asm.FlagParser, pe *persist.Persister, userdataStore db
|
|||||||
}
|
}
|
||||||
h := &Handlers{
|
h := &Handlers{
|
||||||
pe: pe,
|
pe: pe,
|
||||||
userdataStore: &userDb,
|
userdataStore: userDb,
|
||||||
flagManager: parser,
|
flagManager: parser,
|
||||||
accountService: &server.AccountService{},
|
accountService: &server.AccountService{},
|
||||||
}
|
}
|
||||||
@ -254,7 +254,7 @@ func (h *Handlers) VerifyPin(ctx context.Context, sym string, input []byte) (res
|
|||||||
}
|
}
|
||||||
|
|
||||||
//AccountPin, _ := utils.ReadEntry(ctx, h.userdataStore, sessionId, utils.DATA_ACCOUNT_PIN)
|
//AccountPin, _ := utils.ReadEntry(ctx, h.userdataStore, sessionId, utils.DATA_ACCOUNT_PIN)
|
||||||
store := h.userdataStore
|
store := h.userdataStore.(utils.UserDataStore)
|
||||||
AccountPin, err := store.ReadEntry(ctx, sessionId, utils.DATA_ACCOUNT_PIN)
|
AccountPin, err := store.ReadEntry(ctx, sessionId, utils.DATA_ACCOUNT_PIN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
@ -523,7 +523,7 @@ func (h *Handlers) CheckAccountStatus(ctx context.Context, sym string, input []b
|
|||||||
if !ok {
|
if !ok {
|
||||||
return res, fmt.Errorf("missing session")
|
return res, fmt.Errorf("missing session")
|
||||||
}
|
}
|
||||||
store := h.userdataStore
|
store := h.userdataStore.(utils.UserDataStore)
|
||||||
trackingId, err := store.ReadEntry(ctx, sessionId, utils.DATA_TRACKING_ID)
|
trackingId, err := store.ReadEntry(ctx, sessionId, utils.DATA_TRACKING_ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
@ -610,7 +610,7 @@ func (h *Handlers) CheckBalance(ctx context.Context, sym string, input []byte) (
|
|||||||
return res, fmt.Errorf("missing session")
|
return res, fmt.Errorf("missing session")
|
||||||
}
|
}
|
||||||
|
|
||||||
store := h.userdataStore
|
store := h.userdataStore.(utils.UserDataStore)
|
||||||
publicKey, err := store.ReadEntry(ctx, sessionId, utils.DATA_PUBLIC_KEY)
|
publicKey, err := store.ReadEntry(ctx, sessionId, utils.DATA_PUBLIC_KEY)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
@ -862,7 +862,7 @@ func (h *Handlers) QuitWithBalance(ctx context.Context, sym string, input []byte
|
|||||||
l := gotext.NewLocale(translationDir, code)
|
l := gotext.NewLocale(translationDir, code)
|
||||||
l.AddDomain("default")
|
l.AddDomain("default")
|
||||||
|
|
||||||
store := h.userdataStore
|
store := h.userdataStore.(utils.UserDataStore)
|
||||||
publicKey, err := store.ReadEntry(ctx, sessionId, utils.DATA_PUBLIC_KEY)
|
publicKey, err := store.ReadEntry(ctx, sessionId, utils.DATA_PUBLIC_KEY)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
|
@ -3,16 +3,28 @@ package mocks
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"git.defalsify.org/vise.git/db"
|
"git.defalsify.org/vise.git/lang"
|
||||||
"git.grassecon.net/urdt/ussd/internal/utils"
|
"git.grassecon.net/urdt/ussd/internal/utils"
|
||||||
"github.com/stretchr/testify/mock"
|
"github.com/stretchr/testify/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MockUserDataStore struct {
|
type MockUserDataStore struct {
|
||||||
db.Db
|
|
||||||
mock.Mock
|
mock.Mock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) SetPrefix(prefix uint8) {
|
||||||
|
m.Called(prefix)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) SetSession(sessionId string) {
|
||||||
|
m.Called(sessionId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) Get(ctx context.Context, key []byte) ([]byte, error) {
|
||||||
|
args := m.Called(ctx, key)
|
||||||
|
return args.Get(0).([]byte), args.Error(1)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MockUserDataStore) ReadEntry(ctx context.Context, sessionId string, typ utils.DataTyp) ([]byte, error) {
|
func (m *MockUserDataStore) ReadEntry(ctx context.Context, sessionId string, typ utils.DataTyp) ([]byte, error) {
|
||||||
args := m.Called(ctx, sessionId, typ)
|
args := m.Called(ctx, sessionId, typ)
|
||||||
return args.Get(0).([]byte), args.Error(1)
|
return args.Get(0).([]byte), args.Error(1)
|
||||||
@ -22,3 +34,36 @@ func (m *MockUserDataStore) WriteEntry(ctx context.Context, sessionId string, ty
|
|||||||
args := m.Called(ctx, sessionId, typ, value)
|
args := m.Called(ctx, sessionId, typ, value)
|
||||||
return args.Error(0)
|
return args.Error(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) Prefix() uint8 {
|
||||||
|
args := m.Called()
|
||||||
|
return args.Get(0).(uint8)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) Safe() bool {
|
||||||
|
args := m.Called()
|
||||||
|
return args.Get(0).(bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) SetLanguage(language *lang.Language) {
|
||||||
|
m.Called(language)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) SetLock(uint8, bool) error {
|
||||||
|
args := m.Called()
|
||||||
|
return args.Error(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) Connect(ctx context.Context, connectionStr string) error {
|
||||||
|
args := m.Called(ctx, connectionStr)
|
||||||
|
return args.Error(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockUserDataStore) Put(ctx context.Context, key, value []byte) error {
|
||||||
|
args := m.Called(ctx, key, value)
|
||||||
|
return args.Error(0)
|
||||||
|
}
|
||||||
|
func (m *MockUserDataStore) Close() error {
|
||||||
|
args := m.Called(nil)
|
||||||
|
return args.Error(0)
|
||||||
|
}
|
||||||
|
44
internal/utils/account_utils.go
Normal file
44
internal/utils/account_utils.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
|
"git.defalsify.org/vise.git/db"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AccountFileHandler struct {
|
||||||
|
store db.Db
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewAccountFileHandler(store db.Db) *AccountFileHandler {
|
||||||
|
return &AccountFileHandler{
|
||||||
|
store: store,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (afh *AccountFileHandler) ReadAccountData(ctx context.Context, sessionId string) (map[string]string, error) {
|
||||||
|
var accountData map[string]string
|
||||||
|
jsonData, err := ReadEntry(ctx, afh.store, sessionId, DATA_ACCOUNT)
|
||||||
|
if err != nil {
|
||||||
|
return nil,err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(jsonData, &accountData)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return accountData, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (afh *AccountFileHandler) WriteAccountData(ctx context.Context, sessionId string, accountData map[string]string) error {
|
||||||
|
_, err := json.Marshal(accountData)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (afh *AccountFileHandler) EnsureFileExists() error {
|
||||||
|
return nil
|
||||||
|
}
|
@ -4,29 +4,78 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"git.defalsify.org/vise.git/db"
|
"git.defalsify.org/vise.git/db"
|
||||||
|
"git.defalsify.org/vise.git/lang"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DataStore interface {
|
type DataStore interface {
|
||||||
db.Db
|
SetPrefix(prefix uint8)
|
||||||
|
SetSession(sessionId string)
|
||||||
|
Get(ctx context.Context, key []byte) ([]byte, error)
|
||||||
ReadEntry(ctx context.Context, sessionId string, typ DataTyp) ([]byte, error)
|
ReadEntry(ctx context.Context, sessionId string, typ DataTyp) ([]byte, error)
|
||||||
WriteEntry(ctx context.Context, sessionId string, typ DataTyp, value []byte) error
|
WriteEntry(ctx context.Context, sessionId string, typ DataTyp, value []byte) error
|
||||||
|
Connect(ctx context.Context, connStr string) error
|
||||||
|
SetLanguage(*lang.Language)
|
||||||
|
Close() error
|
||||||
|
Prefix() uint8
|
||||||
|
Put(ctx context.Context, key []byte, val []byte) error
|
||||||
|
Safe() bool
|
||||||
|
SetLock(typ uint8, locked bool) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserDataStore struct {
|
type UserDataStore struct {
|
||||||
db.Db
|
Store db.Db
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) SetPrefix(prefix uint8) {
|
||||||
|
store.Store.SetPrefix(prefix)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) SetLanguage(lang *lang.Language) {
|
||||||
|
store.Store.SetLanguage(lang)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) SetLock(typ uint8, locked bool) error {
|
||||||
|
return store.Store.SetLock(typ, locked)
|
||||||
|
}
|
||||||
|
func (store UserDataStore) Safe() bool {
|
||||||
|
return store.Store.Safe()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) Put(ctx context.Context, key []byte, val []byte) error {
|
||||||
|
return store.Store.Put(ctx, key, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) Connect(ctx context.Context, connectionStr string) error {
|
||||||
|
return store.Store.Connect(ctx, connectionStr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) Close() error {
|
||||||
|
return store.Store.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) Prefix() uint8 {
|
||||||
|
return store.Store.Prefix()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) SetSession(sessionId string) {
|
||||||
|
store.Store.SetSession(sessionId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store UserDataStore) Get(ctx context.Context, key []byte) ([]byte, error) {
|
||||||
|
return store.Store.Get(ctx, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadEntry retrieves an entry from the store based on the provided parameters.
|
// ReadEntry retrieves an entry from the store based on the provided parameters.
|
||||||
func (store *UserDataStore) ReadEntry(ctx context.Context, sessionId string, typ DataTyp) ([]byte, error) {
|
func (store UserDataStore) ReadEntry(ctx context.Context, sessionId string, typ DataTyp) ([]byte, error) {
|
||||||
store.SetPrefix(db.DATATYPE_USERDATA)
|
store.Store.SetPrefix(db.DATATYPE_USERDATA)
|
||||||
store.SetSession(sessionId)
|
store.Store.SetSession(sessionId)
|
||||||
k := PackKey(typ, []byte(sessionId))
|
k := PackKey(typ, []byte(sessionId))
|
||||||
return store.Get(ctx, k)
|
return store.Get(ctx, k)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *UserDataStore) WriteEntry(ctx context.Context, sessionId string, typ DataTyp, value []byte) error {
|
func (store UserDataStore) WriteEntry(ctx context.Context, sessionId string, typ DataTyp, value []byte) error {
|
||||||
store.SetPrefix(db.DATATYPE_USERDATA)
|
store.Store.SetPrefix(db.DATATYPE_USERDATA)
|
||||||
store.SetSession(sessionId)
|
store.Store.SetSession(sessionId)
|
||||||
k := PackKey(typ, []byte(sessionId))
|
k := PackKey(typ, []byte(sessionId))
|
||||||
return store.Put(ctx, k, value)
|
return store.Store.Put(ctx, k, value)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user