kryolite 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44ae3d8a03dc079e82f7278441859852ead669d3bdf91c049e72dd3463f78c29
4
- data.tar.gz: 7b1cf28fa333fd24422584b09e3e02e6869a1613e1b751ad9338d0467b67190d
3
+ metadata.gz: 23925f8b897f80b72bc758bfae2842c92504e100916cf6a7c412b3bdff55177b
4
+ data.tar.gz: 1b149ce0bc43789743c9300bc2d03145856af0d8e7f7b99e907883892496d714
5
5
  SHA512:
6
- metadata.gz: a79b7b427646707cad489c516ab380a0f630e732ea20c36230d38a94b808fd2afbee88f98ff529412a1f64930e4cf8644f7001be98ad8f099de8c1dc1bd8decd
7
- data.tar.gz: 984b5a87151f438cf6494f39823d9b1309fa7f8e9655cfdce198fa0751a3fa09ad423f0d6ff36ac3047bed395f579d172a4b8b239da9db5bed77f72686a3bfe1
6
+ metadata.gz: e0070c2c8c6905e977ae0d3c42ac8a92877897838d193f5706f8a9d8cfdeefb4e10acf83e56fe0355c2aa2ec01add33e120ced5b69bd1d24717244e34781a506
7
+ data.tar.gz: f7014d77b56b4f596fd497f6a8c5dc3ff0ea23056f4692f008964dfc166bd0dc59ec8497cdb24b7e3e4460d448b5b8054b38087f084fbb9f134c9fb83d4ad429
data/Gemfile.lock CHANGED
@@ -1,13 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kryolite (0.1.0)
4
+ kryolite (0.2.0)
5
+ excon (~> 0.96)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  ast (2.4.2)
10
11
  diff-lcs (1.5.0)
12
+ excon (0.96.0)
11
13
  json (2.6.3)
12
14
  language_server-protocol (3.17.0.2)
13
15
  parallel (1.22.1)
@@ -0,0 +1,9 @@
1
+ version: '3'
2
+
3
+ services:
4
+ daemon:
5
+ image: ghcr.io/kryolite-crypto/kryolite/daemon:v29
6
+ ports:
7
+ - 8888:80
8
+ environment:
9
+ - KRYOLITE__PEERS:0=""
data/e2e/all.rb ADDED
@@ -0,0 +1,32 @@
1
+ $stdout.sync = true
2
+
3
+ require "kryolite"
4
+
5
+ endpoint = ARGV[0]
6
+ wallet = ARGV[1]
7
+
8
+ d = Kryolite::Daemon.new endpoint
9
+ peers = d.peers
10
+ pp peers: peers
11
+
12
+ balance = d.balance wallet
13
+ pp balance: balance
14
+
15
+ blocktemplate = d.blocktemplate wallet
16
+ pp blocktemplate: blocktemplate
17
+
18
+ height = blocktemplate["height"]
19
+
20
+ block_pos_height = d.block_pos wallet, height
21
+ pp block_pos_height: block_pos_height
22
+
23
+ block_pow_height = d.block_pow wallet, height
24
+ pp block_pow_height: block_pow_height
25
+
26
+ block_pos_prev = d.block_pos wallet, height - 1
27
+ pp block_pos_prev: block_pos_prev
28
+
29
+ block_pow_prev = d.block_pow wallet, height - 1
30
+ pp block_pow_prev: block_pow_prev
31
+
32
+ puts "OK"
data/kryolite.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
 
30
30
  # Uncomment to register a new dependency of your gem
31
- # spec.add_dependency "example-gem", "~> 1.0"
31
+ spec.add_dependency "excon", "~> 0.96"
32
32
 
33
33
  # For more information and examples about making a new gem, check out our
34
34
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kryolite
4
+ class Daemon
5
+ def initialize url = nil, opts = {}
6
+ @client = Excon.new url, {
7
+ persistent: opts[:persistent] || true,
8
+ connect_timeout: opts[:connect_timeout] || opts[:timeout] || 5,
9
+ read_timeout: opts[:read_timeout] || opts[:timeout] || 5,
10
+ write_timeout: opts[:write_timeout] || opts[:timeout] || 5
11
+ }
12
+ end
13
+
14
+ def get path, status_or_statuses, opts = {}
15
+ statuses = if status_or_statuses.is_a? Array
16
+ status_or_statuses
17
+ else
18
+ [status_or_statuses]
19
+ end
20
+
21
+ response = @client.get({
22
+ path: path,
23
+ idempotent: opts[:idempotent] || true,
24
+ retry_limit: opts[:retry_limit] || 0,
25
+ retry_interval: opts[:retry_interval] || 1,
26
+ retry_errors: opts[:retry_errors] || Excon::DEFAULT_RETRY_ERRORS
27
+ })
28
+
29
+ unless statuses.include? response.status
30
+ raise Kryolite::UnknownStatusError.new "#{path} status was #{response.status}, not #{status}"
31
+ end
32
+
33
+ if response.status == 200
34
+ return JSON.parse(response.body)
35
+ end
36
+
37
+ nil
38
+ rescue Excon::Error::Timeout => ex
39
+ raise Kryolite::TimeoutError.new ex.message
40
+ end
41
+
42
+ def peers opts = {}
43
+ get "/peers", 200, opts
44
+ end
45
+
46
+ def balance wallet, opts = {}
47
+ get "/balance?wallet=#{wallet}", 200, opts
48
+ end
49
+
50
+ def blocktemplate wallet, opts = {}
51
+ get "/blocktemplate?wallet=#{wallet}", 200, opts
52
+ end
53
+
54
+ def block_pow wallet, height, opts = {}
55
+ get "/block/pow?wallet=#{wallet}&height=#{height}", [200, 204], opts
56
+ end
57
+
58
+ def block_pos wallet, height, opts = {}
59
+ get "/block/pos?wallet=#{wallet}&height=#{height}", [200, 204], opts
60
+ end
61
+ end
62
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kryolite
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/kryolite.rb CHANGED
@@ -1,8 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "excon"
4
+ require "json"
5
+
3
6
  require_relative "kryolite/version"
7
+ require_relative "kryolite/daemon"
4
8
 
5
9
  module Kryolite
6
10
  class Error < StandardError; end
7
- # Your code goes here...
11
+
12
+ class UnknownStatusError < Kryolite::Error; end
13
+
14
+ class TimeoutError < Kryolite::Error; end
8
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kryolite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kryolite
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
11
  date: 2023-01-06 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: excon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.96'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.96'
13
27
  description:
14
28
  email:
15
29
  - kryolite.crypto@gmail.com
@@ -26,8 +40,11 @@ files:
26
40
  - LICENSE.txt
27
41
  - README.md
28
42
  - Rakefile
43
+ - docker-compose.yml
44
+ - e2e/all.rb
29
45
  - kryolite.gemspec
30
46
  - lib/kryolite.rb
47
+ - lib/kryolite/daemon.rb
31
48
  - lib/kryolite/version.rb
32
49
  - sig/kryolite.rbs
33
50
  homepage: https://www.kryolite.io