diff --git a/README.md b/README.md index ce7ad25..c87f5ea 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,6 @@ Receive crypto including stablecoins with ease. Open new opportunities for your usdc
USDC
- - busd -
BUSD
- diff --git a/internal/money/money.go b/internal/money/money.go index 7495751..929ad6e 100644 --- a/internal/money/money.go +++ b/internal/money/money.go @@ -83,6 +83,7 @@ type CryptoCurrency struct { TokenContractAddress string TestTokenContractAddress string Aliases []string + Deprecated bool } func (c CryptoCurrency) DisplayName() string { diff --git a/internal/server/http/merchantapi/merchant_test.go b/internal/server/http/merchantapi/merchant_test.go index 24f82f2..5bb9e46 100644 --- a/internal/server/http/merchantapi/merchant_test.go +++ b/internal/server/http/merchantapi/merchant_test.go @@ -91,7 +91,7 @@ func TestMerchantRoutes(t *testing.T) { mt, _ := tc.Must.CreateMerchant(t, user.ID) // And blockchain currencies - allCurrencies := tc.Services.Blockchain.ListSupportedCurrencies() + allCurrencies := tc.Services.Blockchain.ListSupportedCurrencies(false) // ACT 1 // Get merchant diff --git a/internal/server/http/paymentapi/payment_test.go b/internal/server/http/paymentapi/payment_test.go index b399b80..b2309b9 100644 --- a/internal/server/http/paymentapi/payment_test.go +++ b/internal/server/http/paymentapi/payment_test.go @@ -30,7 +30,7 @@ const ( func TestHandlers(t *testing.T) { tc := test.NewIntegrationTest(t) - allCurrencies := tc.Services.Blockchain.ListSupportedCurrencies() + allCurrencies := tc.Services.Blockchain.ListSupportedCurrencies(false) t.Run("GetSupportedMethods", func(t *testing.T) { t.Run("Returns list of supported methods", func(t *testing.T) { diff --git a/internal/service/blockchain/currencies.go b/internal/service/blockchain/currencies.go index 10c00a2..9acd3e4 100644 --- a/internal/service/blockchain/currencies.go +++ b/internal/service/blockchain/currencies.go @@ -17,7 +17,7 @@ import ( ) type Resolver interface { - ListSupportedCurrencies() []money.CryptoCurrency + ListSupportedCurrencies(withDeprecated bool) []money.CryptoCurrency ListBlockchainCurrencies(blockchain money.Blockchain) []money.CryptoCurrency GetCurrencyByTicker(ticker string) (money.CryptoCurrency, error) GetNativeCoin(blockchain money.Blockchain) (money.CryptoCurrency, error) @@ -138,12 +138,16 @@ func (r *CurrencyResolver) GetCurrencyByBlockchainAndContract(bc money.Blockchai return money.CryptoCurrency{}, ErrCurrencyNotFound } -func (r *CurrencyResolver) ListSupportedCurrencies() []money.CryptoCurrency { +func (r *CurrencyResolver) ListSupportedCurrencies(withDeprecated bool) []money.CryptoCurrency { r.mu.RLock() defer r.mu.RUnlock() results := make([]money.CryptoCurrency, 0) for i := range r.currencies { + if r.currencies[i].Deprecated && !withDeprecated { + continue + } + results = append(results, r.currencies[i]) } @@ -181,6 +185,10 @@ func (r *CurrencyResolver) addCurrency(currency money.CryptoCurrency) { r.ensureIndices(currency.Blockchain, currency.Ticker) + if currency.Deprecated { + return + } + // add currency to "index" r.blockchainCurrencies[currency.Blockchain][currency.Ticker] = struct{}{} @@ -281,6 +289,11 @@ func DefaultSetup(s *CurrencyResolver) error { return err } + deprecated, err := parseBool(c["deprecated"]) + if err != nil { + return err + } + ticker := c["ticker"] s.addCurrency(money.CryptoCurrency{ @@ -295,6 +308,7 @@ func DefaultSetup(s *CurrencyResolver) error { TestTokenContractAddress: testTokenAddr, Aliases: aliases, Decimals: int64(decimals), + Deprecated: deprecated, }) s.addMinimalWithdrawal(ticker, minimalWithdrawal) @@ -372,6 +386,14 @@ func parseUSD(raw string) (money.Money, error) { return money.FiatFromFloat64(money.USD, f) } +func parseBool(raw string) (bool, error) { + if raw == "" { + return false, nil + } + + return strconv.ParseBool(raw) +} + func parseAliases(raw string) []string { if raw == "" { return nil diff --git a/internal/service/blockchain/currencies.json b/internal/service/blockchain/currencies.json index 90ed399..0564f46 100644 --- a/internal/service/blockchain/currencies.json +++ b/internal/service/blockchain/currencies.json @@ -140,6 +140,7 @@ "networkId": "56", "testNetworkId": "97", "minimal_withdrawal_amount_usd": "10", - "minimal_instant_internal_transfer_amount_usd": "30" + "minimal_instant_internal_transfer_amount_usd": "30", + "deprecated": "true" } ] \ No newline at end of file diff --git a/internal/service/merchant/service.go b/internal/service/merchant/service.go index 3ded993..616c2c6 100644 --- a/internal/service/merchant/service.go +++ b/internal/service/merchant/service.go @@ -157,7 +157,7 @@ type SupportedCurrency struct { } func (s *Service) ListSupportedCurrencies(_ context.Context, merchant *Merchant) ([]SupportedCurrency, error) { - all := s.blockchain.ListSupportedCurrencies() + all := s.blockchain.ListSupportedCurrencies(false) enabledTickers := util.Set(merchant.Settings().PaymentMethods()) // if merchant didn't set this parameter yet, let's treat that as "all currencies enabled" @@ -197,7 +197,7 @@ func (s *Service) UpdateSupportedMethods(ctx context.Context, merchant *Merchant tickersSet := util.Set(tickers) availableTickersSet := util.Set( util.MapSlice( - s.blockchain.ListSupportedCurrencies(), + s.blockchain.ListSupportedCurrencies(false), func(c money.CryptoCurrency) string { return c.Ticker }, ), )