Menus and cmd flags for tokens
Signed-off-by: Ettore Dreucci <ettore.dreucci@gmail.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/dixonwille/wmenu"
|
||||
"github.com/go-redis/redis"
|
||||
)
|
||||
|
||||
@@ -28,7 +29,9 @@ var (
|
||||
//ErrTokenInvalid is thrown when the string parsed isn't a valid telegram bot token
|
||||
ErrTokenInvalid = errors.New("botToken: string isn't a valid telegram bot token")
|
||||
//ErrAddToken is thrown when one or more bot token hasn't been added
|
||||
ErrAddToken = errors.New("couldn't add one or more token")
|
||||
ErrAddToken = errors.New("couldn't add one or more tokens")
|
||||
//ErrRemoveToken is thrown when one or more bot tokens hasn't been removed
|
||||
ErrRemoveToken = errors.New("couldn't remove one or more tokens")
|
||||
)
|
||||
|
||||
func redisInit(addr string, pwd string, db int) (*redis.Client, error) {
|
||||
@@ -64,21 +67,58 @@ func addBotToken(newToken string, client *redis.Client) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func addBotTokens(client *redis.Client) error {
|
||||
fmt.Println("Add the new tokens, comma-separated:")
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
line, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
log.Printf("Error in reading new bot tokens: %v", err)
|
||||
return ErrStdRead
|
||||
}
|
||||
newTokens := strings.Split(line, ",")
|
||||
for _, newToken := range newTokens {
|
||||
err = addBotToken(newToken, client)
|
||||
func addBotTokens(client *redis.Client, newTokens []string) error {
|
||||
errNum := 0
|
||||
if newTokens == nil {
|
||||
fmt.Println("Add the new tokens, comma-separated:")
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
line, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
log.Printf("Error in reading new bot tokens: %v", err)
|
||||
return ErrStdRead
|
||||
}
|
||||
newTokens := strings.Split(line, ",")
|
||||
}
|
||||
for _, newToken := range newTokens {
|
||||
err := addBotToken(newToken, client)
|
||||
if err != nil {
|
||||
errNum++
|
||||
log.Printf("Error in adding new bot token %s: %v", newToken, err)
|
||||
}
|
||||
}
|
||||
if errNum == len(newTokens) {
|
||||
return ErrAddToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func removeBotToken(token string, client *redis.Client) error {
|
||||
err := client.SRem(tkSet, token).Err()
|
||||
if err != nil {
|
||||
log.Printf("Error in removing bot token %s: %v", token, err)
|
||||
return ErrRemoveToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func removeBotTokens(client *redis.Client) error {
|
||||
tokens, err := client.SMembers(tkSet).Result()
|
||||
if err != nil {
|
||||
log.Printf("Couldn't retrive bot tokens: %v", err)
|
||||
return ErrRedisRetriveSet
|
||||
}
|
||||
menu := wmenu.NewMenu("Select the token(s) you want to remove:")
|
||||
menu.AllowMultiple()
|
||||
menu.LoopOnInvalid()
|
||||
menu.Action(func(opts []wmenu.Opt) error { return removeBotToken(opts[0].Text, client) })
|
||||
for _, token := range tokens {
|
||||
menu.Option(token, nil, false, nil)
|
||||
}
|
||||
err = menu.Run()
|
||||
if err != nil {
|
||||
log.Printf("Error in removeToken menu: %v", err)
|
||||
return ErrRemoveToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -90,7 +130,7 @@ func getBotTokens(client *redis.Client) ([]string, error) {
|
||||
}
|
||||
if tkNum == 0 {
|
||||
fmt.Println("No bot token found.")
|
||||
err := addBotTokens(client)
|
||||
err := addBotTokens(client, nil)
|
||||
if err != nil {
|
||||
log.Printf("Couldn't add new bot tokens: %v", err)
|
||||
return nil, ErrAddToken
|
||||
|
Reference in New Issue
Block a user