Skip to content

masa-finance/masa-sdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Masa Logo

Official Go SDK for the Masa Protocol

A powerful Go library for interacting with the Masa universe

Go Report Card GoDoc License: MIT

Features

  • 🔄 Asynchronous Request Queue - Built-in priority queue system for handling concurrent API requests
  • 🔍 X (Twitter) Integration - Comprehensive search and profile data retrieval
  • Rate Limiting - Intelligent rate limiting and retry mechanisms
  • 🛡️ Error Handling - Robust error handling with custom error types
  • 📊 Response Management - Channel-based response handling for async operations

Installation

go get github.com/masa-finance/masa-sdk-go

Quick Start

Initialize Queue

queue := x.NewRequestQueue(5) // 5 concurrent workers
queue.Start()
defer queue.Stop()

Search X (Twitter)

responseChan := queue.AddRequest(x.SearchRequest, map[string]interface{}{
    "query": "web3",
    "count": 10,
    "additionalProps": map[string]interface{}{
        "fromDate": "2024-01-01",
        "toDate":   "2024-03-20",
    },
}, x.DefaultPriority)

response := <-responseChan

Get X Profile

responseChan := queue.AddRequest(x.ProfileRequest, map[string]interface{}{
    "username": "elonmusk",
}, x.DefaultPriority)

response := <-responseChan

Queue Configuration

Parameter Default Description
MaxConcurrentRequests 5 Maximum number of concurrent workers
APIRequestsPerSecond 20 Rate limit for API requests
DefaultRetries 10 Number of retry attempts
DefaultPriority 100 Default priority for requests

Error Handling

The SDK provides custom error types for different scenarios:

  • RateLimitError
  • WorkerRateLimitError
  • TimeoutError
  • ConnectionError
  • EmptyResponseError

Testing

ginkgo tests/integration/x/... -v

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

About

A Go library for the Masa universe

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages