etherclient 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9af23df9af87e24c88310f9958efe6a4f091c28b
4
+ data.tar.gz: 930f20e407540c36773c58a8ab64437c85324414
5
+ SHA512:
6
+ metadata.gz: 98d5bde4fed1cd03a6304a63dba13132bd0b51cf4834372fe0cb1dfc3127304ddbb38d71ee0b0cd342b5a92974f1fdb3ff90fa0c8a7beec1438b4818de83090f
7
+ data.tar.gz: 800c0a7817f3ba4ad4bc7ed276d8b8fe34c462d209242f336e6c175173cce192235def8c1ba59a1698d789676bc1b84c5b7697435402a2eec752c32b71336925
@@ -0,0 +1,3 @@
1
+ class EtherClient::Api
2
+ include EtherClient::Client
3
+ end
@@ -0,0 +1,36 @@
1
+ class EtherClient::Api::MinerApi < EtherClient::Api
2
+
3
+ def initialize(miner_id)
4
+ @miner_id = miner_id
5
+ end
6
+
7
+ def blocks
8
+ array = ethpool_request("miner/#{@miner_id}/blocks")
9
+ EtherClient::Model::MinerBlock.all(array)
10
+ end
11
+
12
+ def history
13
+ array = ethermine_request("miner/#{@miner_id}/history")
14
+ EtherClient::Model::MinerHistory.all(array)
15
+ end
16
+
17
+ def payouts
18
+ array = ethermine_request("miner/#{@miner_id}/payouts")
19
+ EtherClient::Model::MinerPayout.all(array)
20
+ end
21
+
22
+ def rounds
23
+ array = ethermine_request("miner/#{@miner_id}/rounds")
24
+ EtherClient::Model::MinerRound.all(array)
25
+ end
26
+
27
+ def settings
28
+ data = ethermine_request("miner/#{@miner_id}/settings")
29
+ EtherClient::Model::MinerSetting.new(data)
30
+ end
31
+
32
+ def statistics
33
+ data = ethermine_request("miner/#{@miner_id}/currentStats")
34
+ EtherClient::Model::MinerStatistic.new(data)
35
+ end
36
+ end
@@ -0,0 +1,27 @@
1
+ class EtherClient::Api::PoolApi < EtherClient::Api
2
+
3
+ def statistics
4
+ data = ethermine_request("poolStats")
5
+ EtherClient::Model::PoolStatistic.new(data)
6
+ end
7
+
8
+ def credits
9
+ array = ethpool_request("credits")
10
+ EtherClient::Model::PoolCredit.all(array)
11
+ end
12
+
13
+ def mined_blocks
14
+ array = ethermine_request("blocks/history")
15
+ EtherClient::Model::PoolMinedBlock.all(array)
16
+ end
17
+
18
+ def network
19
+ data = ethermine_request("networkStats")
20
+ EtherClient::Model::PoolNetwork.new(data)
21
+ end
22
+
23
+ def hashrate
24
+ array = ethermine_request("servers/history")
25
+ EtherClient::Model::PoolHashrate.all(array)
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ class EtherClient::Api::WorkerApi < EtherClient::Api
2
+
3
+ def initialize(miner_id, worker_id = nil)
4
+ @miner_id = miner_id
5
+ @worker_id = worker_id
6
+ end
7
+
8
+ def all_statistics
9
+ array = ethermine_request("miner/#{@miner_id}/workers")
10
+ EtherClient::Model::WorkerStatistic.all(array)
11
+ end
12
+
13
+ def historical_statistics
14
+ array = ethermine_request("miner/#{@miner_id}/worker/#{@worker_id}/history")
15
+ EtherClient::Model::WorkerHistoricalStatistic.all(array)
16
+ end
17
+
18
+ def statistics
19
+ data = ethermine_request("miner/#{@miner_id}/worker/#{@worker_id}/currentStats")
20
+ data['worker'] = @worker_id
21
+ EtherClient::Model::WorkerStatistic.new(data)
22
+ end
23
+
24
+ def monitor
25
+ array = ethermine_request("miner/#{@miner_id}/workers/monitor")
26
+ EtherClient::Model::WorkerMonitor.all(array)
27
+ end
28
+ end
@@ -0,0 +1,16 @@
1
+ module EtherClient::Attrs
2
+ def attrs(data)
3
+ data.each do |key, value|
4
+ attr_name = underscore(key)
5
+ self.instance_variable_set("@#{attr_name}", value)
6
+ self.class.__send__(:attr_accessor, attr_name)
7
+ end
8
+ end
9
+
10
+ def underscore(old_name)
11
+ new_name = old_name.gsub(/::/, '/').
12
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
13
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
14
+ tr("-", "_").downcase
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ module EtherClient::Client
5
+ ETHERMINE_URL = 'https://api.ethermine.org/'
6
+ ETHPOOL_URL = 'http://api.ethpool.org/'
7
+
8
+ def ethermine_request(uri)
9
+ send_request("#{ETHERMINE_URL}#{uri}")
10
+ end
11
+
12
+ def ethpool_request(uri)
13
+ send_request("#{ETHPOOL_URL}#{uri}")
14
+ end
15
+
16
+ def send_request(url)
17
+ request_uri = URI(url)
18
+ response = Net::HTTP.get_response(request_uri)
19
+ raise StandardError, response.body unless response.message == 'OK'
20
+ JSON.parse(response.body)['data']
21
+ end
22
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::MinerBlock < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::MinerHistory < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::MinerPayout < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::MinerRound < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::MinerSetting < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::MinerStatistic < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ class EtherClient::Model
2
+ include EtherClient::Attrs
3
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::PoolCredit < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::PoolHashrate< EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::PoolMinedBlock < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::PoolNetwork< EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::PoolStatistic < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::WorkerHistoricalStatistic < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::WorkerMonitor < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class EtherClient::Model::WorkerStatistic < EtherClient::Model
2
+
3
+ def initialize(data)
4
+ attrs data
5
+ end
6
+
7
+ def self.all(datas)
8
+ datas.map do |data|
9
+ self.new(data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,60 @@
1
+ class EtherClient
2
+ attr_reader :miner_id, :worker_id, :worker, :pool, :miner
3
+
4
+ def initialize(miner_id = nil, worker_id = nil)
5
+ @miner_id = miner_id
6
+ @worker_id = worker_id
7
+ set_apis
8
+ end
9
+
10
+ def miner_id=(miner_id)
11
+ @miner_id = miner_id
12
+ set_apis
13
+ end
14
+
15
+ def worker_id=(worker_id)
16
+ @worker_id = worker_id
17
+ set_apis
18
+ end
19
+
20
+ private
21
+ def set_apis
22
+ set_miner
23
+ set_pool
24
+ set_worker
25
+ end
26
+
27
+ def set_miner
28
+ @miner = Api::MinerApi.new(@miner_id)
29
+ end
30
+
31
+ def set_pool
32
+ @pool = Api::PoolApi.new
33
+ end
34
+
35
+ def set_worker
36
+ @worker = Api::WorkerApi.new(@miner_id, @worker_id)
37
+ end
38
+ end
39
+
40
+ require_relative 'etherclient/client'
41
+ require_relative 'etherclient/attrs'
42
+ require_relative 'etherclient/api/base_api'
43
+ require_relative 'etherclient/api/miner_api'
44
+ require_relative 'etherclient/api/pool_api'
45
+ require_relative 'etherclient/api/worker_api'
46
+ require_relative 'etherclient/models/model'
47
+ require_relative 'etherclient/models/miner/block'
48
+ require_relative 'etherclient/models/miner/history'
49
+ require_relative 'etherclient/models/miner/payout'
50
+ require_relative 'etherclient/models/miner/round'
51
+ require_relative 'etherclient/models/miner/setting'
52
+ require_relative 'etherclient/models/miner/statistic'
53
+ require_relative 'etherclient/models/pool/statistic'
54
+ require_relative 'etherclient/models/pool/credit'
55
+ require_relative 'etherclient/models/pool/mined_block'
56
+ require_relative 'etherclient/models/pool/network'
57
+ require_relative 'etherclient/models/pool/hashrate'
58
+ require_relative 'etherclient/models/worker/statistic'
59
+ require_relative 'etherclient/models/worker/historical_statistic'
60
+ require_relative 'etherclient/models/worker/monitor'
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: etherclient
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Luis Adrian Chavez Fregoso
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Client for ethermine.org & ethpool.org APIs
14
+ email: biolacf@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/etherclient.rb
20
+ - lib/etherclient/api/base_api.rb
21
+ - lib/etherclient/api/miner_api.rb
22
+ - lib/etherclient/api/pool_api.rb
23
+ - lib/etherclient/api/worker_api.rb
24
+ - lib/etherclient/attrs.rb
25
+ - lib/etherclient/client.rb
26
+ - lib/etherclient/models/miner/block.rb
27
+ - lib/etherclient/models/miner/history.rb
28
+ - lib/etherclient/models/miner/payout.rb
29
+ - lib/etherclient/models/miner/round.rb
30
+ - lib/etherclient/models/miner/setting.rb
31
+ - lib/etherclient/models/miner/statistic.rb
32
+ - lib/etherclient/models/model.rb
33
+ - lib/etherclient/models/pool/credit.rb
34
+ - lib/etherclient/models/pool/hashrate.rb
35
+ - lib/etherclient/models/pool/mined_block.rb
36
+ - lib/etherclient/models/pool/network.rb
37
+ - lib/etherclient/models/pool/statistic.rb
38
+ - lib/etherclient/models/worker/historical_statistic.rb
39
+ - lib/etherclient/models/worker/monitor.rb
40
+ - lib/etherclient/models/worker/statistic.rb
41
+ homepage: https://github.com/lacf95/etherclient
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.6.11
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Ethermine API client for Ruby!
65
+ test_files: []