steem-ruby 0.9.3 → 0.9.4
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 +4 -4
- data/Gemfile.lock +9 -5
- data/README.md +10 -10
- data/lib/steem.rb +48 -0
- data/lib/steem/api.rb +0 -21
- data/lib/steem/base_error.rb +5 -3
- data/lib/steem/broadcast.rb +21 -4
- data/lib/steem/marshal.rb +231 -0
- data/lib/steem/mixins/jsonable.rb +37 -0
- data/lib/steem/mixins/serializable.rb +45 -0
- data/lib/steem/operation.rb +141 -0
- data/lib/steem/operation/account_create.rb +10 -0
- data/lib/steem/operation/account_create_with_delegation.rb +12 -0
- data/lib/steem/operation/account_update.rb +8 -0
- data/lib/steem/operation/account_witness_proxy.rb +4 -0
- data/lib/steem/operation/account_witness_vote.rb +5 -0
- data/lib/steem/operation/cancel_transfer_from_savings.rb +4 -0
- data/lib/steem/operation/challenge_authority.rb +5 -0
- data/lib/steem/operation/change_recovery_account.rb +5 -0
- data/lib/steem/operation/claim_account.rb +5 -0
- data/lib/steem/operation/claim_reward_balance.rb +6 -0
- data/lib/steem/operation/comment.rb +9 -0
- data/lib/steem/operation/comment_options.rb +10 -0
- data/lib/steem/operation/convert.rb +5 -0
- data/lib/steem/operation/create_claimed_account.rb +10 -0
- data/lib/steem/operation/custom.rb +5 -0
- data/lib/steem/operation/custom_binary.rb +8 -0
- data/lib/steem/operation/custom_json.rb +6 -0
- data/lib/steem/operation/decline_voting_rights.rb +4 -0
- data/lib/steem/operation/delegate_vesting_shares.rb +5 -0
- data/lib/steem/operation/delete_comment.rb +4 -0
- data/lib/steem/operation/escrow_approve.rb +8 -0
- data/lib/steem/operation/escrow_dispute.rb +7 -0
- data/lib/steem/operation/escrow_release.rb +10 -0
- data/lib/steem/operation/escrow_transfer.rb +12 -0
- data/lib/steem/operation/feed_publish.rb +4 -0
- data/lib/steem/operation/limit_order_cancel.rb +4 -0
- data/lib/steem/operation/limit_order_create.rb +8 -0
- data/lib/steem/operation/limit_order_create2.rb +8 -0
- data/lib/steem/operation/prove_authority.rb +4 -0
- data/lib/steem/operation/recover_account.rb +6 -0
- data/lib/steem/operation/report_over_production.rb +5 -0
- data/lib/steem/operation/request_account_recovery.rb +6 -0
- data/lib/steem/operation/reset_account.rb +5 -0
- data/lib/steem/operation/set_reset_account.rb +5 -0
- data/lib/steem/operation/set_withdraw_vesting_route.rb +6 -0
- data/lib/steem/operation/transfer.rb +6 -0
- data/lib/steem/operation/transfer_from_savings.rb +7 -0
- data/lib/steem/operation/transfer_to_savings.rb +6 -0
- data/lib/steem/operation/transfer_to_vesting.rb +5 -0
- data/lib/steem/operation/vote.rb +6 -0
- data/lib/steem/operation/withdraw_vesting.rb +4 -0
- data/lib/steem/operation/witness_set_properties.rb +5 -0
- data/lib/steem/operation/witness_update.rb +7 -0
- data/lib/steem/rpc/base_client.rb +13 -0
- data/lib/steem/rpc/http_client.rb +17 -1
- data/lib/steem/stream.rb +12 -4
- data/lib/steem/transaction.rb +96 -0
- data/lib/steem/transaction_builder.rb +69 -69
- data/lib/steem/type/amount.rb +2 -0
- data/lib/steem/version.rb +1 -1
- data/steem-ruby.gemspec +2 -0
- metadata +90 -2
@@ -0,0 +1,37 @@
|
|
1
|
+
module Steem
|
2
|
+
module JSONable
|
3
|
+
module ClassMethods
|
4
|
+
attr_accessor :attributes
|
5
|
+
|
6
|
+
def attr_accessor *attrs
|
7
|
+
self.attributes = Array attrs
|
8
|
+
|
9
|
+
super
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.included(base)
|
14
|
+
base.extend(ClassMethods)
|
15
|
+
end
|
16
|
+
|
17
|
+
def as_json options = {}
|
18
|
+
serialized = Hash.new
|
19
|
+
|
20
|
+
self.class.attributes.each do |attribute|
|
21
|
+
unless (value = self.public_send attribute).nil?
|
22
|
+
serialized[attribute] = if value.respond_to? :strftime
|
23
|
+
value.strftime('%Y-%m-%dT%H:%M:%S')
|
24
|
+
else
|
25
|
+
value
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
serialized
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_json *a
|
34
|
+
as_json.to_json *a
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Steem
|
2
|
+
module Serializable
|
3
|
+
NUMERIC_TYPES = %i(unsigned_char uint16 uint32 uint64 signed_char int16 int32
|
4
|
+
int64 varint)
|
5
|
+
|
6
|
+
KNOWN_TYPES = NUMERIC_TYPES + %i(boolean string raw_bytes point_in_time
|
7
|
+
public_key amount price authority optional_authority
|
8
|
+
comment_options_extensions beneficiaries chain_properties required_auths
|
9
|
+
witness_properties empty_array lambda)
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
def def_attr key_pair
|
13
|
+
name = key_pair.keys.first.to_sym
|
14
|
+
type = key_pair.values.first.to_sym
|
15
|
+
|
16
|
+
self.attributes ||= []
|
17
|
+
self.attributes << name
|
18
|
+
|
19
|
+
attr_accessor *attributes
|
20
|
+
add_type name, type
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_type name, type
|
24
|
+
name = name.to_sym
|
25
|
+
type = type.to_sym
|
26
|
+
raise "Unknown type: #{type}" unless KNOWN_TYPES.include? type
|
27
|
+
|
28
|
+
@serializable_types ||= {}
|
29
|
+
@serializable_types[name] = type
|
30
|
+
end
|
31
|
+
|
32
|
+
def numeric?(name)
|
33
|
+
NUMERIC_TYPES.include? @serializable_types[name.to_sym]
|
34
|
+
end
|
35
|
+
|
36
|
+
def serializable_types
|
37
|
+
@serializable_types
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.included(base)
|
42
|
+
base.extend(ClassMethods)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
module Steem
|
2
|
+
class Operation
|
3
|
+
include JSONable
|
4
|
+
include Serializable
|
5
|
+
include Utils
|
6
|
+
|
7
|
+
# IDs derrived from:
|
8
|
+
# https://github.com/steemit/steem/blob/127a441fbac2f06804359968bda83b66e602c891/libraries/protocol/include/steem/protocol/operations.hpp
|
9
|
+
|
10
|
+
IDS = [
|
11
|
+
:vote_operation,
|
12
|
+
:comment_operation,
|
13
|
+
|
14
|
+
:transfer_operation,
|
15
|
+
:transfer_to_vesting_operation,
|
16
|
+
:withdraw_vesting_operation,
|
17
|
+
|
18
|
+
:limit_order_create_operation,
|
19
|
+
:limit_order_cancel_operation,
|
20
|
+
|
21
|
+
:feed_publish_operation,
|
22
|
+
:convert_operation,
|
23
|
+
|
24
|
+
:account_create_operation,
|
25
|
+
:account_update_operation,
|
26
|
+
|
27
|
+
:witness_update_operation,
|
28
|
+
:account_witness_vote_operation,
|
29
|
+
:account_witness_proxy_operation,
|
30
|
+
|
31
|
+
:pow_operation,
|
32
|
+
|
33
|
+
:custom_operation,
|
34
|
+
|
35
|
+
:report_over_production_operation,
|
36
|
+
|
37
|
+
:delete_comment_operation,
|
38
|
+
:custom_json_operation,
|
39
|
+
:comment_options_operation,
|
40
|
+
:set_withdraw_vesting_route_operation,
|
41
|
+
:limit_order_create2_operation,
|
42
|
+
:claim_account_operation,
|
43
|
+
:create_claimed_account_operation,
|
44
|
+
:request_account_recovery_operation,
|
45
|
+
:recover_account_operation,
|
46
|
+
:change_recovery_account_operation,
|
47
|
+
:escrow_transfer_operation,
|
48
|
+
:escrow_dispute_operation,
|
49
|
+
:escrow_release_operation,
|
50
|
+
:pow2_operation,
|
51
|
+
:escrow_approve_operation,
|
52
|
+
:transfer_to_savings_operation,
|
53
|
+
:transfer_from_savings_operation,
|
54
|
+
:cancel_transfer_from_savings_operation,
|
55
|
+
:custom_binary_operation,
|
56
|
+
:decline_voting_rights_operation,
|
57
|
+
:reset_account_operation,
|
58
|
+
:set_reset_account_operation,
|
59
|
+
:claim_reward_balance_operation,
|
60
|
+
:delegate_vesting_shares_operation,
|
61
|
+
:account_create_with_delegation_operation,
|
62
|
+
:witness_set_properties_operation,
|
63
|
+
|
64
|
+
# SMT operations
|
65
|
+
:claim_reward_balance2_operation,
|
66
|
+
|
67
|
+
:smt_setup_operation,
|
68
|
+
:smt_cap_reveal_operation,
|
69
|
+
:smt_refund_operation,
|
70
|
+
:smt_setup_emissions_operation,
|
71
|
+
:smt_set_setup_parameters_operation,
|
72
|
+
:smt_set_runtime_parameters_operation,
|
73
|
+
:smt_create_operation,
|
74
|
+
|
75
|
+
# virtual operations below this point
|
76
|
+
:fill_convert_request_operation,
|
77
|
+
:author_reward_operation,
|
78
|
+
:curation_reward_operation,
|
79
|
+
:comment_reward_operation,
|
80
|
+
:liquidity_reward_operation,
|
81
|
+
:interest_operation,
|
82
|
+
:fill_vesting_withdraw_operation,
|
83
|
+
:fill_order_operation,
|
84
|
+
:shutdown_witness_operation,
|
85
|
+
:fill_transfer_from_savings_operation,
|
86
|
+
:hardfork_operation,
|
87
|
+
:comment_payout_update_operation,
|
88
|
+
:return_vesting_delegation_operation,
|
89
|
+
:comment_benefactor_reward_operation,
|
90
|
+
:producer_reward_operation,
|
91
|
+
:clear_null_account_balance_operation
|
92
|
+
]
|
93
|
+
|
94
|
+
def self.op_id(op)
|
95
|
+
IDS.find_index op
|
96
|
+
end
|
97
|
+
|
98
|
+
def inspect
|
99
|
+
properties = self.class.attributes.map do |prop|
|
100
|
+
unless (v = instance_variable_get("@#{prop}")).nil?
|
101
|
+
v = if v.respond_to? :strftime
|
102
|
+
v.strftime('%Y-%m-%dT%H:%M:%S')
|
103
|
+
else
|
104
|
+
v
|
105
|
+
end
|
106
|
+
|
107
|
+
"@#{prop}=#{v}"
|
108
|
+
end
|
109
|
+
end.compact.join(', ')
|
110
|
+
|
111
|
+
"#<#{self.class.name} [#{properties}]>"
|
112
|
+
end
|
113
|
+
|
114
|
+
def [](key)
|
115
|
+
key = key.to_sym
|
116
|
+
send(key) if self.class.attributes.include?(key)
|
117
|
+
end
|
118
|
+
|
119
|
+
def []=(key, value)
|
120
|
+
key = key.to_sym
|
121
|
+
|
122
|
+
if self.class.attributes.include?(key)
|
123
|
+
if self.class.numeric? key
|
124
|
+
send("#{key}=", value.to_i)
|
125
|
+
else
|
126
|
+
send("#{key}=", value)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def ==(other_op)
|
132
|
+
return false if self.class != other_op.class
|
133
|
+
|
134
|
+
self.class.attributes.each do |prop|
|
135
|
+
return false if self[prop] != other_op[prop]
|
136
|
+
end
|
137
|
+
|
138
|
+
true
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Steem::Operation::AccountCreate < Steem::Operation
|
2
|
+
def_attr fee: :amount
|
3
|
+
def_attr creator: :string
|
4
|
+
def_attr new_account_name: :string
|
5
|
+
def_attr owner: :authority
|
6
|
+
def_attr active: :authority
|
7
|
+
def_attr posting: :authority
|
8
|
+
def_attr memo_key: :public_key
|
9
|
+
def_attr json_metadata: :string
|
10
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Steem::Operation::AccountCreateWithDelegation < Steem::Operation
|
2
|
+
def_attr fee: :amount
|
3
|
+
def_attr delegation: :amount
|
4
|
+
def_attr creator: :string
|
5
|
+
def_attr new_account_name: :string
|
6
|
+
def_attr owner: :authority
|
7
|
+
def_attr active: :authority
|
8
|
+
def_attr posting: :authority
|
9
|
+
def_attr memo_key: :public_key
|
10
|
+
def_attr json_metadata: :string
|
11
|
+
def_attr extensions: :empty_array
|
12
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class Steem::Operation::AccountUpdate < Steem::Operation
|
2
|
+
def_attr account: :string
|
3
|
+
def_attr owner: :optional_authority
|
4
|
+
def_attr active: :optional_authority
|
5
|
+
def_attr posting: :optional_authority
|
6
|
+
def_attr memo_key: :public_key
|
7
|
+
def_attr json_metadata: :string
|
8
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class Steem::Operation::Comment < Steem::Operation
|
2
|
+
def_attr parent_author: :string
|
3
|
+
def_attr parent_permlink: :string
|
4
|
+
def_attr author: :string
|
5
|
+
def_attr permlink: :string
|
6
|
+
def_attr title: :string
|
7
|
+
def_attr body: :string
|
8
|
+
def_attr json_metadata: :string
|
9
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Steem::Operation::CommentOptions < Steem::Operation
|
2
|
+
def_attr author: :string
|
3
|
+
def_attr permlink: :string
|
4
|
+
def_attr max_accepted_payout: :amount
|
5
|
+
def_attr percent_steem_dollars: :uint32
|
6
|
+
# def_attr allow_replies: :boolean
|
7
|
+
def_attr allow_votes: :boolean
|
8
|
+
def_attr allow_curation_rewards: :boolean
|
9
|
+
def_attr extensions: :comment_options_extensions
|
10
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Steem::Operation::CreateClaimedAccount < Steem::Operation
|
2
|
+
def_attr creator: :string
|
3
|
+
def_attr new_account_name: :string
|
4
|
+
def_attr owner: :authority
|
5
|
+
def_attr active: :authority
|
6
|
+
def_attr posting: :authority
|
7
|
+
def_attr memo_key: :public_key
|
8
|
+
def_attr json_metadata: :string
|
9
|
+
def_attr extensions: :empty_array
|
10
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class Steem::Operation::CustomBinary < Steem::Operation
|
2
|
+
def_attr required_owner_auths: :required_auths
|
3
|
+
def_attr required_active_auths: :required_auths
|
4
|
+
def_attr required_posting_auths: :required_auths
|
5
|
+
def_attr required_auths: :required_auths
|
6
|
+
def_attr id: :string
|
7
|
+
def_attr data: :raw_bytes
|
8
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Steem::Operation::EscrowRelease < Steem::Operation
|
2
|
+
def_attr from: :string
|
3
|
+
def_attr to: :string
|
4
|
+
def_attr agent: :string
|
5
|
+
def_attr who: :string
|
6
|
+
def_attr receiver: :string
|
7
|
+
def_attr escrow_id: :uint32
|
8
|
+
def_attr sbd_amount: :amount
|
9
|
+
def_attr steem_amount: :amount
|
10
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Steem::Operation::EscrowTransfer < Steem::Operation
|
2
|
+
def_attr from: :string
|
3
|
+
def_attr to: :string
|
4
|
+
def_attr sbd_amount: :amount
|
5
|
+
def_attr steem_amount: :amount
|
6
|
+
def_attr escrow_id: :uint32
|
7
|
+
def_attr agent: :string
|
8
|
+
def_attr fee: :amount
|
9
|
+
def_attr json_metadata: :string
|
10
|
+
def_attr ratification_deadline: :point_in_time
|
11
|
+
def_attr escrow_expiration: :point_in_time
|
12
|
+
end
|