flow_client 0.2.1 → 0.2.2

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: 91c782ac6146b291f2691e51a0ff9bf09fafb58d1fec9ec9d10ae80e3ea6c058
4
- data.tar.gz: e53438e01826e7a68c0868bed486ca51f256e42b2f574e62bee710be88217450
3
+ metadata.gz: 5af7d7f1ba7669936797c908286ae084ca35d28ce1403767c7e670516391c744
4
+ data.tar.gz: 9ece3c471fb71a3bd5fadaac858e72681ee5db0e9259cc6871c4c413e56b2f8a
5
5
  SHA512:
6
- metadata.gz: ecec4b82c34c78f62daf55f048cd7a384e17e14a721162eb40b69b00f9d24bc96bae36a03d9c81105fdaa0beb04632a6ce5a05f57b424d97dd1326db460b58a3
7
- data.tar.gz: a61e7d290d229a990df2e75af28f27f01ef73afbc5aaf8fabea882d8efbbf15e631fcaedf975076e1776a018194cc8ad6c3d304d0baaf5e344c962fc02e2d626
6
+ metadata.gz: 88ba90c30234850aea96ef88fa41592429634a475fce24d931396a17b1214fa6c9e4080e04d754cb7429629e007dff51a6ecf6a94346ccea0ddae02d7af8ddfc
7
+ data.tar.gz: 5b3a241597f592be576678ac36e6c2196bb9efca62442c2ba27dd8fb185db70028d30e6185845a122fa7276f43bac21195db3388308413927faad6b7032ebd7b
data/Gemfile.lock ADDED
@@ -0,0 +1,107 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ flow_client (0.2.2)
5
+ grpc
6
+ grpc-tools
7
+ json
8
+ openssl
9
+ rlp
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ ast (2.4.2)
15
+ coderay (1.1.3)
16
+ diff-lcs (1.4.4)
17
+ ffi (1.15.4)
18
+ formatador (0.3.0)
19
+ google-protobuf (3.19.1-x86_64-darwin)
20
+ googleapis-common-protos-types (1.3.0)
21
+ google-protobuf (~> 3.14)
22
+ grpc (1.41.0-universal-darwin)
23
+ google-protobuf (~> 3.17)
24
+ googleapis-common-protos-types (~> 1.0)
25
+ grpc-tools (1.41.0)
26
+ guard (2.18.0)
27
+ formatador (>= 0.2.4)
28
+ listen (>= 2.7, < 4.0)
29
+ lumberjack (>= 1.0.12, < 2.0)
30
+ nenv (~> 0.1)
31
+ notiffany (~> 0.0)
32
+ pry (>= 0.13.0)
33
+ shellany (~> 0.0)
34
+ thor (>= 0.18.1)
35
+ guard-compat (1.2.1)
36
+ guard-rspec (4.7.3)
37
+ guard (~> 2.1)
38
+ guard-compat (~> 1.1)
39
+ rspec (>= 2.99.0, < 4.0)
40
+ ipaddr (1.2.3)
41
+ json (2.6.1)
42
+ listen (3.7.0)
43
+ rb-fsevent (~> 0.10, >= 0.10.3)
44
+ rb-inotify (~> 0.9, >= 0.9.10)
45
+ lumberjack (1.2.8)
46
+ method_source (1.0.0)
47
+ nenv (0.3.0)
48
+ notiffany (0.1.3)
49
+ nenv (~> 0.1)
50
+ shellany (~> 0.0)
51
+ openssl (2.2.1)
52
+ ipaddr
53
+ parallel (1.21.0)
54
+ parser (3.0.2.0)
55
+ ast (~> 2.4.1)
56
+ pry (0.14.1)
57
+ coderay (~> 1.1)
58
+ method_source (~> 1.0)
59
+ rainbow (3.0.0)
60
+ rake (13.0.6)
61
+ rb-fsevent (0.11.0)
62
+ rb-inotify (0.10.1)
63
+ ffi (~> 1.0)
64
+ regexp_parser (2.1.1)
65
+ rexml (3.2.5)
66
+ rlp (0.7.3)
67
+ rspec (3.10.0)
68
+ rspec-core (~> 3.10.0)
69
+ rspec-expectations (~> 3.10.0)
70
+ rspec-mocks (~> 3.10.0)
71
+ rspec-core (3.10.1)
72
+ rspec-support (~> 3.10.0)
73
+ rspec-expectations (3.10.1)
74
+ diff-lcs (>= 1.2.0, < 2.0)
75
+ rspec-support (~> 3.10.0)
76
+ rspec-mocks (3.10.2)
77
+ diff-lcs (>= 1.2.0, < 2.0)
78
+ rspec-support (~> 3.10.0)
79
+ rspec-support (3.10.3)
80
+ rubocop (1.22.3)
81
+ parallel (~> 1.10)
82
+ parser (>= 3.0.0.0)
83
+ rainbow (>= 2.2.2, < 4.0)
84
+ regexp_parser (>= 1.8, < 3.0)
85
+ rexml
86
+ rubocop-ast (>= 1.12.0, < 2.0)
87
+ ruby-progressbar (~> 1.7)
88
+ unicode-display_width (>= 1.4.0, < 3.0)
89
+ rubocop-ast (1.13.0)
90
+ parser (>= 3.0.1.1)
91
+ ruby-progressbar (1.11.0)
92
+ shellany (0.0.1)
93
+ thor (1.1.0)
94
+ unicode-display_width (2.1.0)
95
+
96
+ PLATFORMS
97
+ x86_64-darwin-20
98
+
99
+ DEPENDENCIES
100
+ flow_client!
101
+ guard-rspec (~> 4.7)
102
+ rake (~> 13.0)
103
+ rspec (~> 3.0)
104
+ rubocop (~> 1.22)
105
+
106
+ BUNDLED WITH
107
+ 2.2.26
data/README.md CHANGED
@@ -669,7 +669,7 @@ After a transaction has been [built](#build-transactions) and [signed](#sign-tra
669
669
  ```ruby
670
670
  tx_res = client.send_transaction(@transaction)
671
671
  client.wait_for_transaction(tx_res.id) do |response|
672
- expect(response.status_code).to eq(0)
672
+ # use response here
673
673
  end
674
674
  ```
675
675
 
data/bin/console CHANGED
File without changes
@@ -24,6 +24,7 @@ module FlowClient
24
24
  @keys = keys
25
25
  @address = address
26
26
  @balance = balance
27
+ @contracts = contracts
27
28
  @contracts = {}
28
29
  end
29
30
  end
@@ -1,5 +1,6 @@
1
- module FlowClient
1
+ # frozen_string_literal: true
2
2
 
3
+ module FlowClient
3
4
  # Represents a block
4
5
  class Block
5
6
  attr_accessor :id,
@@ -9,7 +10,7 @@ module FlowClient
9
10
  :collection_guarantees,
10
11
  :block_seals,
11
12
  :signatures
12
-
13
+
13
14
  def initialize
14
15
  @id = nil
15
16
  @parent_id = nil
@@ -26,8 +27,12 @@ module FlowClient
26
27
  block.parent_id = block_response.block.parent_id.unpack1("H*")
27
28
  block.height = block_response.block.height
28
29
  block.timestamp = FlowClient::Utils.parse_protobuf_timestamp(block_response.block.timestamp)
29
- block.collection_guarantees = block_response.block.collection_guarantees.to_a.map { |cg| FlowClient::CollectionGuarantee.parse_grpc_type(cg) }
30
- block.block_seals = block_response.block.block_seals.to_a.map { |seal| FlowClient::BlockSeal.parse_grpc_type(seal) }
30
+ block.collection_guarantees = block_response.block.collection_guarantees.to_a.map do |cg|
31
+ FlowClient::CollectionGuarantee.parse_grpc_type(cg)
32
+ end
33
+ block.block_seals = block_response.block.block_seals.to_a.map do |seal|
34
+ FlowClient::BlockSeal.parse_grpc_type(seal)
35
+ end
31
36
  block.signatures = block_response.block.signatures.to_a.map { |sig| sig.unpack1("H*") }
32
37
  block
33
38
  end
@@ -51,7 +56,9 @@ module FlowClient
51
56
  block_seal = BlockSeal.new
52
57
  block_seal.block_id = grpc_type.block_id.unpack1("H*")
53
58
  block_seal.execution_receipt_id = grpc_type.execution_receipt_id.unpack1("H*")
54
- block_seal.execution_receipt_signatures = grpc_type.execution_receipt_signatures.to_a.map { |sig| sig.unpack1("H*") }
59
+ block_seal.execution_receipt_signatures = grpc_type.execution_receipt_signatures.to_a.map do |sig|
60
+ sig.unpack1("H*")
61
+ end
55
62
  block_seal.result_approval_signatures = grpc_type.result_approval_signatures.to_a.map { |sig| sig.unpack1("H*") }
56
63
  block_seal
57
64
  end
@@ -61,8 +68,7 @@ module FlowClient
61
68
  class BlockHeader
62
69
  attr_accessor :id, :parent_id, :height, :timestamp
63
70
 
64
- def initialize
65
- end
71
+ def initialize; end
66
72
 
67
73
  def self.parse_grpc_type(grpc_type)
68
74
  header = BlockHeader.new
@@ -72,4 +78,4 @@ module FlowClient
72
78
  header
73
79
  end
74
80
  end
75
- end
81
+ end
@@ -1,16 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "ostruct"
2
4
 
3
5
  module FlowClient
4
6
  module CadenceType
7
+ # Returns an OpenStruct representing a Cadence String type
8
+ #
9
+ # @example
10
+ # @arg = FlowClient::CadenceType.String("Hello world!")
11
+ #
12
+ # @param [String] the string value
13
+ #
14
+ # @returns [OpenStruct] the Cadence String struct
5
15
  def self.String(value)
6
16
  OpenStruct.new(type: "String", value: value.to_s)
7
17
  end
8
18
 
19
+ # Returns an OpenStruct representing a Cadence Optional type
20
+ #
21
+ # @example
22
+ # @arg = FlowClient::CadenceType.Optional("Hello world!")
23
+ # @arg = FlowClient::CadenceType.Optional()
24
+ #
25
+ # @param [String] the string value
26
+ #
27
+ # @returns [OpenStruct] the Cadence Optional struct
9
28
  def self.Optional(value = nil)
10
29
  OpenStruct.new(type: "Optional", value: value)
11
30
  end
12
31
 
13
- def self.Void()
32
+ # Returns an OpenStruct representing a Cadence Void type
33
+ #
34
+ # @example
35
+ # @arg = FlowClient::CadenceType.Void()
36
+ #
37
+ # @returns [OpenStruct] the Cadence Void struct
38
+ def self.Void
14
39
  OpenStruct.new(type: "Void")
15
40
  end
16
41
 
@@ -62,14 +87,6 @@ module FlowClient
62
87
  OpenStruct.new(type: "UInt64", value: value.to_s)
63
88
  end
64
89
 
65
- def self.Int64(value)
66
- OpenStruct.new(type: "Int64", value: value.to_s)
67
- end
68
-
69
- def self.UInt64(value)
70
- OpenStruct.new(type: "UInt64", value: value.to_s)
71
- end
72
-
73
90
  def self.Int128(value)
74
91
  OpenStruct.new(type: "Int128", value: value.to_s)
75
92
  end
@@ -123,9 +140,9 @@ module FlowClient
123
140
  end
124
141
 
125
142
  def self.Path(domain, identifier)
126
- raise raise ArgumentError.new(
127
- "Domain can only be one of storage, private or public"
128
- ) unless ["storage", "private", "public"].include? domain.to_s.downcase
143
+ unless %w[storage private public].include? domain.to_s.downcase
144
+ raise raise ArgumentError, "Domain can only be one of storage, private or public"
145
+ end
129
146
 
130
147
  OpenStruct.new(
131
148
  type: "Path",
@@ -149,8 +166,11 @@ module FlowClient
149
166
  end
150
167
 
151
168
  def self.Composite(type, value)
152
- valid_types = [:struct, :resource, :event, :contract, :enum]
153
- raise ArgumentError.new("incorrect type, expected :struct, :resource, :event, :contract or :enum") unless valid_types.include? type
169
+ valid_types = %i[struct resource event contract enum]
170
+ unless valid_types.include? type
171
+ raise ArgumentError, "incorrect type, expected :struct, :resource, :event, :contract or :enum"
172
+ end
173
+
154
174
  OpenStruct.new(type: type.to_s.capitalize, value: value)
155
175
  end
156
176
 
@@ -162,4 +182,4 @@ module FlowClient
162
182
  OpenStruct.new(name: name, value: value)
163
183
  end
164
184
  end
165
- end
185
+ end
@@ -31,6 +31,8 @@ module FlowClient
31
31
  # Returns an account for the address specified at the latest
32
32
  # block.
33
33
  #
34
+ # @param [String] the address string value
35
+ #
34
36
  # @return [FlowClient::Account] the account
35
37
  def get_account(address)
36
38
  req = Access::GetAccountAtLatestBlockRequest.new(address: to_bytes(address))
@@ -252,6 +254,8 @@ module FlowClient
252
254
 
253
255
  # Returns the latest with height
254
256
  #
257
+ # @param [Integer] block height
258
+ #
255
259
  # @return [FlowClient::Block] the block
256
260
  def get_block_by_height(height)
257
261
  req = Access::GetBlockByHeightRequest.new(
@@ -265,6 +269,8 @@ module FlowClient
265
269
 
266
270
  # Returns the collection with id
267
271
  #
272
+ # @param [String] collection id
273
+ #
268
274
  # @return [FlowClient::Collection] the collection
269
275
  def get_collection_by_id(id)
270
276
  req = Access::GetCollectionByIDRequest.new(
@@ -276,7 +282,13 @@ module FlowClient
276
282
 
277
283
  # :section: Events
278
284
 
279
- # Returns events of the given type between the start and end block heights.
285
+ # Returns events of the given type between the start and end block heights
286
+ #
287
+ # @param [String] event name
288
+ # @param [Integer] start block height
289
+ # @param [Integer] end block height
290
+ #
291
+ # @return [FlowClient::EventsResult] the events response
280
292
  def get_events(type, start_height, end_height)
281
293
  req = Access::GetEventsForHeightRangeRequest.new(
282
294
  type: type,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FlowClient
2
4
  class Collection
3
5
  attr_accessor :id, :transaction_ids
@@ -30,4 +32,4 @@ module FlowClient
30
32
  collection_guarantee
31
33
  end
32
34
  end
33
- end
35
+ end
@@ -19,7 +19,7 @@ module FlowClient
19
19
  def self.sign(data, private_key_hex, hash_algo = HashAlgos::SHA3_256)
20
20
  ssl_key = FlowClient::Crypto.key_from_hex_keys(private_key_hex)
21
21
  # TODO: Fix this so that both hashing algos will work
22
- asn = ssl_key.dsa_sign_asn1(OpenSSL::Digest.digest("SHA3-256", data))
22
+ asn = ssl_key.dsa_sign_asn1(OpenSSL::Digest.digest(hash_algo, data))
23
23
  r, s = OpenSSL::ASN1.decode(asn).value
24
24
  combined_bytes = Utils.left_pad_bytes([r.value.to_s(16)].pack("H*").unpack("C*"), 32) +
25
25
  Utils.left_pad_bytes([s.value.to_s(16)].pack("H*").unpack("C*"), 32)
@@ -46,7 +46,7 @@ module FlowClient
46
46
  # Crypto::Curves::SECP256K1
47
47
  #
48
48
  # The 04 prefix indicating that the public key is uncompressed is stripped.
49
- # https://datatracker.ietf.org/doc/html/rfc5480
49
+ # @see https://datatracker.ietf.org/doc/html/rfc5480
50
50
  #
51
51
  # Usage example:
52
52
  # private_key, public_key = FlowClient::Crypto.generate_key_pair(FlowClient::Crypto::Curves::P256)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FlowClient
2
4
  class EventsResult
3
5
  attr_accessor :block_id,
@@ -9,7 +11,7 @@ module FlowClient
9
11
  @block_id = nil
10
12
  @block_height = nil
11
13
  @events = nil
12
- @block_timestamp= nil
14
+ @block_timestamp = nil
13
15
  end
14
16
 
15
17
  def self.parse_grpc_type(type)
@@ -28,7 +30,7 @@ module FlowClient
28
30
  :transaction_index,
29
31
  :event_index,
30
32
  :payload
31
-
33
+
32
34
  def initialize
33
35
  @type = nil
34
36
  @transaction_id = nil
@@ -47,4 +49,4 @@ module FlowClient
47
49
  event
48
50
  end
49
51
  end
50
- end
52
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FlowClient
2
4
  class ProposalKey
3
5
  attr_accessor :address,
@@ -18,4 +20,4 @@ module FlowClient
18
20
  signature
19
21
  end
20
22
  end
21
- end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FlowClient
2
4
  class Signature
3
5
  attr_accessor :address,
@@ -18,4 +20,4 @@ module FlowClient
18
20
  signature
19
21
  end
20
22
  end
21
- end
23
+ end
@@ -16,8 +16,6 @@ module FlowClient
16
16
  :payer_address,
17
17
  :authorizer_addresses,
18
18
  :address_aliases,
19
- :envelope_signatures,
20
- :payload_signatures,
21
19
  :proposal_key
22
20
 
23
21
  attr_reader :envelope_signatures, :payload_signatures
@@ -36,7 +34,7 @@ module FlowClient
36
34
 
37
35
  def arguments=(arguments)
38
36
  arguments.to_a.each do |arg|
39
- processed_arg = arg.class == OpenStruct ? Utils.openstruct_to_json(arg) : arg
37
+ processed_arg = arg.instance_of?(OpenStruct) ? Utils.openstruct_to_json(arg) : arg
40
38
  @arguments << processed_arg
41
39
  end
42
40
  end
@@ -189,4 +187,4 @@ module FlowClient
189
187
  response
190
188
  end
191
189
  end
192
- end
190
+ end
@@ -47,18 +47,7 @@ module FlowClient
47
47
 
48
48
  def self.openstruct_to_json(struct)
49
49
  struct.deep_to_h.to_json
50
- # struct.each_pair.map do |key, value|
51
- # [
52
- # key,
53
- # case value
54
- # when OpenStruct then value.deep_to_h
55
- # when Array then value.map {|el| el.class == OpenStruct ? el.deep_to_h : el}
56
- # else value
57
- # end
58
- # ]
59
- # end.to_h.to_json
60
50
  end
61
-
62
51
  end
63
52
  end
64
53
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FlowClient
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.2"
5
5
  end
data/lib/flow_client.rb CHANGED
@@ -17,6 +17,6 @@ module FlowClient
17
17
  require "flow_client/signer"
18
18
  require "flow_client/proposal_key"
19
19
  require "flow_client/event"
20
- require "flow_client/cadence_type.rb"
20
+ require "flow_client/cadence_type"
21
21
  require "flow_client/signature"
22
22
  end
data/template.md CHANGED
@@ -669,7 +669,7 @@ After a transaction has been [built](#build-transactions) and [signed](#sign-tra
669
669
  ```ruby
670
670
  tx_res = client.send_transaction(@transaction)
671
671
  client.wait_for_transaction(tx_res.id) do |response|
672
- expect(response.status_code).to eq(0)
672
+ # use response here
673
673
  end
674
674
  ```
675
675
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flow_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nico du Plessis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-10 00:00:00.000000000 Z
11
+ date: 2021-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grpc
@@ -94,6 +94,7 @@ files:
94
94
  - CHANGELOG.md
95
95
  - CODE_OF_CONDUCT.md
96
96
  - Gemfile
97
+ - Gemfile.lock
97
98
  - Guardfile
98
99
  - LICENSE.txt
99
100
  - README.md
@@ -155,7 +156,7 @@ metadata:
155
156
  homepage_uri: https://github.com/glucode/flow_client
156
157
  source_code_uri: https://github.com/glucode/flow_client
157
158
  changelog_uri: https://github.com/glucode/flow_client
158
- post_install_message:
159
+ post_install_message:
159
160
  rdoc_options: []
160
161
  require_paths:
161
162
  - lib
@@ -170,8 +171,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
171
  - !ruby/object:Gem::Version
171
172
  version: '0'
172
173
  requirements: []
173
- rubygems_version: 3.0.3.1
174
- signing_key:
174
+ rubygems_version: 3.2.15
175
+ signing_key:
175
176
  specification_version: 4
176
177
  summary: A Ruby client for the Flow blockchain
177
178
  test_files: []