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 }