github.com/status-im/status-go@v1.1.0/services/wallet/onramp/on_ramp.go (about)

     1  package onramp
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  
     7  	"github.com/ethereum/go-ethereum/log"
     8  )
     9  
    10  type Manager struct {
    11  	providers []Provider
    12  }
    13  
    14  func NewManager(providers []Provider) *Manager {
    15  	return &Manager{
    16  		providers: providers,
    17  	}
    18  }
    19  
    20  func (c *Manager) GetProviders(ctx context.Context) ([]CryptoOnRamp, error) {
    21  	ret := make([]CryptoOnRamp, 0, len(c.providers))
    22  	for _, provider := range c.providers {
    23  		cryptoOnRamp, err := provider.GetCryptoOnRamp(ctx)
    24  		if err != nil {
    25  			log.Error("failed to get crypto on ramp", "id", provider.ID(), "error", err)
    26  			continue
    27  		}
    28  
    29  		ret = append(ret, cryptoOnRamp)
    30  	}
    31  
    32  	return ret, nil
    33  }
    34  
    35  func (c *Manager) GetURL(ctx context.Context, providerID string, parameters Parameters) (string, error) {
    36  	for _, provider := range c.providers {
    37  		if provider.ID() != providerID {
    38  			continue
    39  		}
    40  
    41  		return provider.GetURL(ctx, parameters)
    42  	}
    43  
    44  	return "", errors.New("provider not found")
    45  }