diff --git a/internal/server/handlers/accountstatus.go b/internal/server/handlers/accountstatus.go new file mode 100644 index 0000000..1992acc --- /dev/null +++ b/internal/server/handlers/accountstatus.go @@ -0,0 +1,34 @@ +package handlers + +import ( + "encoding/json" + "io" + "net/http" + + "git.grassecon.net/urdt/ussd/config" + "git.grassecon.net/urdt/ussd/internal/models" +) + + +func CheckAccountStatus(trackingId string) (string, error) { + resp, err := http.Get(config.TrackStatusURL + trackingId) + if err != nil { + return "", err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return "", err + } + + var trackResp models.TrackStatusResponse + err = json.Unmarshal(body, &trackResp) + if err != nil { + return "", err + } + + status := trackResp.Result.Transaction.Status + + return status, nil +} \ No newline at end of file diff --git a/internal/server/handlers/balancecheck.go b/internal/server/handlers/balancecheck.go index 38fb232..137050d 100644 --- a/internal/server/handlers/balancecheck.go +++ b/internal/server/handlers/balancecheck.go @@ -1,4 +1,33 @@ package handlers +import ( + "encoding/json" + "io" + "net/http" + "git.grassecon.net/urdt/ussd/config" + "git.grassecon.net/urdt/ussd/internal/models" +) +func CheckBalance(publicKey string) (string, error) { + + resp, err := http.Get(config.BalanceURL + publicKey) + if err != nil { + return "0.0", err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return "0.0", err + } + + var balanceResp models.BalanceResponse + err = json.Unmarshal(body, &balanceResp) + if err != nil { + return "0.0", err + } + + balance := balanceResp.Result.Balance + return balance, nil +} diff --git a/internal/server/handlers/createaccount.go b/internal/server/handlers/createaccount.go new file mode 100644 index 0000000..5175a3b --- /dev/null +++ b/internal/server/handlers/createaccount.go @@ -0,0 +1,32 @@ +package handlers + +import ( + "encoding/json" + "io" + "net/http" + + "git.grassecon.net/urdt/ussd/config" + "git.grassecon.net/urdt/ussd/internal/models" +) + + +func CreateAccount() (*models.AccountResponse, error) { + resp, err := http.Post(config.CreateAccountURL, "application/json", nil) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var accountResp models.AccountResponse + err = json.Unmarshal(body, &accountResp) + if err != nil { + return nil, err + } + + return &accountResp, nil +} \ No newline at end of file