diff options
Diffstat (limited to 'internal/client/crypto.go')
| -rw-r--r-- | internal/client/crypto.go | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/internal/client/crypto.go b/internal/client/crypto.go new file mode 100644 index 0000000..ee145f9 --- /dev/null +++ b/internal/client/crypto.go @@ -0,0 +1,235 @@ +package client + +import ( + "encoding/json" + "fmt" + "git.db.org.ai/dborg/internal/models" + "strings" +) + +func (c *Client) GetBundleDetection(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/bundle-detection/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetCrossTraders(addresses string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/cross-traders/%s", addresses) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetEarlyAdopters(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/early-adopters/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetFloorHolders(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/floor-holders/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetFreshAccounts(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/fresh-accounts/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetFundingSource(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/funding-source/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetGraduationStats() (*models.CryptoResponse, error) { + data, err := c.Get("/crypto/graduation-stats", nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetLaunchParticipants(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/launch-participants/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetLiquidity(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/liquidity/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetOwnerIntel(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/owner-intel/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetOwnershipDistribution(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/ownership-distribution/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetPortfolio(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/portfolio/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetTopOwners(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/top-owners/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func (c *Client) GetWhaleIntel(address string) (*models.CryptoResponse, error) { + path := fmt.Sprintf("/crypto/whale-intel/%s", address) + data, err := c.Get(path, nil) + if err != nil { + return nil, err + } + + var response models.CryptoResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse crypto response: %w", err) + } + + return &response, nil +} + +func ValidateCryptoAddress(address string) error { + if len(address) == 0 { + return fmt.Errorf("address cannot be empty") + } + return nil +} + +func ValidateCryptoAddresses(addresses string) error { + if len(addresses) == 0 { + return fmt.Errorf("addresses cannot be empty") + } + parts := strings.Split(addresses, ",") + if len(parts) < 2 { + return fmt.Errorf("at least 2 addresses required for cross-trader analysis") + } + return nil +} |
