From f7e2c315d927edb4d5124b5417ab5b59bd7ca84c Mon Sep 17 00:00:00 2001 From: Daniel-Sogbey Date: Wed, 16 Aug 2023 22:02:57 +0000 Subject: [PATCH] config update--overall refactor --- README.md | 16 +- main.go | 11 +- .../{initialize => }/initialize.go | 4 +- .../{initialize => }/initialize_test.go | 6 +- pkg/transactions/list.go | 59 ++++++++ pkg/transactions/list/list.go | 138 ------------------ pkg/transactions/{list => }/list_test.go | 4 +- pkg/transactions/{verify => }/verify.go | 4 +- pkg/transactions/{verify => }/verify_test.go | 6 +- 9 files changed, 85 insertions(+), 163 deletions(-) rename pkg/transactions/{initialize => }/initialize.go (92%) rename pkg/transactions/{initialize => }/initialize_test.go (81%) create mode 100644 pkg/transactions/list.go delete mode 100644 pkg/transactions/list/list.go rename pkg/transactions/{list => }/list_test.go (86%) rename pkg/transactions/{verify => }/verify.go (97%) rename pkg/transactions/{verify => }/verify_test.go (80%) diff --git a/README.md b/README.md index c09f52c..b2699ae 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ import ( "log" "os" + "github.com/Daniel-Sogbey/go-paystack/paystack" - "github.com/Daniel-Sogbey/go-paystack/pkg/transactions/initialize" - "github.com/Daniel-Sogbey/go-paystack/pkg/transactions/verify" + Transactions "github.com/Daniel-Sogbey/go-paystack/pkg/transactions" ) func main() { @@ -34,13 +34,13 @@ func main() { } //SET UP INITIALIZE TRANSACTION REQUEST BODY - initializeTransactionRequest := &initialize.InitializeTransactionRequest{ + initializeTransactionRequest := &Transactions.InitializeTransactionRequest{ Email: "mathematics06physics@gmail.com", Amount: "2000", } // EXAMPLE OF AN INITIALIZE TRANSACTION REQUEST - initializeTransactionResponse, err := initialize.InitializeTransaction(client, initializeTransactionRequest) + initializeTransactionResponse, err := Transactions.Initialize(client, initializeTransactionRequest) if err != nil { log.Fatalf("Error making an initialize request to the package api %v", err) @@ -50,16 +50,17 @@ func main() { fmt.Println("JSON RESPONSE : ", initializeTransactionResponse) // SET UP VERIFICATION TRANSACTION REQUEST - verifyTransactionRequest := &verify.VerificationRequest{ + verifyTransactionRequest := &Transactions.VerificationRequest{ Reference: "", } // EXAMPLE OF A VERIFY TRANSACTION REQUEST - verifyTransactionResponse, _ := verify.VerifyTransaction(client, verifyTransactionRequest) + verifyTransactionResponse, _ := Transactions.Verify(client, verifyTransactionRequest) // SAMPLE JSON RESPONSE FROM THE PAYSTACK INITIALIZE TRANSACTION API fmt.Println("JSON RESPONSE : ", verifyTransactionResponse) + } ``` @@ -87,12 +88,13 @@ func TestInitializeTransactions(t *testing.T) { ContentType: "application/json", } + sampleInitializeTransactionRequest := &InitializeTransactionRequest{ Email: "1@2.com", Amount: "20", } - response, err := InitializeTransaction(client, sampleInitializeTransactionRequest) + response, err := Initialize(client, sampleInitializeTransactionRequest) if err != nil { t.Errorf("Expected response of status %v, but got a status of %v and an error that says %v", response.Status, response.Status, err) diff --git a/main.go b/main.go index fe750b4..f1ffb73 100644 --- a/main.go +++ b/main.go @@ -5,8 +5,7 @@ import ( "log" "github.com/Daniel-Sogbey/go-paystack/paystack" - "github.com/Daniel-Sogbey/go-paystack/pkg/transactions/initialize" - "github.com/Daniel-Sogbey/go-paystack/pkg/transactions/verify" + Transactions "github.com/Daniel-Sogbey/go-paystack/pkg/transactions" ) func main() { @@ -18,13 +17,13 @@ func main() { } //SET UP INITIALIZE TRANSACTION REQUEST BODY - initializeTransactionRequest := &initialize.InitializeTransactionRequest{ + initializeTransactionRequest := &Transactions.InitializeTransactionRequest{ Email: "mathematics06physics@gmail.com", Amount: "2000", } // EXAMPLE OF AN INITIALIZE TRANSACTION REQUEST - initializeTransactionResponse, err := initialize.InitializeTransaction(client, initializeTransactionRequest) + initializeTransactionResponse, err := Transactions.Initialize(client, initializeTransactionRequest) if err != nil { log.Fatalf("Error making an initialize request to the package api %v", err) @@ -34,12 +33,12 @@ func main() { fmt.Println("JSON RESPONSE : ", initializeTransactionResponse) // SET UP VERIFICATION TRANSACTION REQUEST - verifyTransactionRequest := &verify.VerificationRequest{ + verifyTransactionRequest := &Transactions.VerificationRequest{ Reference: "", } // EXAMPLE OF A VERIFY TRANSACTION REQUEST - verifyTransactionResponse, _ := verify.VerifyTransaction(client, verifyTransactionRequest) + verifyTransactionResponse, _ := Transactions.Verify(client, verifyTransactionRequest) // SAMPLE JSON RESPONSE FROM THE PAYSTACK INITIALIZE TRANSACTION API fmt.Println("JSON RESPONSE : ", verifyTransactionResponse) diff --git a/pkg/transactions/initialize/initialize.go b/pkg/transactions/initialize.go similarity index 92% rename from pkg/transactions/initialize/initialize.go rename to pkg/transactions/initialize.go index 2ae4d68..4f9c8a3 100644 --- a/pkg/transactions/initialize/initialize.go +++ b/pkg/transactions/initialize.go @@ -1,4 +1,4 @@ -package initialize +package Transactions import ( "bytes" @@ -42,7 +42,7 @@ type InitializeTransactionRequest struct { Amount string `json:"amount"` } -func InitializeTransaction(c *paystack.Client, request *InitializeTransactionRequest) (InitializeTransactionResponse, error) { +func Initialize(c *paystack.Client, request *InitializeTransactionRequest) (InitializeTransactionResponse, error) { c.Client = &http.Client{} apiUrl := "https://api.paystack.co/transaction/initialize" diff --git a/pkg/transactions/initialize/initialize_test.go b/pkg/transactions/initialize_test.go similarity index 81% rename from pkg/transactions/initialize/initialize_test.go rename to pkg/transactions/initialize_test.go index ad44498..b77d5ff 100644 --- a/pkg/transactions/initialize/initialize_test.go +++ b/pkg/transactions/initialize_test.go @@ -1,4 +1,4 @@ -package initialize +package Transactions import ( "testing" @@ -6,7 +6,7 @@ import ( "github.com/Daniel-Sogbey/go-paystack/paystack" ) -func TestInitializeTransactions(t *testing.T) { +func TestInitialize(t *testing.T) { client := &paystack.Client{ Authorization: "sk_test_f572197fbc13951b13afafc0d0f6517ed7ec12eb", @@ -18,7 +18,7 @@ func TestInitializeTransactions(t *testing.T) { Amount: "20", } - response, err := InitializeTransaction(client, sampleInitializeTransactionRequest) + response, err := Initialize(client, sampleInitializeTransactionRequest) if err != nil { t.Errorf("Expected response of status %v, but got a status of %v and an error that says %v", response.Status, response.Status, err) diff --git a/pkg/transactions/list.go b/pkg/transactions/list.go new file mode 100644 index 0000000..a2c67b6 --- /dev/null +++ b/pkg/transactions/list.go @@ -0,0 +1,59 @@ +package Transactions + +import ( + "encoding/json" + "fmt" + "io" + "log" + "net/http" + + "github.com/Daniel-Sogbey/go-paystack/internal" + "github.com/Daniel-Sogbey/go-paystack/paystack" +) + +type ListTransactionRequest struct { + Id string `json:"id"` +} + +type ListTransactionResponse struct { + Status bool `json:"status"` + Message string `json:"message"` + Data TransactionData `json:"data"` +} + +func List(c *paystack.Client, request *ListTransactionRequest) (ListTransactionResponse, error) { + c.Client = &http.Client{} + apiUrl := "https://api.paystack.co/transaction/" + request.Id + + req, _ := http.NewRequest("GET", apiUrl, nil) + + internal.SetHeaders(req, c.Authorization) + + response, err := c.Client.Do(req) + + if err != nil { + log.Fatalf("Error from List Transaction Paystack API endpoint : %v", err) + } + + responseBody, err := io.ReadAll(response.Body) + + fmt.Println("Response Body : ", string(responseBody)) + + if err != nil { + log.Fatalf("Error reading response body : %v", err) + } + + var listTransactionResponse ListTransactionResponse + + err = json.Unmarshal(responseBody, &listTransactionResponse) + + if err != nil { + log.Fatalf("Error unmarshalling response body : %v", err) + } + + return ListTransactionResponse{ + Status: listTransactionResponse.Status, + Message: listTransactionResponse.Message, + Data: listTransactionResponse.Data, + }, nil +} diff --git a/pkg/transactions/list/list.go b/pkg/transactions/list/list.go deleted file mode 100644 index b0db392..0000000 --- a/pkg/transactions/list/list.go +++ /dev/null @@ -1,138 +0,0 @@ -package listTransactions - -import ( - "encoding/json" - "fmt" - "io" - "log" - "net/http" - - "github.com/Daniel-Sogbey/go-paystack/client" - "github.com/Daniel-Sogbey/go-paystack/internal" -) - -type ListTransactionRequest struct { - Id string `json:"id"` -} - -type CustomField struct { - DisplayName string `json:"display_name"` - VariableName string `json:"variable_name"` - Value string `json:"value"` -} - -type LogHistory struct { - Type string `json:"type"` - Message string `json:"message"` - Time int `json:"time"` -} - -type Log struct { - StartTime int `json:"start_time"` - TimeSpent int `json:"time_spent"` - Attempts int `json:"attempts"` - Errors int `json:"errors"` - Success bool `json:"success"` - Mobile bool `json:"mobile"` - Input []string `json:"input"` - History []LogHistory `json:"history"` -} - -type Authorization struct { - AuthorizationCode string `json:"authorization_code"` - Bin string `json:"bin"` - Last4 string `json:"last4"` - ExpMonth string `json:"exp_month"` - ExpYear string `json:"exp_year"` - Channel string `json:"channel"` - CardType string `json:"card_type"` - Bank string `json:"bank"` - CountryCode string `json:"country_code"` - Brand string `json:"brand"` - Reusable bool `json:"reusable"` - Signature string `json:"signature"` - AccountName string `json:"account_name"` -} - -type Customer struct { - ID int `json:"id"` - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - Email string `json:"email"` - CustomerCode string `json:"customer_code"` - Phone string `json:"phone"` - Metadata string `json:"metadata"` - RiskAction string `json:"risk_action"` -} - -type Metadata struct { - CustomFields []CustomField `json:"custom_fields"` - Referrer string `json:"referrer"` -} - -type TransactionData struct { - ID int `json:"id"` - Domain string `json:"domain"` - Status string `json:"status"` - Reference string `json:"reference"` - Amount int `json:"amount"` - Message interface{} `json:"message"` - GatewayResponse string `json:"gateway_response"` - PaidAt string `json:"paid_at"` - CreatedAt string `json:"created_at"` - Channel string `json:"channel"` - Currency string `json:"currency"` - IPAddress string `json:"ip_address"` - Metadata string `json:"metadata"` // Use the Metadata struct - Log Log `json:"log"` - Fees int `json:"fees"` - Authorization Authorization `json:"authorization"` - Customer Customer `json:"customer"` - Plan interface{} `json:"plan"` - Subaccount interface{} `json:"subaccount"` - OrderID interface{} `json:"order_id"` - RequestedAmount int `json:"requested_amount"` -} - -type ListTransactionResponse struct { - Status bool `json:"status"` - Message string `json:"message"` - Data TransactionData `json:"data"` -} - -func ListTransactions(c *client.Client, request *ListTransactionRequest) (ListTransactionResponse, error) { - c.Client = &http.Client{} - apiUrl := "https://api.paystack.co/transaction/" + request.Id - - req, _ := http.NewRequest("GET", apiUrl, nil) - - internal.SetHeaders(req, c.Authorization) - - response, err := c.Client.Do(req) - - if err != nil { - log.Fatalf("Error from List Transaction Paystack API endpoint : %v", err) - } - - responseBody, err := io.ReadAll(response.Body) - - fmt.Println("Response Body : ", string(responseBody)) - - if err != nil { - log.Fatalf("Error reading response body : %v", err) - } - - var listTransactionResponse ListTransactionResponse - - err = json.Unmarshal(responseBody, &listTransactionResponse) - - if err != nil { - log.Fatalf("Error unmarshalling response body : %v", err) - } - - return ListTransactionResponse{ - Status: listTransactionResponse.Status, - Message: listTransactionResponse.Message, - Data: listTransactionResponse.Data, - }, nil -} diff --git a/pkg/transactions/list/list_test.go b/pkg/transactions/list_test.go similarity index 86% rename from pkg/transactions/list/list_test.go rename to pkg/transactions/list_test.go index 7bdb2e9..7d77730 100644 --- a/pkg/transactions/list/list_test.go +++ b/pkg/transactions/list_test.go @@ -1,4 +1,4 @@ -package listTransactions +package Transactions import ( "testing" @@ -16,7 +16,7 @@ func TestListTransactions(t *testing.T) { Id: "3030558719", } - response, err := ListTransactions(client, listTransactionRequest) + response, err := List(client, listTransactionRequest) if err != nil { t.Errorf("Test failed , go an error that says : %v", err) diff --git a/pkg/transactions/verify/verify.go b/pkg/transactions/verify.go similarity index 97% rename from pkg/transactions/verify/verify.go rename to pkg/transactions/verify.go index 2012e48..baf24cf 100644 --- a/pkg/transactions/verify/verify.go +++ b/pkg/transactions/verify.go @@ -1,4 +1,4 @@ -package verify +package Transactions import ( "encoding/json" @@ -98,7 +98,7 @@ type VerificationResponse struct { Data TransactionData `json:"data"` } -func VerifyTransaction(c *paystack.Client, request *VerificationRequest) (VerificationResponse, error) { +func Verify(c *paystack.Client, request *VerificationRequest) (VerificationResponse, error) { c.Client = &http.Client{} apiUrl := "https://api.paystack.co/transaction/verify/" + request.Reference diff --git a/pkg/transactions/verify/verify_test.go b/pkg/transactions/verify_test.go similarity index 80% rename from pkg/transactions/verify/verify_test.go rename to pkg/transactions/verify_test.go index a01bba7..014d4a2 100644 --- a/pkg/transactions/verify/verify_test.go +++ b/pkg/transactions/verify_test.go @@ -1,4 +1,4 @@ -package verify +package Transactions import ( "testing" @@ -6,7 +6,7 @@ import ( "github.com/Daniel-Sogbey/go-paystack/paystack" ) -func TestVerifyTransaction(t *testing.T) { +func TestVerify(t *testing.T) { client := &paystack.Client{ Authorization: "sk_test_f572197fbc13951b13afafc0d0f6517ed7ec12eb", @@ -17,7 +17,7 @@ func TestVerifyTransaction(t *testing.T) { Reference: "c2z7k6t1i4", } - response, err := VerifyTransaction(client, sampleVerificationRequest) + response, err := Verify(client, sampleVerificationRequest) if err != nil { t.Errorf("Test failed with error %v", err)