Class: Solrengine::Tokens::JupiterClient
- Inherits:
-
Object
- Object
- Solrengine::Tokens::JupiterClient
- Includes:
- Rpc::SslHttp
- Defined in:
- lib/solrengine/tokens/jupiter_client.rb
Constant Summary collapse
- BASE_URL =
"https://api.jup.ag"- SEARCH_URL =
"#{BASE_URL}/tokens/v2/search"- PRICE_URL =
"#{BASE_URL}/price/v3"- MAX_MINTS =
100
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.fetch_prices(mints) ⇒ Object
17 18 19 |
# File 'lib/solrengine/tokens/jupiter_client.rb', line 17 def self.fetch_prices(mints) new.fetch_prices(mints) end |
.fetch_token(mint) ⇒ Object
13 14 15 |
# File 'lib/solrengine/tokens/jupiter_client.rb', line 13 def self.fetch_token(mint) new.fetch_token(mint) end |
Instance Method Details
#fetch_prices(mints) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/solrengine/tokens/jupiter_client.rb', line 36 def fetch_prices(mints) mints = mints.first(MAX_MINTS) return {} if mints.empty? cached = {} uncached = [] mints.each do |mint| price = cache_read("solrengine_tokens/price/#{mint}") if price cached[mint] = price else uncached << mint end end fetched = batch_fetch_prices(uncached) fetched.each do |mint, price| cache_write("solrengine_tokens/price/#{mint}", price, expires_in: 60) end cached.merge(fetched) end |
#fetch_token(mint) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/solrengine/tokens/jupiter_client.rb', line 21 def fetch_token(mint) validate_mint!(mint) data = search(mint) return nil unless data { name: data["name"], symbol: data["symbol"], icon: data["icon"], decimals: data["decimals"], token_program: data["tokenProgram"], verified: data["isVerified"] == true } end |