Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 23 additions & 17 deletions Address.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,11 @@ func (a *Address) GetAddressBalance(address string) (*AddressBalance, error) {
if err != nil {
return nil, err
}
// Parse the data into AddressBalance struct if needed
return &AddressBalance{}, nil
var balance AddressBalance
if err := json.Unmarshal(data, &balance); err != nil {
return nil, err
}
return &balance, nil
}

func (a *Address) GetAddressTransactions(address string) (*AddressTransactions, error) {
Expand All @@ -36,8 +39,11 @@ func (a *Address) GetAddressTransactions(address string) (*AddressTransactions,
if err != nil {
return nil, err
}
// Parse the data into AddressTransactions struct if needed
return &AddressTransactions{}, nil
var transactions AddressTransactions
if err := json.Unmarshal(data, &transactions); err != nil {
return nil, err
}
return &transactions, nil
}

func (a *Address) GetUnconfirmedAddressTransactions(address string) (*AddressTransactions, error) {
Expand All @@ -46,21 +52,27 @@ func (a *Address) GetUnconfirmedAddressTransactions(address string) (*AddressTra
if err != nil {
return nil, err
}
// Parse the data into AddressTransactions struct if needed
return &AddressTransactions{}, nil
var transactions AddressTransactions
if err := json.Unmarshal(data, &transactions); err != nil {
return nil, err
}
return &transactions, nil
}

func (a *Address) GetAddressUTXO(address string) (*AddressUTXOs, error) {
url := fmt.Sprintf("%s/address/unconfirmed/transactions/%s", a.apiV1URL, address)
url := fmt.Sprintf("%s/address/utxo/%s", a.apiV1URL, address)
data, err := a.get(url)
if err != nil {
return nil, err
}
// Parse the data into AddressUTXOs struct if needed
return &AddressUTXOs{}, nil
var utxos AddressUTXOs
if err := json.Unmarshal(data, &utxos); err != nil {
return nil, err
}
return &utxos, nil
}

func (a *Address) get(url string) (interface{}, error) {
func (a *Address) get(url string) ([]byte, error) {
resp, err := http.Get(url)
if err != nil {
a.logger(err.Error())
Expand All @@ -74,11 +86,5 @@ func (a *Address) get(url string) (interface{}, error) {
return nil, err
}

var data interface{}
if err := json.Unmarshal(body, &data); err != nil {
a.logger(err.Error())
return nil, err
}

return data, nil
return body, nil
}
36 changes: 24 additions & 12 deletions Address_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,63 +7,75 @@ import (
)

func TestGetAddressBalance(t *testing.T) {
mockServer := createMockServer("address/state/mockAddress", `{"mock": "data"}`)
mockServer := createMockServer("address/state/mockAddress", `{"balance": 42}`)
defer mockServer.Close()

config := SDKConfig{
BaseAPIURL: mockServer.URL,
BaseAPIURL: mockServer.URL + "/bgl/v1/blockchain",
}
addressAPI := NewAddress(config)

_, err := addressAPI.GetAddressBalance("mockAddress")
balance, err := addressAPI.GetAddressBalance("mockAddress")
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if balance.Balance != 42 {
t.Errorf("Expected balance to be decoded, got %d", balance.Balance)
}
}

func TestGetAddressTransactions(t *testing.T) {
mockServer := createMockServer("address/transactions/mockAddress", `{"mock": "data"}`)
mockServer := createMockServer("address/transactions/mockAddress", `{"page": 2, "list": [{"txId": "abc"}]}`)
defer mockServer.Close()

config := SDKConfig{
BaseAPIURL: mockServer.URL,
BaseAPIURL: mockServer.URL + "/bgl/v1/blockchain",
}
addressAPI := NewAddress(config)

_, err := addressAPI.GetAddressTransactions("mockAddress")
transactions, err := addressAPI.GetAddressTransactions("mockAddress")
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if transactions.Page != 2 || len(transactions.List) != 1 || transactions.List[0].TxID != "abc" {
t.Errorf("Expected transactions to be decoded, got %#v", transactions)
}
}

func TestGetUnconfirmedAddressTransactions(t *testing.T) {
mockServer := createMockServer("address/unconfirmed/transactions/mockAddress", `{"mock": "data"}`)
mockServer := createMockServer("address/unconfirmed/transactions/mockAddress", `{"page": 3, "list": [{"txId": "def"}]}`)
defer mockServer.Close()

config := SDKConfig{
BaseAPIURL: mockServer.URL,
BaseAPIURL: mockServer.URL + "/bgl/v1/blockchain",
}
addressAPI := NewAddress(config)

_, err := addressAPI.GetUnconfirmedAddressTransactions("mockAddress")
transactions, err := addressAPI.GetUnconfirmedAddressTransactions("mockAddress")
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if transactions.Page != 3 || len(transactions.List) != 1 || transactions.List[0].TxID != "def" {
t.Errorf("Expected unconfirmed transactions to be decoded, got %#v", transactions)
}
}

func TestGetAddressUTXO(t *testing.T) {
mockServer := createMockServer("address/unconfirmed/transactions/mockAddress", `{"mock": "data"}`)
mockServer := createMockServer("address/utxo/mockAddress", `[{"txId": "utxo", "vOut": 1}]`)
defer mockServer.Close()

config := SDKConfig{
BaseAPIURL: mockServer.URL,
BaseAPIURL: mockServer.URL + "/bgl/v1/blockchain",
}
addressAPI := NewAddress(config)

_, err := addressAPI.GetAddressUTXO("mockAddress")
utxos, err := addressAPI.GetAddressUTXO("mockAddress")
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if len(*utxos) != 1 || (*utxos)[0].TxID != "utxo" || (*utxos)[0].VOut != 1 {
t.Errorf("Expected UTXOs to be decoded, got %#v", utxos)
}
}

func createMockServer(path, response string) *httptest.Server {
Expand Down
6 changes: 0 additions & 6 deletions Blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,8 @@ import (
"fmt"
"io/ioutil"
"net/http"
"time"
)

// SDKConfig represents the configuration for the SDK
type SDKConfig struct {
BaseAPIURL string // Add any other fields as needed
}

// Blockchain represents the blockchain SDK
type Blockchain struct {
apiV1URL string
Expand Down
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
setup:
go mod download

compile:
go test ./...
6 changes: 0 additions & 6 deletions Mempool.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,8 @@ import (
"fmt"
"io/ioutil"
"net/http"
"time"
)

// SDKConfig represents the configuration for the SDK
type SDKConfig struct {
BaseAPIURL string // Add any other fields as needed
}

// Mempool represents the mempool SDK
type Mempool struct {
apiV1URL string
Expand Down
4 changes: 0 additions & 4 deletions api.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package blockchain

import (
"fmt"
)

// BitgesellBlockchainSDK represents the Bitgesell Blockchain SDK
type BitgesellBlockchainSDK struct {
Blockchain Blockchain
Expand Down
9 changes: 5 additions & 4 deletions examples/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ package main

import (
"fmt"
"github.com/naftalimurgor/go-bitgesell-toolkit"

blockchain "github.com/BitgesellOfficial/go-bitgesell-toolkit"
)

func main() {
// Example usage of the Bitgesell Blockchain SDK
config := blockchain.SDKConfig.SDKConfig{BaseAPIURL: "https://api.bitaps.com/bgl/v1/blockchain"}
bitgesellSDK := blockchain.bitgesell.NewBitgesellBlockchainSDK(config)
config := blockchain.SDKConfig{BaseAPIURL: "https://api.bitaps.com/bgl/v1/blockchain"}
bitgesellSDK := blockchain.NewBitgesellBlockchainSDK(config)

// Example: Access Blockchain SDK methods
block, err := bitgesellSDK.Blockchain.GetBlockByHash("your_block_hash")
Expand All @@ -33,4 +34,4 @@ func main() {
return
}
fmt.Println("Mempool Transactions:", mempoolTransactions)
}
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/naftalimurgor/go-bitgesell-toolkit
module github.com/BitgesellOfficial/go-bitgesell-toolkit

go 1.21.6

Expand Down
Loading