Class: Utils

Inherits:
Object
  • Object
show all
Defined in:
lib/utils.rb

Overview

General use utilities for SimBot

Class Method Summary collapse

Class Method Details

.bchbtc_pricefloat

fetch bch/btc price from coin market cap

Returns:

  • (float)

    rate



117
118
119
120
121
# File 'lib/utils.rb', line 117

def self.bchbtc_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1831/?convert=BTC')
  hash = JSON.parse (response.body)
  hash['data']['quotes']['BTC']['price'].to_f.round(4)
end

.bchxrp_pricefloat

fetch bch/xrp price from coin market cap

Returns:

  • (float)

    rate



109
110
111
112
113
# File 'lib/utils.rb', line 109

def self.bchxrp_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1831/?convert=XRP')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['XRP']['price'].to_f.round(4)
end

.binance_order_bookfloat

fetch binance order book

Returns:

  • (float)

    rate



149
150
151
152
153
154
155
# File 'lib/utils.rb', line 149

def self.binance_order_book
  response = RestClient.get('https://api.binance.com/api/v1/depth?symbol=BCCBTC&limit=500')
  hash = JSON.parse(response.body)
  bids =  hash['bids']
  asks =  hash['asks']
  { bids: bids, asks: asks }
end

.binane_usdtbtc_order_bookfloat

fetch binance order book

Returns:

  • (float)

    rate



159
160
161
162
163
164
165
# File 'lib/utils.rb', line 159

def self.binane_usdtbtc_order_book
  response = RestClient.get('https://api.binance.com/api/v1/depth?symbol=BTCUSDT&limit=500')
  hash = JSON.parse(response.body)
  bids =  hash['bids']
  asks =  hash['asks']
  { bids: bids, asks: asks }
end

.btcltc_pricefloat

fetch btc/ltc price from coin market cap

Returns:

  • (float)

    rate



101
102
103
104
105
# File 'lib/utils.rb', line 101

def self.btcltc_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1/?convert=LTC')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['LTC']['price'].to_f.round(4)
end

.btcusd_pricefloat

fetch btc/usd price from coin market cap

Returns:

  • (float)

    rate



61
62
63
64
65
# File 'lib/utils.rb', line 61

def self.btcusd_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1/?convert=USD')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['USD']['price'].to_f.round(4)
end

.btcxrp_pricefloat

fetch btc/xrp price from coin market cap

Returns:

  • (float)

    rate



125
126
127
128
129
# File 'lib/utils.rb', line 125

def self.btcxrp_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1/?convert=XRP')
  hash = JSON.parse (response.body)
  hash['data']['quotes']['XRP']['price'].to_f.round(4)
end

.cmc_dataArray

Returns cmc data.

Returns:

  • (Array)

    cmc data



219
220
221
222
223
224
225
226
227
228
229
230
231
232
# File 'lib/utils.rb', line 219

def self.cmc_data
  data = []
  (0...16).each do |start|
    response = RestClient.get("https://api.coinmarketcap.com/v2/ticker/?start=#{start * 100 + 1}")
    hash = JSON.parse (response.body)
    hash['data'].each do |key, coin|
      row = [coin['name'], coin['symbol'],
             coin['quotes']['USD']['market_cap'].to_f,
             coin['quotes']['USD']['volume_24h'].to_f]
      data.push(row)
    end
  end
  data
end

.eoseth_pricefloat

fetch eos/eth price from coin market cap

Returns:

  • (float)

    rate



133
134
135
136
137
# File 'lib/utils.rb', line 133

def self.eoseth_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1765/?convert=ETH')
  hash = JSON.parse (response.body)
  return hash['data']['quotes']['ETH']['price'].to_f.round(4)
end

.ethusd_pricefloat

fetch eos/eth price from coin market cap

Returns:

  • (float)

    rate



141
142
143
144
145
# File 'lib/utils.rb', line 141

def self.ethusd_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/1027/?convert=USD')
  hash = JSON.parse (response.body)
  return hash['data']['quotes']['USD']['price'].to_f.round(4)
end

.find_and_replace(file, replce_string, data) ⇒ Object



205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/utils.rb', line 205

def self.find_and_replace(file, replce_string, data)
  i = 0
  result = ''
  file.each_line do |line|
    if line.include? "{var}"
      line = line.gsub(replce_string, data[i])
      i += 1
    end
    result += line
  end
  result
end

.kill_process(pid) ⇒ FalseClass and TrueClass

Try and read the existing pid from the pid file and signal the process. Returns true for a non blocking status.

Parameters:

  • pid (Integer)

Returns:

  • (FalseClass and TrueClass)


171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/utils.rb', line 171

def self.kill_process(pid)
  opid = File.read("#{pid}.pid").strip.to_i
  Process.kill "HUP", opid
  File.delete("#{pid}.pid")
  File.delete("#{pid}.outfile")
  File.delete("#{pid}.errfile")
  puts "Stopped process #{pid}"
  true
rescue Errno::ENOENT
  $stdout.puts "#{pid} did not exist: Errno::ENOENT"
  true
rescue Errno::ESRCH
  $stdout.puts "The process #{opid} did not exist: Errno::ESRCH"
  true
rescue Errno::EPERM
  $stderr.puts "Lack of privileges to manage the process #{opid}: Errno::EPERM"
  false
rescue ::Exception => e
  $stderr.puts "While signaling the PID, unexpected #{e.class}: #{e}"
  false
end

.ltcbch_pricefloat

fetch ltc/bch price from coin market cap

Returns:

  • (float)

    rate



77
78
79
80
81
# File 'lib/utils.rb', line 77

def self.ltcbch_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/2/?convert=BCH')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['BCH']['price'].to_f.round(4)
end

.ltcbtc_pricefloat

fetch ltc/btc price from coin market cap

Returns:

  • (float)

    rate



85
86
87
88
89
# File 'lib/utils.rb', line 85

def self.ltcbtc_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/2/?convert=BTC')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['BTC']['price'].to_f.round(4)
end

.ltcxrp_pricefloat

fetch ltc/xrp price from coin market cap

Returns:

  • (float)

    rate



69
70
71
72
73
# File 'lib/utils.rb', line 69

def self.ltcxrp_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/2/?convert=XRP')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['XRP']['price'].to_f.round(4)
end

.new_sheet(name) ⇒ Object



253
254
255
256
257
# File 'lib/utils.rb', line 253

def self.new_sheet(name)
  book = Spreadsheet::Workbook.new
  book.write(name)
  puts "#{name} Created"
end

.quote(market) ⇒ FalseClass and Float

accept market paramter and return the coinmarket cap quote for said market

Parameters:

  • market (String)

Returns:

  • (FalseClass and Float)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/utils.rb', line 7

def self.quote(market)
  case market
  when 'bchxrp'
    bchxrp_price
  when 'tusdzar'
    tusdzar_price
  when 'xrpzar'
    xrpusd_price*tusdzar_price
  when 'ethzar'
    ethusd_price*tusdzar_price
  when 'btczar'
    btcusd_price*tusdzar_price
  when 'bchbtc'
    bchbtc_price
  when 'btcxrp'
    btcxrp_price
  when 'eoseth'
    eoseth_price
  when 'btcltc'
    btcltc_price
  when 'ltcbtc'
    ltcbtc_price
  when 'ltcbch'
    ltcbch_price
  when 'ltcxrp'
    ltcxrp_price
  when 'btcusd'
    btcusd_price
  when 'btcbch'
    1/bchbtc_price
  else
    false
  end
end

.rand_for_hour(min, max) ⇒ Object



92
93
94
95
96
97
98
# File 'lib/utils.rb', line 92

def self.rand_for_hour(min, max)
  if @prev_time != Time.now.hour
    @rand_val = rand(min...max)
    @prev_time = Time.now.hour
  end
  @rand_val
end

.read_from_spreadsheet(name) ⇒ Array

Parameters:

  • name (String)

Returns:

  • (Array)


261
262
263
264
265
266
267
268
269
270
# File 'lib/utils.rb', line 261

def self.read_from_spreadsheet(name)
  data = []
  book = Spreadsheet.open(name)
  sheet1 = book.worksheet(0) # can use an index or worksheet name
  sheet1.each do |row|
    break if row[0].nil? # if first cell empty
    data.push(row)
  end
  data
end

.send_mail(data_file, template_file, email, password) ⇒ Object



193
194
195
196
197
198
199
200
201
202
203
# File 'lib/utils.rb', line 193

def self.send_mail(data_file, template_file, email, password)
  m = Mailer.new(email, password)
  data = read_from_spreadsheet(data_file)
  data.delete_at(0)
  data.each do |row|
    File.open(template_file, "r") do |f|
      m.send(row[2], row[3], '[email protected]', 'COLLABORATION', find_and_replace(f, '{var}', row))
      puts "Sent mail to #{row[2]}"
    end
  end
end

.tusdzar_pricefloat

fetch btc/usd price from coin market cap

Returns:

  • (float)

    rate



44
45
46
47
48
# File 'lib/utils.rb', line 44

def self.tusdzar_price
  response = RestClient.get('https://www.freeforexapi.com/api/live?pairs=USDZAR')
  hash = JSON.parse(response.body)
  hash['rates']['USDZAR']['rate'].to_f.round(2)
end

.write_to_spreadsheet(data, name) ⇒ NilClass

Parameters:

  • data (Array)
  • name (String)

Returns:

  • (NilClass)


237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/utils.rb', line 237

def self.write_to_spreadsheet(data, name)
  book = Spreadsheet::Workbook.new
  sheet = book.create_worksheet(name: 'coin_data')
  rc = 1
  data.each do |row|
    col = 0
    row.each do |cell|
      sheet[rc, col] = cell
      col += 1
    end
    rc += 1
  end
  book.write(name)
  puts "Data written to #{name}"
end

.xrpusd_pricefloat

fetch btc/usd price from coin market cap

Returns:

  • (float)

    rate



53
54
55
56
57
# File 'lib/utils.rb', line 53

def self.xrpusd_price
  response = RestClient.get('https://api.coinmarketcap.com/v2/ticker/52/?convert=USD')
  hash = JSON.parse(response.body)
  hash['data']['quotes']['USD']['price'].to_f.round(4)
end