Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

crates

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

crates

  • 0.1.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Introduction

Fast and easy way to get all data about all coins in any fiat value. Get data for analyze or use it to make a brand new crypto app. After scrapping prices in CSV file, and printing colorized output, you can access each rate with #price(coin). No configuration, just run.

  • Collect prices of defined coins from cryptocompare.com
  • Save data into object
  • Save to CSV and print colorized output
  • Print-only without saving
  • Save-only without printing

How to install

Make sure you have ruby and git installed:

 # download repo and install dependencies like colorize and rest-client
 git clone https://github.com/decentralizuj/crates.git
 cd crates
 bundle install

How to run

If you want to edit default coins:

 # open 'bin/crates' and edit line(5):
 > (5): COINS = %w[ ... ].freeze

Run from terminal:

 # add fiat currencies as arguments
 # also accept `--no-save` and `--no-print` as args

 $ ruby bin/crates usd eur rsd
 $ ruby bin/crates usd eur rsd --no-save
 $ ruby bin/crates usd eur rsd --no-print

How to use

Initialize new object with your own configuration. If you want to use defaults:

 # you can edit this in 'bin/crates'

 - #coins: [BTC, LTC, XMR, ETH, BCH, ZEC]
 - #save:  true  
 - #print: true 

Otherwise, #new accept 'currency' as argument, and an 'options hash':

 - first parameter is currency, defauilt is 'EUR'
 - other accepted options are:  
     print: boolean
     save:  boolean
     coins: array

Example:

 # configure default values

 COINS = %w[ BTC XMR LTC ETH ZEC ].freeze
 PRINT = true
 SAVE  = true

 # create new object

 @rates = C::Rates.new( :eur, coins: COINS, print: PRINT, save: SAVE )

 # make single request

 @rates.get
 
 # C::Rates#get accept same args as #new, but do not change default values

 CURRENCIES = %w[ USD EUR RSD ].freeze

 CURRENCIES.each do |currency|
   @rates.get currency
  end

This will print/save data as configured, while making prices easily accessible with Rates#price(:symbol).

 # Getter method with all coins and values 

 @rates.prices
 # => { "BTC"=>48867.67, "XMR"=>200.31, "LTC"=>164.37 }
 # => Accessible with @rates['BTC']


 # Get price for each coin
 # C::Rates#price(:coin)

 @rates.price(:btc)      # accept symbol
 # => 48867.67

 @rates.price('xmr')     # or string
 # => 200.31

C::Rates has two setter methods:

 @rates.currency = 'EUR'

 @rates.coins = %w[BTC XMR LTC]

Other available objects are:

 # After new object is initialized, you can use:

 @rates.currency
 # => "EUR"

 @rates.coins
 # => "BTC, XMR, LTC"

 @rates.save?
 # => save output -> (true/false)

 @rates.print?
 # => print output -> (true/false)

 @rates.count
 # => 0 -> (number of fail requests)

 # After you call Rates#get:

 @rates.url
 # => constructed URL

 @rates.reponse
 # => response from RestClient.get (accept #code, #headers, #body)

 @rates.data
 # => JSON parsed object will all data about all coins

 @rates.table
 # => path to saved CSV file
 # => file is named CURRENCY_rates.csv (eur_rates.csv)

TO-DO

This gem is start of app that I am working on to help me with auto-trades. At the moment I use it to notify me when price change more then 2% from last trade. Then I perform crypto-to-crypto trade, and wait for price to change again. To make it reliable and worth of using, plan is to add next functions:

  • add more sources to get data from them
  • scrap more data into tables (only data I need)
  • add support for API-KEYS
  • rotate sources if requests are sent too often
  • add support for proxy and headers rotation
  • create charts from prices at given time (each 10min etc)
  • create GIF animation from charts per time (each 30 min etc)

PREVIEW

GIF

FAQs

Package last updated on 30 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc