sequence-sdk 1.5.2 → 2.pre.rc.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3b88f59594a3357d97526b9cf9710abb67faa89b
4
- data.tar.gz: 9a40a16ed0dc8ebbba81427678c896252f5076f1
2
+ SHA256:
3
+ metadata.gz: aa8125eb52fe8dbf7b905442ded7cae137c144161723ec224fffde4640dee208
4
+ data.tar.gz: 283e350688c0bea9a07c375ae6502743f0ceb50442a2a9398bc2673604c67736
5
5
  SHA512:
6
- metadata.gz: 25ef34d1bd3bb887588eed59d26a94e147bf75670656c0dd14333e65aba9aa6c724fa63ff89797f8652bc54063c4703ffda2ebaf74a937c5d1208036a7da7bf7
7
- data.tar.gz: 07f70a61daff65872b8e75c022d04116a7bdb471c1cb92f503117d2bde22a78d168d1a3d903001a83148043f58817f675ee9c5309adf61a846fcfccdf716fabf
6
+ metadata.gz: 7e3209b59c2b9e36a8c8e9e19926a923c23080cb31d46bed62425e2d4bde804b1924889caa3c4c8d0242e91c2d7622bd129ef44be388f6bbf8633a195b465737
7
+ data.tar.gz: c1d1a73d56753146d5c78788743d553cd0c74975d133bad62ea8586787b5fc3d87efddd47a78a7feb53bece656643eb4b3d069f18fff2f8c3c5af4316bf0df16
data/README.md CHANGED
@@ -7,14 +7,14 @@
7
7
  The Ruby SDK is available
8
8
  [via Rubygems](https://rubygems.org/gems/sequence-sdk).
9
9
 
10
- Ruby >= 2.2 is required. We recommend upgrading to Ruby >= 2.3. See
10
+ Ruby >= 2.3 is required. See
11
11
  [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/)
12
12
  for the language's schedule for security and bug fixes.
13
13
 
14
14
  Add the following to your `Gemfile`:
15
15
 
16
16
  ```ruby
17
- gem 'sequence-sdk', '~> 1.5.2'
17
+ gem 'sequence-sdk', '~> 2-rc.1'
18
18
  ```
19
19
 
20
20
  ### In your code
@@ -6,32 +6,20 @@ require_relative './query'
6
6
  require_relative './response_object'
7
7
 
8
8
  module Sequence
9
- # A container for asset balances on a ledger.
9
+ # An account is an object in Sequence that tracks ownership of tokens on a
10
+ # blockchain by creating and tracking control programs.
10
11
  class Account < ResponseObject
11
12
  # @!attribute [r] id
12
- # Unique, auto-generated identifier.
13
+ # Unique identifier of the account.
13
14
  # @return [String]
14
15
  attrib :id
15
16
 
16
- # @!attribute [r] alias
17
- # Deprecated. Use {#id} instead.
18
- # Unique, user-specified identifier.
19
- # @return [String]
20
- attrib :alias
21
-
22
17
  # @!attribute [r] key_ids
23
18
  # The set of key IDs used for signing transactions that spend from the
24
19
  # account.
25
20
  # @return [Array<String>]
26
21
  attrib(:key_ids)
27
22
 
28
- # @!attribute [r] keys
29
- # Deprecated. Use {#key_ids} instead.
30
- # The set of keys used for signing transactions that spend from the
31
- # account.
32
- # @return [Array<Key>]
33
- attrib(:keys) { |raw| raw.map { |k| Key.new(k) } }
34
-
35
23
  # @!attribute [r] quorum
36
24
  # The number of keys required to sign transactions that spend from the
37
25
  # account.
@@ -43,115 +31,54 @@ module Sequence
43
31
  # @return [Hash]
44
32
  attrib :tags
45
33
 
46
- # @deprecated Use {#key_ids} instead.
47
34
  class Key < ResponseObject
48
35
  attrib :id
49
- attrib :alias
50
36
  end
51
37
 
52
38
  class ClientModule < Sequence::ClientModule
53
- # Creates a new account in the ledger.
54
- # @param [Hash] opts
55
- # Options hash
56
- # @option opts [String] id
57
- # Unique, user-specified identifier.
58
- # @option opts [String] alias
59
- # Deprecated. Use :id instead.
60
- # Unique, user-specified identifier.
61
- # @option opts [Array<String>] key_ids
39
+ # Create a new account in the ledger.
40
+ # @param key_ids [Array<String>]
62
41
  # The key IDs used for signing transactions that spend from the account.
63
- # @option opts [Array<Hash>, Array<Sequence::Key>] keys
64
- # Deprecated. Use :key_ids instead.
65
- # The keys used for signing transactions that spend from the account. A
66
- # key can be either a key object, or a hash containing either an `id` or
67
- # `alias` field.
68
- # @option opts [Integer] quorum
42
+ # @param id [String]
43
+ # Unique identifier. Auto-generated if not specified.
44
+ # @param quorum [Integer]
69
45
  # The number of keys required to sign transactions that spend from the
70
46
  # account. Defaults to the number of keys provided.
71
- # @option opts [Hash] tags
47
+ # @param tags [Hash]
72
48
  # User-specified key-value data describing the account.
73
49
  # @return [Account]
74
- def create(opts = {})
75
- validate_inclusion_of!(
76
- opts,
77
- :alias,
78
- :id,
79
- :key_ids,
80
- :keys,
81
- :quorum,
82
- :tags,
50
+ def create(key_ids:, id: nil, quorum: nil, tags: nil)
51
+ raise ArgumentError, ':key_ids cannot be empty' if key_ids == []
52
+ Account.new(
53
+ client.session.request(
54
+ 'create-account',
55
+ id: id,
56
+ key_ids: key_ids,
57
+ quorum: quorum,
58
+ tags: tags,
59
+ ),
83
60
  )
84
- if (opts[:key_ids].nil? || opts[:key_ids].empty?) &&
85
- (opts[:keys].nil? || opts[:keys].empty?)
86
- raise(
87
- ArgumentError,
88
- ':key_ids or :keys (but not both) must be provided',
89
- )
90
- end
91
- Account.new(client.session.request('create-account', opts))
92
61
  end
93
62
 
94
- # Updates an account's tags.
95
- # @param [Hash] opts
96
- # Options hash
97
- # @option opts [String] id
98
- # The ID of the account. Either an ID or alias should be provided, but
99
- # not both.
100
- # @option opts [String] alias
101
- # Deprecated. Use :id instead.
102
- # The alias of the account. Either an ID or alias should be provided,
103
- # but not both.
104
- # @option opts [Hash] tags
63
+ # Update an account's tags.
64
+ # @param id [String]
65
+ # The ID of the account.
66
+ # @param tags [Hash]
105
67
  # A new set of tags, which will replace the existing tags.
106
68
  # @return [void]
107
- def update_tags(opts = {})
108
- validate_inclusion_of!(opts, :id, :alias, :tags)
109
- if (opts[:id].nil? || opts[:id].empty?) &&
110
- (opts[:alias].nil? || opts[:alias].empty?)
111
- raise ArgumentError, ':id or :alias (but not both) must be provided'
112
- end
113
- client.session.request('update-account-tags', opts)
69
+ def update_tags(id:, tags: nil)
70
+ raise ArgumentError, ':id cannot be blank' if id == ''
71
+ client.session.request('update-account-tags', id: id, tags: tags)
114
72
  end
115
73
 
116
- # @deprecated Use list instead.
117
- # Executes a query, returning an enumerable over individual accounts.
118
- # @param [Hash] opts
119
- # Options hash
120
- # @option opts [String] filter
74
+ # Filter accounts.
75
+ # @param filter [String]
121
76
  # A filter expression.
122
- # @option opts [Array<String|Integer>] filter_params
77
+ # @param filter_params [Array<String|Integer>]
123
78
  # A list of values that will be interpolated into the filter expression.
124
- # @option opts [Integer>] page_size
125
- # Deprecated. Use list.page(size: size) instead.
126
- # The number of items to return in the result set.
127
79
  # @return [Query]
128
- def query(opts = {})
129
- validate_inclusion_of!(
130
- opts,
131
- :filter,
132
- :filter_params,
133
- :page_size,
134
- :after,
135
- )
136
- Query.new(client, opts)
137
- end
138
-
139
- # Filters accounts.
140
- #
141
- # @param [Hash] opts
142
- # Options hash
143
- # @option opts [String] filter
144
- # A filter expression.
145
- # @option opts [Array<String|Integer>] filter_params
146
- # A list of values that will be interpolated into the filter expression.
147
- # @return [Query]
148
- def list(opts = {})
149
- validate_inclusion_of!(
150
- opts,
151
- :filter,
152
- :filter_params,
153
- )
154
- Query.new(client, opts)
80
+ def list(filter: nil, filter_params: nil)
81
+ Query.new(client, filter: filter, filter_params: filter_params)
155
82
  end
156
83
  end
157
84
 
@@ -53,79 +53,27 @@ module Sequence
53
53
  # @return [Hash]
54
54
  attrib :snapshot, snapshot: true
55
55
 
56
- # @!attribute [r] asset_id
57
- # Deprecated. Use {#flavor_id} instead.
58
- # The ID of the asset held by the action.
59
- # @return [String]
60
- attrib :asset_id
61
-
62
- # @!attribute [r] asset_alias
63
- # Deprecated. Use {#flavor_id} instead.
64
- # The alias of the asset held by the action.
65
- # @return [String]
66
- attrib :asset_alias
67
-
68
- # @!attribute [r] asset_tags
69
- # Deprecated. Use {#snapshot} instead.
70
- # The tags of the asset held by the action.
71
- # @return [Hash]
72
- attrib :asset_tags
73
-
74
56
  # @!attribute [r] source_account_id
75
57
  # The ID of the source account executing the action.
76
58
  # @return [String]
77
59
  attrib :source_account_id
78
60
 
79
- # @!attribute [r] source_account_alias
80
- # Deprecated. Use {#source_account_id} instead.
81
- # The alias of the source account executing the action.
82
- # @return [String]
83
- attrib :source_account_alias
84
-
85
- # @!attribute [r] source_account_tags
86
- # Deprecated. Use {#snapshot} instead.
87
- # The tags of the source account executing the action.
88
- # @return [Hash]
89
- attrib :source_account_tags
90
-
91
61
  # @!attribute [r] destination_account_id
92
62
  # The ID of the destination account affected by the action.
93
63
  # @return [String]
94
64
  attrib :destination_account_id
95
65
 
96
- # @!attribute [r] destination_account_alias
97
- # Deprecated. Use {#destination_account_id} instead.
98
- # The alias of the destination account affected by the action.
99
- # @return [String]
100
- attrib :destination_account_alias
101
-
102
- # @!attribute [r] destination_account_tags
103
- # Deprecated. Use {#snapshot} instead.
104
- # The tags of the destination account affected by the action.
105
- # @return [Hash]
106
- attrib :destination_account_tags
107
-
108
66
  # @!attribute [r] tags
109
67
  # User-specified key-value data embedded in the action.
110
68
  # @return [Hash]
111
69
  attrib :tags
112
70
 
113
- # @!attribute [r] reference_data
114
- # Deprecated. Use {#tags} instead.
115
- # User-specified key-value data embedded in the action.
116
- # @return [Hash]
117
- attrib :reference_data
118
-
119
71
  class ClientModule < Sequence::ClientModule
120
- # Executes a query, returning an enumerable over individual actions.
121
- # @param [Hash] opts
122
- # Options hash
123
- # @option opts [String] filter
72
+ # Execute a query, returning an enumerable over individual actions.
73
+ # @param filter [String]
124
74
  # A filter expression.
125
- # @option opts [Array<String|Integer>] filter_params
75
+ # @param filter_params [Array<String|Integer>]
126
76
  # A list of values that will be interpolated into the filter expression.
127
- # @option opts [Integer>] page_size
128
- # The number of items to return in the result set.
129
77
  # @return [Query]
130
78
  # @example List all actions after a certain time
131
79
  # ledger.actions.list(
@@ -135,38 +83,25 @@ module Sequence
135
83
  # puts 'timestamp: ' + action.timestamp
136
84
  # puts 'amount: ' + action.amount
137
85
  # end
138
- def list(opts = {})
139
- validate_inclusion_of!(
140
- opts,
141
- :filter,
142
- :filter_params,
143
- :page_size,
144
- :after,
145
- )
146
- ListQuery.new(client, opts)
86
+ def list(filter: nil, filter_params: nil)
87
+ ListQuery.new(client, filter: filter, filter_params: filter_params)
147
88
  end
148
89
 
149
- # Executes a query, returning an enumerable over individual actionsums.
150
- # @param [Hash] opts
151
- # Options hash
152
- # @option opts [String] filter
90
+ # Execute a query, returning an enumerable over sums of actions.
91
+ # @param filter [String]
153
92
  # A filter expression.
154
- # @option opts [Array<String|Integer>] filter_params
93
+ # @param filter_params [Array<String|Integer>]
155
94
  # A list of values that will be interpolated into the filter expression.
156
- # @option opts [Array<String>] group_by
95
+ # @param group_by [Array<String>]
157
96
  # A list of fields along which action values will be summed.
158
- # @option opts [Integer>] page_size
159
- # The number of items to return in the result set.
160
97
  # @return [Query]
161
- def sum(opts = {})
162
- validate_inclusion_of!(
163
- opts,
164
- :filter,
165
- :filter_params,
166
- :group_by,
167
- :page_size,
98
+ def sum(filter: nil, filter_params: nil, group_by: nil)
99
+ SumQuery.new(
100
+ client,
101
+ filter: filter,
102
+ filter_params: filter_params,
103
+ group_by: group_by,
168
104
  )
169
- SumQuery.new(client, opts)
170
105
  end
171
106
  end
172
107
 
@@ -2,12 +2,10 @@
2
2
 
3
3
  require_relative './account'
4
4
  require_relative './action'
5
- require_relative './asset'
6
- require_relative './balance'
7
- require_relative './contract'
8
5
  require_relative './dev_utils'
9
6
  require_relative './feed'
10
7
  require_relative './flavor'
8
+ require_relative './http_wrapper'
11
9
  require_relative './key'
12
10
  require_relative './stats'
13
11
  require_relative './token'
@@ -15,28 +13,29 @@ require_relative './transaction'
15
13
 
16
14
  module Sequence
17
15
  class Client
18
- # @param [Hash] opts
19
- # Options hash
20
- # @option opts [String] ledger_name
16
+ # Set up a Sequence client.
17
+ # This is the entry point for all other Sequence interaction.
18
+ # @param ledger_name [String]
21
19
  # Ledger name.
22
- # @option opts [String] ledger
23
- # Deprecated. Use :ledger_name instead.
24
- # Ledger name.
25
- # @option opts [String] credential
20
+ # @param credential [String]
26
21
  # API credential secret.
27
22
  # @return [Query]
28
- def initialize(opts = {})
29
- if (opts[:ledger_name].nil? || opts[:ledger_name].empty?) == (opts[:ledger].nil? || opts[:ledger].empty?)
30
- raise ArgumentError, ':ledger_name or :ledger (but not both) must be provided'
23
+ def initialize(ledger_name:, credential:)
24
+ if ledger_name.nil? || ledger_name == ''
25
+ raise ArgumentError, ':ledger_name cannot be blank'
31
26
  end
32
- if opts[:credential].nil? || opts[:credential].empty?
33
- raise ArgumentError, ':credential must be provided'
27
+ if credential.nil? || credential == ''
28
+ raise ArgumentError, ':credential cannot be blank'
34
29
  end
35
30
 
36
- if opts[:ledger_name].nil? || opts[:ledger_name].empty?
37
- opts[:ledger_name] = opts[:ledger]
38
- end
39
- @opts = opts
31
+ addr = ENV['SEQADDR'] || 'api.seq.com'
32
+ api = HttpWrapper.new('https://' + addr, credential)
33
+ @opts = {
34
+ addr: addr,
35
+ credential: credential,
36
+ ledger_name: ledger_name,
37
+ team_name: team_name(api),
38
+ }
40
39
  end
41
40
 
42
41
  # @private
@@ -55,11 +54,6 @@ module Sequence
55
54
  @accounts ||= Account::ClientModule.new(self)
56
55
  end
57
56
 
58
- # @return [Asset::ClientModule]
59
- def assets
60
- @assets ||= Asset::ClientModule.new(self)
61
- end
62
-
63
57
  # @return [Flavor::ClientModule]
64
58
  def flavors
65
59
  @flavors ||= Flavor::ClientModule.new(self)
@@ -70,11 +64,6 @@ module Sequence
70
64
  @actions ||= Action::ClientModule.new(self)
71
65
  end
72
66
 
73
- # @return [Balance::ClientModule]
74
- def balances
75
- @balances ||= Balance::ClientModule.new(self)
76
- end
77
-
78
67
  # @return [Key::ClientModule]
79
68
  def keys
80
69
  @keys ||= Key::ClientModule.new(self)
@@ -95,11 +84,6 @@ module Sequence
95
84
  @feeds ||= Feed::ClientModule.new(self)
96
85
  end
97
86
 
98
- # @return [Contract::ClientModule]
99
- def contracts
100
- @contracts ||= Contract::ClientModule.new(self)
101
- end
102
-
103
87
  # @private
104
88
  # @return [Stats::ClientModule]
105
89
  def stats
@@ -110,5 +94,11 @@ module Sequence
110
94
  def dev_utils
111
95
  @dev_utils ||= DevUtils::ClientModule.new(self)
112
96
  end
97
+
98
+ private
99
+
100
+ def team_name(api)
101
+ api.post(SecureRandom.hex(10), '/hello', {})[:parsed_body]['team_name']
102
+ end
113
103
  end
114
104
  end