lib/zold/commands/taxes.rb in zold-0.9.10 vs lib/zold/commands/taxes.rb in zold-0.9.11

- old
+ new

@@ -115,40 +115,18 @@ private def top_scores best = [] - @remotes.all.each do |r| - uri = URI(r[:home]) - name = "#{r[:host]}:#{r[:port]}" - res = Http.new(uri).get - unless res.code == '200' - @log.info("#{name}: #{Rainbow(res.code).red} \"#{res.message}\" at #{uri}") - next - end - begin - json = JSON.parse(res.body) - rescue JSON::ParserError => e - @log.info("#{name}: #{Rainbow('broken').red} JSON \"#{e.message}\": #{res.body}") - next - end + @remotes.iterate(@log) do |r| + res = r.http.get + raise "#{res.code} \"#{res.message}\" at #{res.body}" unless res.code == '200' + json = JSON.parse(res.body) score = Score.parse_json(json['score']) - unless score.valid? - @log.info("#{name}: #{Rainbow('invalid').red} score") - next - end - if score.expired? - @log.info("#{name}: #{Rainbow('expired').red} score") - next - end - if score.strength < Score::STRENGTH - @log.info("#{name} score #{Rainbow(score.value).red} is too weak (<#{Score::STRENGTH})") - next - end - if score.value < Tax::EXACT_SCORE - @log.info("#{name} score #{Rainbow(score.value).red} is too small (<#{Tax::EXACT_SCORE})") - next - end + raise "Invalid score #{score}" unless score.valid? + raise "Expired score #{score}" if score.expired? + raise "Score is too weak (<#{Score::STRENGTH}) #{score}" if score.strength < Score::STRENGTH + raise "Score is too small (<#{Tax::EXACT_SCORE})" if score.value < Tax::EXACT_SCORE @log.info("#{score.host}:#{score.port}: #{Rainbow(score.value).green}") best << score end best.sort_by(&:value).reverse end