Files
dragonchain-prime-sdk-go/README.md
Andrew Miller eb6100b736 Add context.Context parameter to all API methods
Enable request timeout and cancellation control by adding context.Context
as the first parameter to all SDK API methods. This allows users to:
- Set per-request timeouts
- Cancel in-flight requests
- Pass request-scoped values
2025-12-29 11:00:13 -05:00

105 lines
2.8 KiB
Markdown

# Dragonchain Go SDK
A self-contained Go SDK for interacting with Dragonchain nodes.
## Installation
```bash
go get git.dragonchain.com/dragonchain/dragonchain-prime-sdk-go
```
## Usage
```go
package main
import (
"context"
"fmt"
"log"
"time"
"git.dragonchain.com/dragonchain/dragonchain-prime-sdk-go"
"git.dragonchain.com/dragonchain/dragonchain-prime-sdk-go/models"
)
func main() {
// Initialize the SDK
client := sdk.NewDragonchainSDK(
"your-public-id",
"your-auth-key-id",
"your-auth-key",
"https://your-dragonchain-endpoint.com",
)
// Create a context with timeout
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
// Check system health
if err := client.System.Health(ctx); err != nil {
log.Fatal("Health check failed:", err)
}
// Get system status
status, err := client.System.Status(ctx)
if err != nil {
log.Fatal("Failed to get status:", err)
}
fmt.Printf("Chain ID: %s, Level: %d\n", status.ID, status.Level)
// Create a transaction
txn := &models.TransactionCreateRequest{
TxnType: "my-transaction-type",
Payload: map[string]interface{}{
"message": "Hello Dragonchain",
},
Tag: "example-tag",
}
resp, err := client.Transaction.Create(ctx, txn)
if err != nil {
log.Fatal("Failed to create transaction:", err)
}
fmt.Printf("Created transaction: %s\n", resp.TransactionID)
}
```
## Available Endpoints
All API methods accept a `context.Context` as their first parameter for timeout and cancellation control.
### System
- `Health(ctx)` - Check system health
- `Status(ctx)` - Get system status
### Transaction
- `Create(ctx, req)` - Create a new transaction
- `CreateBulk(ctx, req)` - Create multiple transactions
- `Get(ctx, transactionID)` - Get transaction by ID
- `List(ctx)` - List all transactions
### Transaction Type
- `Create(ctx, req)` - Create a new transaction type
- `Get(ctx, txnType)` - Get transaction type by name
- `List(ctx)` - List all transaction types
- `Delete(ctx, txnType)` - Delete a transaction type
### Smart Contract
- `Create(ctx, req)` - Create a new smart contract
- `Get(ctx, contractID)` - Get smart contract by ID
- `List(ctx)` - List all smart contracts
- `Update(ctx, contractID, req)` - Update a smart contract
- `Upload(ctx, contractID, filepath)` - Upload smart contract code
- `Delete(ctx, contractID)` - Delete a smart contract
### Block
- `Get(ctx, blockID)` - Get block by ID
## Authentication
The SDK uses HMAC-SHA256 authentication. You need to provide:
- `publicID` - Your Dragonchain public ID
- `authKeyID` - Your authentication key ID
- `authKey` - Your authentication key
- `baseURL` - The base URL of your Dragonchain node (e.g., "https://chains.dragonchain.com")