cryptosis 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/bin/cryptosis +53 -0
  3. metadata +59 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 715641f7f45a1b2ebe8f4f2e0e6aca453f206e19
4
+ data.tar.gz: '0009bf3be5ea07677d154e7959761e8c59ee0561'
5
+ SHA512:
6
+ metadata.gz: af3702aeb8424c04ac0c9988b3c4532f8102ecde83947c2c154f3ae5db0b3d71de861fbf36cf86ba813267e8a0ea97328215d3a03ec9311403f93918aae7898b
7
+ data.tar.gz: 1477b8f222fb4f7fba691ce5be95b6a9382903c779c4f7cbec19c583d940a731e040e5de217c1707e1680fc66288e2f72aa4b9e60729d6f86b3176fdf4d0dadf
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'uri'
4
+ require 'net/http'
5
+ require 'json'
6
+ require 'sqlite3'
7
+ require 'date'
8
+
9
+ # Creating cache sqlite3 cache database
10
+ CACHE_DB = SQLite3::Database.new "#{ENV['HOME']}/.cryptosis_cache.db"
11
+ rows = CACHE_DB.execute <<-SQL
12
+ CREATE TABLE IF NOT EXISTS cryptosis (
13
+ name VARCHAR(16),
14
+ last_update INT,
15
+ json TEXT
16
+ );
17
+ SQL
18
+
19
+ # Ask API method helper
20
+ def askapi(market)
21
+ resp = Net::HTTP.get(URI.parse("https://api.cryptonator.com/api/ticker/#{market}"))
22
+ CACHE_DB.execute("DELETE FROM cryptosis WHERE name = ?", market)
23
+ CACHE_DB.execute("INSERT INTO cryptosis (name, last_update, json) VALUES (?,?,?)",
24
+ market, DateTime.now.to_time.to_i, resp)
25
+ post_treatment(JSON.parse(resp))
26
+ end
27
+
28
+ # Treatment after API answered
29
+ def post_treatment(resp)
30
+ exit 10 if resp['success'] != true
31
+ exit 14 unless resp['ticker'].has_key? ARGV[1]
32
+ puts resp['ticker'][ARGV[1]]
33
+ end
34
+
35
+ # Check if first arg exists
36
+ exit 12 unless (market = ARGV[0]) != nil
37
+
38
+ # Calling API or loading cache file if within 5 minutes window
39
+ cache_search = CACHE_DB.execute("SELECT * FROM cryptosis WHERE name = ?", market)
40
+
41
+ if cache_search.count == 0
42
+ # There is no cache, creating it...
43
+ askapi(market)
44
+ else
45
+ cache = cache_search.first
46
+ if DateTime.now.to_time.to_i - cache[1] > 300
47
+ # Cache is outdated, renew it
48
+ askapi(market)
49
+ else
50
+ # Cache is good, using it
51
+ post_treatment(JSON.parse(cache[2]))
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cryptosis
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jérémy SEBAN
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sqlite3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ description: Check crypto-currencies prices with a smart cache
28
+ email: jeremy@seban.eu
29
+ executables:
30
+ - cryptosis
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/cryptosis
35
+ homepage: https://github.com/HipsterWhale/cryptosis
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubyforge_project:
55
+ rubygems_version: 2.5.2
56
+ signing_key:
57
+ specification_version: 4
58
+ summary: 'Cryptosis : check crypto-currencies prices'
59
+ test_files: []