Files
telecom-platform/sdk/go
nutcas3 ea38358af3 feat: Add Go SDK with HTTP client and comprehensive API integration
- Add sdk/go/telecom.go with Client struct and DefaultConfig with 30s timeout, 3 retries
- Add HTTPClient with Get/Post/Put/Delete methods and Bearer token authentication
- Add subscriber management: GetSubscriber, ListSubscribers with pagination, CreateSubscriber, UpdateSubscriber, DeleteSubscriber
- Add usage tracking: GetUsageStats with date range filtering
- Add payment processing: CreatePaymentTransaction
- Add system monitoring: GetSystemStats
2026-04-17 17:44:11 +03:00
..

Telecom Platform Go SDK

Go SDK for the Telecom Platform with both HTTP and gRPC support.

Features

  • Dual Protocol Support: Both HTTP REST and gRPC APIs
  • Type Safety: Strong typing with Go structs
  • Context Support: Full context.Context support
  • Error Handling: Comprehensive error handling
  • Retry Logic: Built-in retry mechanism
  • Async Operations: Non-blocking operations

Installation

go get github.com/nutcas3/telecom-sdk-go

Quick Start

HTTP Client

package main

import (
    "context"
    "fmt"
    "time"
    
    "github.com/nutcas3/telecom-sdk-go"
)

func main() {
    config := telecom.DefaultConfig()
    config.APIKey = "your-api-key"
    
    client, err := telecom.NewClient(config)
    if err != nil {
        panic(err)
    }
    defer client.Close()
    
    ctx := context.Background()
    
    // Get subscriber
    subscriber, err := client.GetSubscriber(ctx, 1)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("Subscriber: %s %s\n", subscriber.FirstName, subscriber.LastName)
    
    // List subscribers
    list, err := client.ListSubscribers(ctx, 1, 50)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("Total subscribers: %d\n", list.Total)
}

gRPC Client

package main

import (
    "context"
    "fmt"
    
    "github.com/nutcas3/telecom-sdk-go"
)

func main() {
    config := telecom.DefaultConfig()
    config.APIKey = "your-api-key"
    config.EnableGRPC = true
    config.EnableHTTP = false // Only gRPC
    
    client, err := telecom.NewClient(config)
    if err != nil {
        panic(err)
    }
    defer client.Close()
    
    ctx := context.Background()
    
    // Get subscriber via gRPC
    req := &telecom.GetSubscriberRequest{Id: 1}
    subscriber, err := client.GetSubscriberGRPC(ctx, req)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("Subscriber: %s %s\n", subscriber.FirstName, subscriber.LastName)
}

API Reference

Configuration

config := &telecom.Config{
    APIURL:     "http://localhost:8000",
    GRPCURL:    "localhost:50051",
    APIKey:     "your-api-key",
    Timeout:    30 * time.Second,
    Retries:    3,
    EnableGRPC: true,
    EnableHTTP: true,
}

Subscriber Management

// Get subscriber
subscriber, err := client.GetSubscriber(ctx, 1)

// List subscribers
list, err := client.ListSubscribers(ctx, 1, 50)

// Create subscriber
req := &telecom.CreateSubscriberRequest{
    IMSI:      "208930000000001",
    MSISDN:    "+1234567890",
    FirstName: "John",
    LastName:  "Doe",
    Email:     "[email protected]",
    PlanID:    1,
}
subscriber, err := client.CreateSubscriber(ctx, req)

// Update subscriber
updateReq := &telecom.UpdateSubscriberRequest{
    FirstName: stringPtr("Jane"),
}
subscriber, err := client.UpdateSubscriber(ctx, 1, updateReq)

// Delete subscriber
err := client.DeleteSubscriber(ctx, 1)

Usage Management

// Get usage stats
stats, err := client.GetUsageStats(ctx, 1, time.Now().AddDate(0, -1, 0), time.Now())
fmt.Printf("Data usage: %d bytes\n", stats.DataUp + stats.DataDown)

Payment Management

// Create payment
req := &telecom.CreatePaymentRequest{
    SubscriberID: "1",
    Amount:       25.00,
    Currency:     "USD",
    Gateway:      "stripe",
}
transaction, err := client.CreatePaymentTransaction(ctx, req)

System Management

// Get system stats
stats, err := client.GetSystemStats(ctx)
fmt.Printf("Active sessions: %d\n", stats.ActiveSessions)

Error Handling

subscriber, err := client.GetSubscriber(ctx, 1)
if err != nil {
    switch {
    case strings.Contains(err.Error(), "HTTP error: 401"):
        fmt.Println("Authentication failed")
    case strings.Contains(err.Error(), "HTTP error: 404"):
        fmt.Println("Subscriber not found")
    case strings.Contains(err.Error(), "HTTP error: 500"):
        fmt.Println("Server error")
    default:
        fmt.Printf("Error: %v\n", err)
    }
}

gRPC Service Interfaces

The SDK provides interfaces for all gRPC services:

  • SubscriberServiceClient - Subscriber management
  • PaymentServiceClient - Payment processing
  • UsageServiceClient - Usage tracking
  • SystemServiceClient - System monitoring

Development

Running Tests

go test ./...

Code Coverage

go test -cover ./...

Building

go build ./...

License

This SDK is licensed under the MIT License.