Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_get_exchanges_id_name_list(self):
# Arrange
json_response = [{'id': 'abcc', 'name': 'ABCC'}, {'id': 'acx', 'name': 'ACX'}, {'id': 'airswap', 'name': 'AirSwap'}]
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/exchanges/list',
json = json_response, status = 200)
# Act
response = CoinGeckoAPI().get_exchanges_id_name_list()
## Assert
assert response == json_response
def test_failed_get_global(self):
# Arrange
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/global',
status = 404)
exception = HTTPError("HTTP Error")
# Act Assert
with pytest.raises(HTTPError) as HE:
CoinGeckoAPI().get_global()
def test_failed_get_coins_markets(self):
# Arrange
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd',
status = 404)
exception = HTTPError("HTTP Error")
# Act Assert
with pytest.raises(HTTPError) as HE:
CoinGeckoAPI().get_coins_markets('usd')
def test_failed_get_exchanges_by_id(self):
# Arrange
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/exchanges/bitforex',
status = 404)
exception = HTTPError("HTTP Error")
# Act Assert
with pytest.raises(HTTPError) as HE:
CoinGeckoAPI().get_exchanges_by_id('bitforex')
def test_get_supported_vs_currencies(self):
# Arrange
coins_json_sample = ['btc', 'eth', 'ltc', 'bch', 'bnb', 'eos', 'xrp', 'xlm', 'usd', 'aed', 'ars', 'aud', 'bdt', 'bhd', 'bmd', 'brl', 'cad', 'chf', 'clp', 'cny', 'czk', 'dkk', 'eur', 'gbp', 'hkd', 'huf', 'idr', 'ils', 'inr', 'jpy', 'krw', 'kwd', 'lkr', 'mmk', 'mxn', 'myr', 'nok', 'nzd', 'php', 'pkr', 'pln', 'rub', 'sar', 'sek', 'sgd', 'thb', 'try', 'twd', 'uah', 'vef', 'vnd', 'zar', 'xdr', 'xag', 'xau']
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/simple/supported_vs_currencies',
json = coins_json_sample, status = 200)
# Act
response = CoinGeckoAPI().get_supported_vs_currencies()
## Assert
assert response == coins_json_sample
def test_ping(self):
# Arrange
ping_json = { 'gecko_says':'(V3) To the Moon!' }
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/ping',
json = ping_json, status = 200)
# Act
response = CoinGeckoAPI().ping()
## Assert
assert response == ping_json
def test_failed_get_price(self):
# Arrange
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd',
status = 404)
exception = HTTPError("HTTP Error")
# Act Assert
with pytest.raises(HTTPError) as HE:
CoinGeckoAPI().get_price('bitcoin', 'usd')
def test_failed_get_exchanges_list(self):
# Arrange
responses.add(responses.GET, 'https://api.coingecko.com/api/v3/exchanges',
status = 404)
exception = HTTPError("HTTP Error")
# Act Assert
with pytest.raises(HTTPError) as HE:
CoinGeckoAPI().get_exchanges_list()
def get_coin_pair_data(exclude=[], include=[]):
cg = CoinGeckoAPI()
coins = cg.get_coins_list()
random.shuffle(coins)
coin_data = []
for coin in coins:
try:
market_data = cg.get_coin_by_id(coin['id'])['tickers']
pairs_data = []
for i in market_data:
market = i['market']['name']
price = float(i['converted_last']['usd'])
volume = float(i['converted_volume']['usd'])
info = {'market': market,
'price': price,
'target': i['target'],
'volume': volume
}
# Getting the value of USD in BTS
#market = Market("USD:BTS") # Set reference market to USD:BTS
#price = market.ticker()["quoteSettlement_price"] # Get Settlement price of USD
#price.invert() # Switching from quantity of BTS per USD to USD price of one BTS.
hertz_reference_timestamp = "2015-10-13T14:12:24+00:00" # Bitshares 2.0 genesis block timestamp
hertz_current_timestamp = pendulum.now().timestamp() # Current timestamp for reference within the hertz script
hertz_amplitude = 0.14 # 14% fluctuating the price feed $+-0.14 (1% per day)
hertz_period_days = 28 # Aka wavelength, time for one full SIN wave cycle.
hertz_phase_days = 0.908056 # Time offset from genesis till the first wednesday, to set wednesday as the primary Hz day.
hertz_reference_asset_value = 1.00 # $1.00 USD, not much point changing as the ratio will be the same.
hertz_value = get_hertz_feed(hertz_reference_timestamp, hertz_current_timestamp, hertz_period_days, hertz_phase_days, hertz_reference_asset_value, hertz_amplitude)
hertz = Price(hertz_value, "USD/HERTZ") # Limit the hertz_usd decimal places & convert from float.
cg = CoinGeckoAPI() # Initialise coingecko
bts_usd_coingecko = cg.get_price(ids='bitshares', vs_currencies='usd') # Price of BTS in USD from coingecko
bts_usd_coingecko_value = Price(bts_usd_coingecko["bitshares"]["usd"], "USD/BTS") # Price format
hertz_bts = bts_usd_coingecko_value.invert() * hertz.as_quote("HERTZ") # Feed price
unofficial_data = {
'hertz_price_in_usd': hertz['price'],
'hertz_price_in_bts': hertz_bts['price'],
'core_exchange_rate': hertz_bts['price']*0.80,
'usd_price_in_bts': 1/(bts_usd_coingecko["bitshares"]["usd"]),
'bts_price_in_usd': bts_usd_coingecko["bitshares"]["usd"]
}
########
try:
target_asset = Asset("HERTZ", full=True)
except: