cosgrove 0.0.4.0 → 0.0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,9 +4,32 @@ module Cosgrove
4
4
  include ActionView::Helpers::TextHelper
5
5
  include ActionView::Helpers::DateHelper
6
6
 
7
- def suggest_account_name(account_name)
7
+ # Reduce RL bucket depletion
8
+ def start_typing(event)
9
+ return if event.nil?
10
+ return unless event.respond_to? :channel
11
+ return unless event.channel.respond_to? :start_typing
12
+
13
+ @channels_typing ||= {}
14
+
15
+ if !!@channels_typing[event.channel.id] && (Time.now - @channels_typing[event.channel.id]) < 15
16
+ return
17
+ end
18
+
19
+ @channels_typing[event.channel.id] = Time.now
20
+
21
+ event.channel.start_typing
22
+ end
23
+
24
+ def suggest_account_name(account_name, chain = :hive)
25
+ chain = chain.to_s.downcase.to_sym
8
26
  pattern = account_name.chars.each.map{ |c| c }.join('%')
9
- guesses = SteemApi::Account.where("name LIKE '%#{pattern}%'").pluck(:name)
27
+ guesses = case chain
28
+ # when :steem then SteemApi::Account.where("name LIKE '%#{pattern}%'").pluck(:name)
29
+ when :hive then HiveSQL::Account.where("name LIKE '%#{pattern}%'").pluck(:name)
30
+ else
31
+ []
32
+ end
10
33
 
11
34
  if guesses.any?
12
35
  guesses.sample
@@ -15,7 +38,7 @@ module Cosgrove
15
38
 
16
39
  def unknown_account(account_name, event = nil)
17
40
  help = ["Unknown account: *#{account_name}*"]
18
- event.channel.start_typing if !!event
41
+ start_typing event
19
42
  guess = suggest_account_name(account_name)
20
43
 
21
44
  help << ", did you mean: #{guess}?" if !!guess
@@ -35,6 +58,9 @@ module Cosgrove
35
58
  end
36
59
 
37
60
  def append_link_details(event, slug)
61
+ return if skipped_channel? event.channel.id
62
+
63
+ chain = :hive
38
64
  author_name, permlink = parse_slug slug
39
65
  created = nil
40
66
  cashout_time = nil
@@ -42,26 +68,22 @@ module Cosgrove
42
68
 
43
69
  return unless !!author_name && !!permlink
44
70
 
45
- if slug =~ /steemit.com/
46
- chain = :steem
47
- else
48
- return # silntlly ignore this slug
49
- end
50
-
51
71
  if !!event
52
72
  begin
53
- message = event.respond "Looking up #{author_name}/#{permlink} ..."
73
+ message = event.respond "Looking up `#{author_name}/#{permlink}` ..."
54
74
  rescue Discordrb::Errors::NoPermission => _
55
75
  puts "Unable to append link details on #{event.channel.server.name} in #{event.channel.name}"
76
+ skip_channel event.channel.id
56
77
  return nil
57
78
  end
58
79
  end
59
80
 
60
81
  posts = case chain
61
- when :steem then SteemApi::Comment.where(author: author_name, permlink: permlink)
82
+ # when :steem then SteemApi::Comment.where(author: author_name, permlink: permlink)
83
+ when :hive then HiveSQL::Comment.where(author: author_name, permlink: permlink)
62
84
  end
63
85
 
64
- posts.select(:ID, :created, :cashout_time, :author, :permlink, :active_votes, :children)
86
+ posts.select(:ID, :created, :cashout_time, :author, :permlink, :active_votes, :children, :category)
65
87
 
66
88
  post = posts.last
67
89
 
@@ -69,6 +91,7 @@ module Cosgrove
69
91
  # Fall back to RPC
70
92
  api(chain).get_content(author_name, permlink) do |content, errors|
71
93
  unless content.author.empty?
94
+ post = content
72
95
  created = Time.parse(content.created + 'Z')
73
96
  cashout_time = Time.parse(content.cashout_time + 'Z')
74
97
  end
@@ -76,7 +99,26 @@ module Cosgrove
76
99
  end
77
100
 
78
101
  if post.nil?
79
- message = message.edit 'Unable to locate.' if !!message
102
+ if !!message
103
+ message = message.edit 'Looking for content on Hive ...'
104
+ end
105
+
106
+ # Fall back to Hive RPC
107
+ api(:hive).get_content(author_name, permlink) do |content, errors|
108
+ unless content.author.empty?
109
+ post = content
110
+ created = Time.parse(content.created + 'Z')
111
+ cashout_time = Time.parse(content.cashout_time + 'Z')
112
+ end
113
+ end
114
+ end
115
+
116
+ if post.nil?
117
+ if !!message
118
+ message = message.edit 'Unable to locate.'
119
+ sleep 5
120
+ message.delete
121
+ end
80
122
 
81
123
  return
82
124
  end
@@ -95,9 +137,17 @@ module Cosgrove
95
137
  end
96
138
  message = message.edit details.join('; ') if !!message
97
139
 
98
- active_votes = JSON[post.active_votes] rescue []
140
+ if !!post.category && !!post.category.starts_with?('hive-') && (communities = Cosgrove::FindCommunitiesJob.new.perform(nil, [post.category]), 1).any?
141
+ details << "in #{communities.first.payload['props']['title']}" rescue nil
142
+ message = message.edit details.join('; ') if !!message
143
+ end
99
144
 
100
- if active_votes.any?
145
+ active_votes = case post.active_votes
146
+ when String then JSON[post.active_votes] rescue []
147
+ else; active_votes
148
+ end
149
+
150
+ if active_votes.respond_to?(:any?) && active_votes.any?
101
151
  upvotes = active_votes.map{ |v| v if v['weight'].to_i > 0 }.compact.count
102
152
  downvotes = active_votes.map{ |v| v if v['weight'].to_i < 0 }.compact.count
103
153
  netvotes = upvotes - downvotes
@@ -107,7 +157,8 @@ module Cosgrove
107
157
  # Only append this detail of the post less than an hour old.
108
158
  if created > 1.hour.ago
109
159
  votes = case chain
110
- when :steem then SteemApi::Tx::Vote.where('timestamp > ?', post.created)
160
+ # when :steem then SteemApi::Tx::Vote.where('timestamp > ?', post.created)
161
+ when :hive then HiveSQL::Tx::Vote.where('timestamp > ?', post.created)
111
162
  end
112
163
  total_votes = votes.distinct("concat(author, permlink)").count
113
164
  total_voters = votes.distinct(:voter).count
@@ -130,14 +181,19 @@ module Cosgrove
130
181
  details.join('; ') if event.nil?
131
182
  end
132
183
 
133
- def find_account(key, event = nil, chain = :steem)
184
+ def find_account(key, event = nil, chain = :hive)
134
185
  key = key.to_s.downcase
135
- chain = chain.to_sym
186
+ chain ||= :hive
187
+ chain = chain.to_s.downcase.to_sym
136
188
 
137
- raise "Required argument: chain" if chain.nil?
138
189
 
139
- if chain == :steem
140
- account = if (accounts = SteemApi::Account.where(name: key)).any?
190
+ case chain
191
+ # when :steem
192
+ # account = if (accounts = SteemApi::Account.where(name: key)).any?
193
+ # accounts.first
194
+ # end
195
+ when :hive
196
+ account = if (accounts = HiveSQL::Account.where(name: key)).any?
141
197
  accounts.first
142
198
  end
143
199
  end
@@ -150,7 +206,9 @@ module Cosgrove
150
206
 
151
207
  if account.nil?
152
208
  account = if !!key
153
- if chain == :steem && (accounts = SteemApi::Account.where(name: key)).any?
209
+ # if chain == :steem && (accounts = SteemApi::Account.where(name: key)).any?
210
+ # accounts.first
211
+ if chain == :hive && (accounts = HiveSQL::Account.where(name: key)).any?
154
212
  accounts.first
155
213
  else
156
214
  # Fall back to RPC
@@ -205,7 +263,9 @@ module Cosgrove
205
263
  end
206
264
  end
207
265
 
208
- def last_irreversible_block(chain = :steem)
266
+ def last_irreversible_block(chain = :hive)
267
+ chain ||= :hive
268
+ chain = chain.to_s.downcase.to_sym
209
269
  seconds_ago = (head_block_number(chain) - last_irreversible_block_num(chain)) * 3
210
270
 
211
271
  "Last Irreversible Block was #{time_ago_in_words(seconds_ago.seconds.ago)} ago."
@@ -224,7 +284,8 @@ module Cosgrove
224
284
  def muted(options = {})
225
285
  [] if options.empty?
226
286
  by = [options[:by]].flatten
227
- chain = options[:chain]
287
+ chain = options[:chain] || :hive
288
+ chain = chain.to_s.downcase.to_sym
228
289
  muted = []
229
290
 
230
291
  by.each do |a|
@@ -244,5 +305,17 @@ module Cosgrove
244
305
 
245
306
  muted.uniq
246
307
  end
308
+
309
+ def skipped_channels
310
+ @@skipped_channels ||= []
311
+ end
312
+
313
+ def skipped_channel?(id)
314
+ skipped_channels.include? id
315
+ end
316
+
317
+ def skip_channel(id)
318
+ skipped_channels << id
319
+ end
247
320
  end
248
321
  end
@@ -8,28 +8,32 @@ module Cosgrove
8
8
  @on_success = options[:on_success]
9
9
  end
10
10
 
11
- def perform(event, slug)
11
+ def perform(event, slug, chain = :hive)
12
12
  if slug.nil? || slug.empty?
13
13
  event.respond 'Sorry, I wasn\'t paying attention.'
14
14
  return
15
15
  end
16
16
 
17
+ chain = chain.to_s.downcase.to_sym
17
18
  author_name, permlink = parse_slug slug
18
19
  discord_id = event.author.id
19
20
  cb_account = Cosgrove::Account.find_by_discord_id(discord_id)
20
21
  registered = !!cb_account
21
22
  muters = cosgrove_operators
22
- muters << steem_account
23
+ muters << hive_account
23
24
  muted = muted by: muters, chain: :steem
24
25
 
25
- post = find_comment(chain: :steem, author_name: author_name, permlink: permlink)
26
+ post = find_comment(chain: chain, author_name: author_name, permlink: permlink)
26
27
 
27
28
  if post.nil?
28
29
  cannot_find_input(event)
29
30
  return
30
31
  end
31
32
 
32
- votes_today = SteemApi::Tx::Vote.where(voter: steem_account).today
33
+ votes_today = case chain
34
+ # when :steem then SteemApi::Tx::Vote.where(voter: steem_account).today
35
+ when :hive then HiveSQL::Tx::Vote.where(voter: hive_account).today
36
+ end
33
37
  today_count = votes_today.count
34
38
  author_count = votes_today.where(author: author_name).count
35
39
  vote_ratio = if today_count == 0
@@ -83,7 +87,7 @@ module Cosgrove
83
87
  'Unable to vote. Your account has been resticted.'
84
88
  elsif today_count > 10 && vote_ratio > 0.1
85
89
  "Maybe later. It seems like I've been voting for #{author_name} quite a bit lately."
86
- elsif active_votes.map{ |v| v['voter'] }.include?(steem_account)
90
+ elsif active_votes.map{ |v| v['voter'] }.include?(hive_account)
87
91
  title = post.title
88
92
  title = post.permlink if title.empty?
89
93
  "I already voted on #{title} by #{post.author}."
@@ -96,7 +100,7 @@ module Cosgrove
96
100
 
97
101
  vote = {
98
102
  type: :vote,
99
- voter: steem_account,
103
+ voter: hive_account,
100
104
  author: post.author,
101
105
  permlink: post.permlink,
102
106
  weight: upvote_weight(event.channel.id)
@@ -180,13 +184,13 @@ module Cosgrove
180
184
 
181
185
  case upvote_weight
182
186
  when 'dynamic'
183
- bot_account = find_account(steem_account)
187
+ bot_account = find_account(hive_account)
184
188
  upvote_weight = bot_account.voting_power.to_i
185
189
  when 'upvote_rules'
186
190
  upvote_weight = channel_upvote_weight(channel_id)
187
191
 
188
192
  if upvote_weight == 'dynamic'
189
- bot_account = find_account(steem_account)
193
+ bot_account = find_account(hive_account)
190
194
  upvote_weight = bot_account.voting_power.to_i
191
195
  else
192
196
  upvote_weight = (((upvote_weight || '0.00 %').to_f) * 100).to_i
@@ -7,8 +7,8 @@ module Cosgrove
7
7
  end
8
8
 
9
9
  def reset_api
10
- @steem_api = @test_api = nil
11
- @steem_folow_api = @test_folow_api = nil
10
+ @steem_api = @hive_api = @test_api = nil
11
+ @steem_follow_api = @hive_follow_api = @test_follow_api = nil
12
12
  @cycle_api_at = nil
13
13
  end
14
14
 
@@ -28,6 +28,12 @@ module Cosgrove
28
28
  url: steem_api_url,
29
29
  failover_urls: steem_api_failover_urls.any? ? steem_api_failover_urls : nil
30
30
  }
31
+ when :hive
32
+ {
33
+ chain: :steem, # TODO switch to :hive when supported by radiator
34
+ url: hive_api_url,
35
+ failover_urls: hive_api_failover_urls.any? ? hive_api_failover_urls : nil
36
+ }
31
37
  when :test
32
38
  {
33
39
  chain: :test,
@@ -44,6 +50,7 @@ module Cosgrove
44
50
 
45
51
  case chain
46
52
  when :steem then @steem_api ||= Radiator::Api.new(chain_options(chain))
53
+ when :hive then @hive_api ||= Radiator::Api.new(chain_options(chain))
47
54
  when :test then @test_api ||= Radiator::Api.new(chain_options(chain))
48
55
  end
49
56
  end
@@ -55,17 +62,118 @@ module Cosgrove
55
62
 
56
63
  case chain
57
64
  when :steem then @steem_follow_api ||= Radiator::FollowApi.new(chain_options(chain))
65
+ when :hive then @hive_follow_api ||= Radiator::FollowApi.new(chain_options(chain))
58
66
  when :test then @test_follow_api ||= Radiator::FollowApi.new(chain_options(chain))
59
67
  end
60
68
  end
61
69
 
70
+ def steem_engine_shutdown
71
+ problem = false
72
+
73
+ begin
74
+ @steem_engine_blockchain.shutdown if !!@steem_engine_blockchain
75
+ rescue => e
76
+ puts "Unable to shut down steem engine blockchain rpc: #{e}"
77
+ problem = true
78
+ end
79
+
80
+ begin
81
+ @steem_engine_contracts.shutdown if !!@steem_engine_contracts
82
+ rescue => e
83
+ puts "Unable to shut down steem engine contracts rpc: #{e}"
84
+ problem = true
85
+ end
86
+
87
+ !problem
88
+ end
89
+
90
+ def steem_engine(method, params = {}, rpc)
91
+ begin
92
+ if params.respond_to?(:empty?) && params.empty?
93
+ rpc.send(method)
94
+ else
95
+ rpc.send(method, params)
96
+ end
97
+ rescue => e
98
+ steem_engine_shutdown
99
+
100
+ raise e
101
+ end
102
+ end
103
+
104
+ def steem_engine_blockchain(method, params = {}, &block)
105
+ @steem_engine_blockchain ||= Radiator::SSC::Blockchain.new(root_url: steem_engine_api_url)
106
+ result = steem_engine(method, params, @steem_engine_blockchain)
107
+
108
+ yield result if !!block
109
+ return result
110
+ end
111
+
112
+ def steem_engine_contracts(method, params = {}, &block)
113
+ @steem_engine_contracts ||= Radiator::SSC::Contracts.new(root_url: steem_engine_api_url)
114
+ result = steem_engine(method, params, @steem_engine_contracts)
115
+
116
+ yield result if !!block
117
+ return result
118
+ end
119
+
120
+ def hive_engine_shutdown
121
+ problem = false
122
+
123
+ begin
124
+ @hive_engine_blockchain.shutdown if !!@hive_engine_blockchain
125
+ rescue => e
126
+ puts "Unable to shut down hive engine blockchain rpc: #{e}"
127
+ problem = true
128
+ end
129
+
130
+ begin
131
+ @hive_engine_contracts.shutdown if !!@hive_engine_contracts
132
+ rescue => e
133
+ puts "Unable to shut down hive engine contracts rpc: #{e}"
134
+ problem = true
135
+ end
136
+
137
+ !problem
138
+ end
139
+
140
+ def hive_engine(method, params = {}, rpc)
141
+ begin
142
+ if params.respond_to?(:empty?) && params.empty?
143
+ rpc.send(method)
144
+ else
145
+ rpc.send(method, params)
146
+ end
147
+ rescue => e
148
+ hive_engine_shutdown
149
+
150
+ raise e
151
+ end
152
+ end
153
+
154
+ def hive_engine_blockchain(method, params = {}, &block)
155
+ @hive_engine_blockchain ||= Radiator::SSC::Blockchain.new(root_url: hive_engine_api_url)
156
+ result = hive_engine(method, params, @hive_engine_blockchain)
157
+
158
+ yield result if !!block
159
+ return result
160
+ end
161
+
162
+ def hive_engine_contracts(method, params = {}, &block)
163
+ @hive_engine_contracts ||= Radiator::SSC::Contracts.new(root_url: hive_engine_api_url)
164
+ result = hive_engine(method, params, @hive_engine_contracts)
165
+
166
+ yield result if !!block
167
+ return result
168
+ end
169
+
62
170
  def cycle_stream_at
63
171
  @cycle_stream_at if defined? @cycle_stream_at
64
172
  end
65
173
 
66
174
  def reset_stream
67
- @steem_stream = @test_stream = nil
68
- @steem_folow_stream = @test_folow_stream = nil
175
+ @steem_stream = @hive_stream = @test_stream = nil
176
+ @steem_follow_stream = @hive_follow_stream = @test_follow_stream = nil
69
177
  @cycle_stream_at = nil
70
178
  end
71
179
 
@@ -76,6 +184,7 @@ module Cosgrove
76
184
 
77
185
  case chain
78
186
  when :steem then @steem_stream ||= Radiator::Stream.new(chain_options(chain))
187
+ when :hive then @hive_stream ||= Radiator::Stream.new(chain_options(chain))
79
188
  when :test then @test_stream ||= Radiator::Stream.new(chain_options(chain))
80
189
  end
81
190
  end
@@ -88,13 +197,14 @@ module Cosgrove
88
197
  properties(chain)['head_block_number']
89
198
  end
90
199
 
91
- def last_irreversible_block_num(chain = :steem)
200
+ def last_irreversible_block_num(chain = :hive)
92
201
  properties(chain)['last_irreversible_block_num']
93
202
  end
94
203
 
95
204
  def new_tx(chain)
96
205
  case chain
97
206
  when :steem then Radiator::Transaction.new(chain_options(chain).merge(wif: steem_posting_wif))
207
+ when :hive then Radiator::Transaction.new(chain_options(chain).merge(wif: hive_posting_wif))
98
208
  when :test then Radiator::Transaction.new(chain_options(chain).merge(wif: test_posting_wif))
99
209
  end
100
210
  end
@@ -124,17 +234,24 @@ module Cosgrove
124
234
  end
125
235
  end
126
236
 
127
- def find_author_name_permlink(slug)
237
+ def find_author_name_permlink(slug, chain = :hive)
238
+ chain = chain.to_s.downcase.to_sym
128
239
  op, author_name = slug.split(':')
129
240
  author_name, offset = author_name.split(/[\+-]/)
130
- author = find_account(author_name)
241
+ author = find_account(author_name, nil, chain)
131
242
 
132
243
  offset = offset.to_i
133
244
 
134
245
  posts = if op == 'latest'
135
- SteemApi::Comment.where(depth: 0, author: author.name).order(created: :desc)
246
+ case chain
247
+ # when :steem then SteemApi::Comment.where(depth: 0, author: author.name).order(created: :desc)
248
+ when :hive then HiveSQL::Comment.where(depth: 0, author: author.name).order(created: :desc)
249
+ end
136
250
  elsif op == 'first'
137
- SteemApi::Comment.where(depth: 0, author: author.name).order(created: :asc)
251
+ case chain
252
+ # when :steem then SteemApi::Comment.where(depth: 0, author: author.name).order(created: :asc)
253
+ when :hive then HiveSQL::Comment.where(depth: 0, author: author.name).order(created: :asc)
254
+ end
138
255
  else
139
256
  []
140
257
  end
@@ -146,19 +263,28 @@ module Cosgrove
146
263
  []
147
264
  end
148
265
 
149
- def find_comment_by_slug(slug)
266
+ def find_comment_by_slug(slug, chain = :hive)
267
+ chain ||= :hive
268
+ chain = chain.to_s.downcase.to_sym
150
269
  author_name, permlink = parse_slug slug
151
- find_comment(chain: :steem, author_name: author_name, permlink: permlink)
270
+ find_comment(chain: chain, author_name: author_name, permlink: permlink)
152
271
  end
153
272
 
154
273
  def find_comment(options)
155
274
  chain = options[:chain] || :steem
275
+ chain = chain.to_s.downcase.to_sym
156
276
  author_name = options[:author_name]
157
277
  permlink = options[:permlink]
158
278
  parent_permlink = options[:parent_permlink]
159
279
 
160
- post = if chain == :steem
161
- posts = SteemApi::Comment.where(depth: 0, author: author_name)
280
+ post = if chain == :hive
281
+ # posts = SteemApi::Comment.where(depth: 0, author: author_name)
282
+ posts = posts.where(permlink: permlink) if !!permlink
283
+ posts = posts.where(parent_permlink: parent_permlink) if !!parent_permlink
284
+
285
+ posts.first
286
+ elsif chain == :hive
287
+ posts = HiveSQL::Comment.where(depth: 0, author: author_name)
162
288
  posts = posts.where(permlink: permlink) if !!permlink
163
289
  posts = posts.where(parent_permlink: parent_permlink) if !!parent_permlink
164
290
 
@@ -168,7 +294,13 @@ module Cosgrove
168
294
  if post.nil?
169
295
  post = case chain
170
296
  when :steem
171
- posts = SteemApi::Comment.where(author: author_name)
297
+ # posts = SteemApi::Comment.where(author: author_name)
298
+ posts = posts.where(permlink: permlink) if !!permlink
299
+ posts = posts.where(parent_permlink: parent_permlink) if !!parent_permlink
300
+
301
+ posts.first
302
+ when :hive
303
+ posts = HiveSQL::Comment.where(author: author_name)
172
304
  posts = posts.where(permlink: permlink) if !!permlink
173
305
  posts = posts.where(parent_permlink: parent_permlink) if !!parent_permlink
174
306
 
@@ -189,10 +321,14 @@ module Cosgrove
189
321
  end
190
322
 
191
323
  def find_author(options)
192
- chain = options[:chain]
324
+ chain = options[:chain] || :steem
325
+ chain = chain.to_s.downcase.to_sym
193
326
  author_name = options[:author_name]
194
327
 
195
- author = SteemApi::Account.where(name: author_name).first
328
+ author = case chain
329
+ # when :steem then SteemApi::Account.where(name: author_name).first
330
+ when :hive then HiveSQL::Account.where(name: author_name).first
331
+ end
196
332
 
197
333
  if author.nil?
198
334
  author = api(chain).get_accounts([author_name]) do |accounts, errors|
@@ -210,15 +346,28 @@ module Cosgrove
210
346
  memo_key = options[:memo].to_s.strip
211
347
 
212
348
  op = case chain
213
- when :steem
214
- transfers = SteemApi::Tx::Transfer.
215
- where(from: from, to: steem_account).
349
+ # when :steem
350
+ # transfers = SteemApi::Tx::Transfer.
351
+ # where(from: from, to: steem_account).
352
+ # where("memo LIKE ?", "%#{memo_key}%")
353
+ #
354
+ # if transfers.any?
355
+ # transfers.last
356
+ # else
357
+ # SteemApi::Tx::Transfer.
358
+ # where(from: from).
359
+ # where(to: to).
360
+ # where("memo LIKE ?", "%#{memo_key}%").last
361
+ # end
362
+ when :hive
363
+ transfers = HiveSQL::Tx::Transfer.
364
+ where(from: from, to: hive_account).
216
365
  where("memo LIKE ?", "%#{memo_key}%")
217
366
 
218
367
  if transfers.any?
219
368
  transfers.last
220
369
  else
221
- SteemApi::Tx::Transfer.
370
+ HiveSQL::Tx::Transfer.
222
371
  where(from: from).
223
372
  where(to: to).
224
373
  where("memo LIKE ?", "%#{memo_key}%").last
@@ -229,7 +378,7 @@ module Cosgrove
229
378
  # Fall back to RPC. The transaction is so new, SteemApi hasn't seen it
230
379
  # yet, SteemApi is behind, or there is no such transfer.
231
380
 
232
- api(chain).get_account_history(steem_account, -1, 10000) do |history, error|
381
+ api(chain).get_account_history(hive_account, -1, 10000) do |history, error|
233
382
  if !!error
234
383
  ap error
235
384
  return "Try again later."
@@ -241,7 +390,7 @@ module Cosgrove
241
390
  next unless type == 'transfer'
242
391
  o = e.last
243
392
  next unless o.from == from
244
- next unless o.to == steem_account
393
+ next unless o.to == hive_account
245
394
  next unless o.memo =~ /.*#{memo_key}.*/
246
395
 
247
396
  o
@@ -252,18 +401,31 @@ module Cosgrove
252
401
  op
253
402
  end
254
403
 
255
- def core_asset(chain = :steem)
404
+ def core_asset(chain = :hive)
405
+ chain ||= :hive
406
+ chain = chain.to_s.downcase.to_sym
407
+
256
408
  case chain
257
409
  when :steem then 'STEEM'
410
+ when :hive then 'HIVE'
258
411
  else; 'TESTS'
259
412
  end
260
413
  end
261
414
 
262
- def debt_asset(chain = :steem)
415
+ def debt_asset(chain = :hive)
416
+ chain ||= :hive
417
+ chain = chain.to_s.downcase.to_sym
418
+
263
419
  case chain
264
420
  when :steem then 'SBD'
421
+ when :hive then 'HBD'
265
422
  else; 'TBD'
266
423
  end
267
424
  end
425
+ private
426
+ def rpc_id
427
+ @rpc_id ||= 0
428
+ @rpc_id += 1
429
+ end
268
430
  end
269
431
  end