Code refactor #66
| @ -10,15 +10,12 @@ import ( | |||||||
| 	"syscall" | 	"syscall" | ||||||
| 
 | 
 | ||||||
| 	"git.defalsify.org/vise.git/asm" | 	"git.defalsify.org/vise.git/asm" | ||||||
| 	"git.defalsify.org/vise.git/db" |  | ||||||
| 	fsdb "git.defalsify.org/vise.git/db/fs" |  | ||||||
| 	gdbmdb "git.defalsify.org/vise.git/db/gdbm" |  | ||||||
| 	"git.defalsify.org/vise.git/engine" | 	"git.defalsify.org/vise.git/engine" | ||||||
| 	"git.defalsify.org/vise.git/resource" |  | ||||||
| 	"git.defalsify.org/vise.git/logging" | 	"git.defalsify.org/vise.git/logging" | ||||||
|  | 	"git.defalsify.org/vise.git/resource" | ||||||
| 
 | 
 | ||||||
| 	"git.grassecon.net/urdt/ussd/internal/handlers/ussd" |  | ||||||
| 	"git.grassecon.net/urdt/ussd/internal/handlers" | 	"git.grassecon.net/urdt/ussd/internal/handlers" | ||||||
|  | 	"git.grassecon.net/urdt/ussd/internal/storage" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| @ -31,11 +28,11 @@ type asyncRequestParser struct { | |||||||
| 	input     []byte | 	input     []byte | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func(p *asyncRequestParser) GetSessionId(r any) (string, error) { | func (p *asyncRequestParser) GetSessionId(r any) (string, error) { | ||||||
| 	return p.sessionId, nil | 	return p.sessionId, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func(p *asyncRequestParser) GetInput(r any) ([]byte, error) { | func (p *asyncRequestParser) GetInput(r any) ([]byte, error) { | ||||||
| 	return p.input, nil | 	return p.input, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -48,86 +45,6 @@ func getFlags(fp string, debug bool) (*asm.FlagParser, error) { | |||||||
| 	return flagParser, nil | 	return flagParser, nil | ||||||
|  | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func getHandler(appFlags *asm.FlagParser, rs *resource.DbResource, userdataStore db.Db) (*ussd.Handlers, error) { |  | ||||||
| 
 |  | ||||||
| 	ussdHandlers, err := ussd.NewHandlers(appFlags, userdataStore) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return nil, err |  | ||||||
| 	} |  | ||||||
| 	rs.AddLocalFunc("set_language", ussdHandlers.SetLanguage) |  | ||||||
| 	rs.AddLocalFunc("create_account", ussdHandlers.CreateAccount) |  | ||||||
| 	rs.AddLocalFunc("save_pin", ussdHandlers.SavePin) |  | ||||||
| 	rs.AddLocalFunc("verify_pin", ussdHandlers.VerifyPin) |  | ||||||
| 	rs.AddLocalFunc("check_identifier", ussdHandlers.CheckIdentifier) |  | ||||||
| 	rs.AddLocalFunc("check_account_status", ussdHandlers.CheckAccountStatus) |  | ||||||
| 	rs.AddLocalFunc("authorize_account", ussdHandlers.Authorize) |  | ||||||
| 	rs.AddLocalFunc("quit", ussdHandlers.Quit) |  | ||||||
| 	rs.AddLocalFunc("check_balance", ussdHandlers.CheckBalance) |  | ||||||
| 	rs.AddLocalFunc("validate_recipient", ussdHandlers.ValidateRecipient) |  | ||||||
| 	rs.AddLocalFunc("transaction_reset", ussdHandlers.TransactionReset) |  | ||||||
| 	rs.AddLocalFunc("max_amount", ussdHandlers.MaxAmount) |  | ||||||
| 	rs.AddLocalFunc("validate_amount", ussdHandlers.ValidateAmount) |  | ||||||
| 	rs.AddLocalFunc("reset_transaction_amount", ussdHandlers.ResetTransactionAmount) |  | ||||||
| 	rs.AddLocalFunc("get_recipient", ussdHandlers.GetRecipient) |  | ||||||
| 	rs.AddLocalFunc("get_sender", ussdHandlers.GetSender) |  | ||||||
| 	rs.AddLocalFunc("get_amount", ussdHandlers.GetAmount) |  | ||||||
| 	rs.AddLocalFunc("reset_incorrect", ussdHandlers.ResetIncorrectPin) |  | ||||||
| 	rs.AddLocalFunc("save_firstname", ussdHandlers.SaveFirstname) |  | ||||||
| 	rs.AddLocalFunc("save_familyname", ussdHandlers.SaveFamilyname) |  | ||||||
| 	rs.AddLocalFunc("save_gender", ussdHandlers.SaveGender) |  | ||||||
| 	rs.AddLocalFunc("save_location", ussdHandlers.SaveLocation) |  | ||||||
| 	rs.AddLocalFunc("save_yob", ussdHandlers.SaveYob) |  | ||||||
| 	rs.AddLocalFunc("save_offerings", ussdHandlers.SaveOfferings) |  | ||||||
| 	rs.AddLocalFunc("quit_with_balance", ussdHandlers.QuitWithBalance) |  | ||||||
| 	rs.AddLocalFunc("reset_account_authorized", ussdHandlers.ResetAccountAuthorized) |  | ||||||
| 	rs.AddLocalFunc("reset_allow_update", ussdHandlers.ResetAllowUpdate) |  | ||||||
| 	rs.AddLocalFunc("get_profile_info", ussdHandlers.GetProfileInfo) |  | ||||||
| 	rs.AddLocalFunc("verify_yob", ussdHandlers.VerifyYob) |  | ||||||
| 	rs.AddLocalFunc("reset_incorrect_date_format", ussdHandlers.ResetIncorrectYob) |  | ||||||
| 	rs.AddLocalFunc("set_reset_single_edit", ussdHandlers.SetResetSingleEdit) |  | ||||||
| 	rs.AddLocalFunc("initiate_transaction", ussdHandlers.InitiateTransaction) |  | ||||||
| 	rs.AddLocalFunc("save_temporary_pin", ussdHandlers.SaveTemporaryPin) |  | ||||||
| 	rs.AddLocalFunc("verify_new_pin", ussdHandlers.VerifyNewPin) |  | ||||||
| 	rs.AddLocalFunc("confirm_pin_change", ussdHandlers.ConfirmPinChange) |  | ||||||
| 	rs.AddLocalFunc("quit_with_help",ussdHandlers.QuitWithHelp) |  | ||||||
| 
 |  | ||||||
| 	return ussdHandlers, nil |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func ensureDbDir(dbDir string) error { |  | ||||||
| 	err := os.MkdirAll(dbDir, 0700) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return fmt.Errorf("state dir create exited with error: %v\n", err) |  | ||||||
| 	} |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func getStateStore(dbDir string, ctx context.Context) (db.Db, error) { |  | ||||||
| 	store := gdbmdb.NewGdbmDb() |  | ||||||
| 	storeFile := path.Join(dbDir, "state.gdbm") |  | ||||||
| 	store.Connect(ctx, storeFile) |  | ||||||
| 	return store, nil |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func getUserdataDb(dbDir string, ctx context.Context) db.Db { |  | ||||||
| 	store := gdbmdb.NewGdbmDb() |  | ||||||
| 	storeFile := path.Join(dbDir, "userdata.gdbm") |  | ||||||
| 	store.Connect(ctx, storeFile) |  | ||||||
| 	 |  | ||||||
| 	return store |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func getResource(resourceDir string, ctx context.Context) (resource.Resource, error) { |  | ||||||
| 	store := fsdb.NewFsDb() |  | ||||||
| 	err := store.Connect(ctx, resourceDir) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return nil, err |  | ||||||
| 	} |  | ||||||
| 	rfs := resource.NewDbResource(store) |  | ||||||
| 	return rfs, nil |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| func main() { | func main() { | ||||||
| 	var sessionId string | 	var sessionId string | ||||||
| 	var dbDir string | 	var dbDir string | ||||||
| @ -169,19 +86,20 @@ func main() { | |||||||
| 		cfg.EngineDebug = true | 		cfg.EngineDebug = true | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rs, err := getResource(resourceDir, ctx) | 	menuStorageService := storage.MenuStorageService{} | ||||||
|  | 	rs, err := menuStorageService.GetResource(scriptDir, ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, err.Error()) | 		fmt.Fprintf(os.Stderr, err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	err = ensureDbDir(dbDir) | 	err = menuStorageService.EnsureDbDir(dbDir) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, err.Error()) | 		fmt.Fprintf(os.Stderr, err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	userdataStore := getUserdataDb(dbDir, ctx) | 	userdataStore := menuStorageService.GetUserdataDb(dbDir, ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, err.Error()) | 		fmt.Fprintf(os.Stderr, err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| @ -193,13 +111,21 @@ func main() { | |||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	hl, err := getHandler(flagParser, dbResource, userdataStore) | 	lhs := handlers.LocalHandlerService{ | ||||||
|  | 		Parser:        flagParser, | ||||||
|  | 		DbRs:          dbResource, | ||||||
|  | 		UserdataStore: userdataStore, | ||||||
|  | 		Cfg:           cfg, | ||||||
|  | 		Rs:            rs, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	hl, err := lhs.GetHandler() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, err.Error()) | 		fmt.Fprintf(os.Stderr, err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	stateStore, err := getStateStore(dbDir, ctx) | 	stateStore, err := menuStorageService.GetStateStore(dbDir, ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		fmt.Fprintf(os.Stderr, err.Error()) | 		fmt.Fprintf(os.Stderr, err.Error()) | ||||||
| 		os.Exit(1) | 		os.Exit(1) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	
could we factor out getFlags too please?