setup parser

This commit is contained in:
Carlosokumu 2024-08-31 10:21:20 +03:00
parent ef0c207fc4
commit cc323707fc
Signed by: carlos
GPG Key ID: 7BD6BC8160A5C953
2 changed files with 20 additions and 10 deletions

View File

@ -83,7 +83,11 @@ func main() {
fp := path.Join(dp, sessionId) fp := path.Join(dp, sessionId)
ussdHandlers := ussd.NewHandlers(fp, &st) ussdHandlers,err := ussd.NewHandlers(fp, &st)
if(err != nil){
fmt.Fprintf(os.Stderr, "handler setup failed with error: %v\n", err)
}
rfs.AddLocalFunc("select_language", ussdHandlers.SetLanguage) rfs.AddLocalFunc("select_language", ussdHandlers.SetLanguage)
rfs.AddLocalFunc("create_account", ussdHandlers.CreateAccount) rfs.AddLocalFunc("create_account", ussdHandlers.CreateAccount)

View File

@ -9,6 +9,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"git.defalsify.org/vise.git/asm"
"git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/lang" "git.defalsify.org/vise.git/lang"
"git.defalsify.org/vise.git/resource" "git.defalsify.org/vise.git/resource"
@ -29,26 +30,31 @@ type FSData struct {
St *state.State St *state.State
} }
type Handlers struct { type Handlers struct {
fs *FSData fs *FSData
parser *asm.FlagParser
accountFileHandler utils.AccountFileHandlerInterface accountFileHandler utils.AccountFileHandlerInterface
accountService server.AccountServiceInterface accountService server.AccountServiceInterface
} }
func NewHandlers(path string, st *state.State) *Handlers { func NewHandlers(dir string, st *state.State) (*Handlers, error) {
pfp := path.Join(dir, "pp.csv")
parser := asm.NewFlagParser()
_, err := parser.Load(pfp)
if err != nil {
return nil, err
}
return &Handlers{ return &Handlers{
fs: &FSData{ fs: &FSData{
Path: path, Path: dir,
St: st, St: st,
}, },
accountFileHandler: utils.NewAccountFileHandler(path + "_data"), parser: parser,
accountFileHandler: utils.NewAccountFileHandler(dir + "_data"),
accountService: &server.AccountService{}, accountService: &server.AccountService{},
} }, nil
} }
// Define the regex pattern as a constant // Define the regex pattern as a constant
const pinPattern = `^\d{4}$` const pinPattern = `^\d{4}$`
@ -191,7 +197,7 @@ func (h *Handlers) VerifyPin(ctx context.Context, sym string, input []byte) (res
return res, nil return res, nil
} }
//codeFromCtx retrieves language codes from the context that can be used for handling translations // codeFromCtx retrieves language codes from the context that can be used for handling translations
func codeFromCtx(ctx context.Context) string { func codeFromCtx(ctx context.Context) string {
var code string var code string
engine.Logg.DebugCtxf(ctx, "in msg", "ctx", ctx, "val", code) engine.Logg.DebugCtxf(ctx, "in msg", "ctx", ctx, "val", code)
@ -446,7 +452,7 @@ func (h *Handlers) Quit(ctx context.Context, sym string, input []byte) (resource
code := codeFromCtx(ctx) code := codeFromCtx(ctx)
l := gotext.NewLocale(translationDir, code) l := gotext.NewLocale(translationDir, code)
l.AddDomain("default") l.AddDomain("default")
res.Content = l.Get("Thank you for using Sarafu. Goodbye!") res.Content = l.Get("Thank you for using Sarafu. Goodbye!")
res.FlagReset = append(res.FlagReset, models.USERFLAG_ACCOUNT_AUTHORIZED) res.FlagReset = append(res.FlagReset, models.USERFLAG_ACCOUNT_AUTHORIZED)
return res, nil return res, nil