lib/ayadn/api.rb in ayadn-1.2.2 vs lib/ayadn/api.rb in ayadn-1.2.3
- old
+ new
@@ -198,25 +198,100 @@
else
resp
end
end
- def get_niceranks stream
+ ###DEBUG
+ #def get_niceranks stream
+ def get_niceranks stream, iter
+ ###DEBUG
+ @iter = iter
+
user_ids, table, niceranks = [], {}, {}
stream['data'].each do |post|
user_ids << post['user']['id'].to_i
table[post['user']['id'].to_i] = post['user']['username']
end
user_ids.uniq!
- resp = JSON.parse(CNX.get "http://api.search-adn.net/user/nicerank?ids=#{user_ids.join(',')}")
- return {} if resp['meta']['code'] != 200
- resp['data'].each do |obj|
- niceranks[obj['user_id']] = {
- username: table[obj['user_id']],
- rank: obj['rank']
- }
+
+ db_ranks = Databases.get_niceranks user_ids
+ get_these = []
+ db_ranks.each do |id,ranks|
+ if ranks.nil?
+ get_these << id
+ elsif (Time.now - ranks[:cached]) > 86400 # 24 hours cache
+ get_these << id
+ else
+ niceranks[id] = {
+ username: ranks[:username],
+ rank: ranks[:rank],
+ is_human: ranks[:is_human],
+ cached: ranks[:cached]
+ }
+ end
end
- niceranks
+
+ if Settings.options[:timeline][:show_debug] == true
+ puts "=====\nNiceRanks\n".color(Settings.options[:colors][:debug])
+ puts "From DB:\t#{niceranks}\n".color(Settings.options[:colors][:debug])
+ puts "To get:\t\t#{get_these}\n=====\n".color(Settings.options[:colors][:debug])
+ end
+
+ unless get_these.empty?
+ req = "http://api.search-adn.net/user/nicerank?ids=#{get_these.join(',')}"
+ resp = JSON.parse(CNX.get req)
+
+ #Error handling
+ if resp['meta']['code'] != 200
+ if Settings.options[:timeline][:show_debug] == true
+ puts "=====\nNiceRank:\tError #{resp['meta']['code']} (#{resp['meta']['time']})\n=====\n".color(Settings.options[:colors][:debug])
+ end
+ Errors.nr "REQUESTED: #{get_these.join(' ')}"
+
+ ###DEBUG
+ @iter += 1
+
+ if niceranks
+ if Settings.options[:timeline][:show_debug] == true
+ puts "=====\nNiceRanks:\t#{niceranks}".color(Settings.options[:colors][:debug])
+ puts "=====\n".color(Settings.options[:colors][:debug])
+ end
+
+ #return niceranks
+
+ ###DEBUG
+ return niceranks, @iter
+ else
+
+ # return {}
+
+ ###DEBUG
+ return {}, @iter
+ end
+ end
+
+ ###DEBUG
+ @iter += 1
+
+ resp['data'].each do |obj|
+ niceranks[obj['user_id']] = {
+ username: table[obj['user_id']],
+ rank: obj['rank'],
+ is_human: obj['is_human'],
+ cached: Time.now
+ }
+ end
+ if Settings.options[:timeline][:show_debug] == true
+ puts "=====\nNiceRanks:\t#{niceranks}".color(Settings.options[:colors][:debug])
+ puts "Resp:\t\t#{resp}".color(Settings.options[:colors][:debug])
+ puts "=====\n".color(Settings.options[:colors][:debug])
+ end
+ end
+ Databases.add_niceranks niceranks
+
+ ###DEBUG
+ #niceranks
+ return niceranks, @iter
end
def get_channels
options = {:count => 200, :recent_message => 1, :annotations => 1, :before_id => nil}
get_parsed_response(Endpoints.new.channels(options))