tappin/internal/clicker/methods.go
Arthur Khachaturov e307989b9f
init: mvp
2024-08-17 01:20:24 +03:00

80 lines
1.5 KiB
Go

package clicker
import (
"encoding/base64"
"encoding/json"
"fmt"
"strings"
"time"
"github.com/wzrayyy/tappin/internal/entity/user"
)
func (c *Clicker) ClaimDailyKeys() error {
m, err := json.Marshal(&claimDailyCipherRequest{
Cipher: base64.StdEncoding.EncodeToString([]byte(strings.Repeat("0", 10) + fmt.Sprintf("|%d", c.telegramUserID))),
})
if err != nil {
return err
}
err = c.requestAndDecode("start-keys-minigame", nil, nil)
if err != nil {
return err
}
return c.requestAndDecode("claim-daily-keys-minigame", m, nil)
}
func (c *Clicker) ClaimDailyCipher() error {
cipher, err := c.clickerConfig.DailyCipher.Decode()
if err != nil {
return err
}
m, err := json.Marshal(claimDailyCipherRequest{
Cipher: cipher,
})
return c.requestAndDecode("claim-daily-cipher", m, nil)
}
func (c *Clicker) Tap(taps int) error {
c.locks.User.RLock()
m, err := json.Marshal(tapRequest{
Count: taps,
AvailableTaps: c.user.AvailableTaps - taps,
Timestamp: time.Now().UnixMilli(),
})
c.locks.User.RUnlock()
if err != nil {
return err
}
var u user.Response
err = c.requestAndDecode("tap", m, &u)
if err != nil {
return err
}
c.locks.User.Lock()
c.user = &u
c.locks.User.Unlock()
return nil
}
func (c *Clicker) BuyBoost(boost_id string) error {
r, err := json.Marshal(buyBoostRequest{
BoostID: boost_id,
Timestamp: time.Now().UnixMilli(),
})
if err != nil {
return err
}
return c.requestAndDecode("buy-boost", r, nil)
}