forked from urdt/ussd
added model and func to fetch vouchers from the API
This commit is contained in:
parent
3a46fda769
commit
31aea6b807
@ -13,6 +13,7 @@ type AccountServiceInterface interface {
|
|||||||
CheckBalance(publicKey string) (string, error)
|
CheckBalance(publicKey string) (string, error)
|
||||||
CreateAccount() (*models.AccountResponse, error)
|
CreateAccount() (*models.AccountResponse, error)
|
||||||
CheckAccountStatus(trackingId string) (string, error)
|
CheckAccountStatus(trackingId string) (string, error)
|
||||||
|
FetchVouchersFromAPI() ([]models.VoucherHolding, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type AccountService struct {
|
type AccountService struct {
|
||||||
@ -110,3 +111,31 @@ func (as *AccountService) CreateAccount() (*models.AccountResponse, error) {
|
|||||||
|
|
||||||
return &accountResp, nil
|
return &accountResp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fetchVouchersFromAPI calls the API to get the list of vouchers belonging to the user
|
||||||
|
func (as *AccountService) FetchVouchersFromAPI() ([]models.VoucherHolding, error) {
|
||||||
|
// TODO replace with the actual request once ready
|
||||||
|
mockJSON := `[
|
||||||
|
{
|
||||||
|
"symbol": "MUMO",
|
||||||
|
"address": "0x078b3a26596218507781722A4e8825BFB9570Fba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"symbol": "SRF",
|
||||||
|
"address": "0x45d747172e77d55575c197CbA9451bC2CD8F4958"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"symbol": "HALGAN",
|
||||||
|
"address": "0x12169Fb5931A599ad1283bb8311Dad54Feb51A28"
|
||||||
|
}
|
||||||
|
]`
|
||||||
|
|
||||||
|
// Unmarshal the JSON response
|
||||||
|
var holdings []models.VoucherHolding
|
||||||
|
err := json.Unmarshal([]byte(mockJSON), &holdings)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return holdings, nil
|
||||||
|
}
|
||||||
|
@ -231,36 +231,23 @@ func (h *Handlers) SaveTemporaryPin(ctx context.Context, sym string, input []byt
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetVoucherList fetches the list of vouchers and formats them
|
||||||
|
// checks whether they are synced internally before calling the API
|
||||||
func (h *Handlers) GetVoucherList(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
func (h *Handlers) GetVoucherList(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
var res resource.Result
|
var res resource.Result
|
||||||
vouchers := []string{
|
|
||||||
"SRF",
|
// check if the vouchers exist internally and if not
|
||||||
"CRF",
|
// fetch from the API
|
||||||
"VCF",
|
|
||||||
"VSAPA",
|
// Fetch vouchers from API
|
||||||
"FSTMP",
|
vouchers, err := h.accountService.FetchVouchersFromAPI()
|
||||||
"FSAW",
|
if err != nil {
|
||||||
"PTAQ",
|
return res, fmt.Errorf("error fetching vouchers: %w", err)
|
||||||
"VCRXT",
|
|
||||||
"VSGAQ",
|
|
||||||
"QPWIQQ",
|
|
||||||
"FSTMP",
|
|
||||||
"FSAW",
|
|
||||||
"PTAQ",
|
|
||||||
"VCRXT",
|
|
||||||
"VSGAQ",
|
|
||||||
"QPWIQQ",
|
|
||||||
"FSTMP",
|
|
||||||
"FSAW",
|
|
||||||
"PTAQ",
|
|
||||||
"VCRXT",
|
|
||||||
"VSGAQ",
|
|
||||||
"QPWIQQ",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var numberedVouchers []string
|
var numberedVouchers []string
|
||||||
for i, voucher := range vouchers {
|
for i, voucher := range vouchers {
|
||||||
numberedVouchers = append(numberedVouchers, fmt.Sprintf("%d:%s", i+1, voucher))
|
numberedVouchers = append(numberedVouchers, fmt.Sprintf("%d:%s", i+1, voucher.Symbol))
|
||||||
}
|
}
|
||||||
res.Content = strings.Join(numberedVouchers, "\n")
|
res.Content = strings.Join(numberedVouchers, "\n")
|
||||||
|
|
||||||
|
@ -24,3 +24,8 @@ func (m *MockAccountService) CheckAccountStatus(trackingId string) (string, erro
|
|||||||
args := m.Called(trackingId)
|
args := m.Called(trackingId)
|
||||||
return args.String(0), args.Error(1)
|
return args.String(0), args.Error(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MockAccountService) FetchVouchersFromAPI() ([]models.VoucherHolding, error) {
|
||||||
|
args := m.Called()
|
||||||
|
return args.Get(0).([]models.VoucherHolding), args.Error(1)
|
||||||
|
}
|
||||||
|
7
internal/models/vouchersresponse.go
Normal file
7
internal/models/vouchersresponse.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
// VoucherHolding represents a single voucher holding
|
||||||
|
type VoucherHolding struct {
|
||||||
|
Symbol string `json:"symbol"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user