kovid 0.2.2 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f127f0794e9366aed44f6805cb4320aea9171e47ffbde5398bdef294eb05646c
4
- data.tar.gz: 5acb7d663b8e2d6f64254b9717dbbabc9d821f841dd23cca69712c0450893908
3
+ metadata.gz: 56417d471dca89f7d9c72b044d0dea77f426f16e4d8b2607c90d8820a341fa52
4
+ data.tar.gz: 34731329a78b414e4387e862a17dd85f90a15eb65933d1ca42a0dc6324942ddc
5
5
  SHA512:
6
- metadata.gz: 39b27bf1caaf89bcb8850f1176b0a27ea14d0ba5ea3d5226e4d144bb805b89e6cf3378d1212d7979cd743bae520b4eb5112dced1823b4402c0919ac32421e90a
7
- data.tar.gz: 1ddb8bcc440f817d8a23c1f8b478dac024a8e013de15ba8013eb40a663495af291443224a0eb839e6757bf6138ee9ce0ffdb6269a3bd4939dba6fcca9d71de5a
6
+ metadata.gz: 344163a1a081fafa0a5e30085288981e737b98c2761864208b61e778c834771e312cfe5c36dc9456b1a53958ca28beb0d7ed1b63494f60781dab37df6e51b52c
7
+ data.tar.gz: fbacf84702f863a6c5256765a9a4d6dafaf851a0b2f735cf52f5818f070662bd7720f855a561fb2d962a53af4fd52a7415b662b788be05bacc49999d4455c14d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kovid (0.2.1)
4
+ kovid (0.2.2)
5
5
  colorize
6
6
  terminal-table
7
7
  thor
data/kovid.gemspec CHANGED
@@ -16,9 +16,9 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.post_install_message = %q{
18
18
  ============================================================================
19
- COVID-19 has devasted the world! But while we're fighting
20
- with the novel coronavirus, I think stats on the issue should be easily
21
- reachable.
19
+ COVID-19 has devasted the world. But while we're fighting
20
+ with the novel coronavirus, I think stats on the issue should be
21
+ accessible.
22
22
 
23
23
  There isn't much we can do now aside:
24
24
 
data/lib/kovid/request.rb CHANGED
@@ -3,10 +3,11 @@
3
3
  require 'json'
4
4
  require_relative 'tablelize'
5
5
  require_relative 'cache'
6
+ require_relative 'uri_builder'
6
7
 
7
8
  module Kovid
8
9
  class Request
9
- BASE_URL = 'https://corona.lmao.ninja'
10
+ COUNTRIES_PATH = UriBuilder.new('/countries').url
10
11
 
11
12
  class << self
12
13
  def by_country(country_name)
@@ -42,56 +43,52 @@ module Kovid
42
43
  end
43
44
 
44
45
  def cases
45
- path = '/all'
46
- fetch_url = BASE_URL + path
47
-
48
- response ||= JSON.parse(Typhoeus.get(fetch_url.to_s, cache_ttl: 900).response_body)
46
+ response ||= JSON.parse(Typhoeus.get(UriBuilder.new('/all').url, cache_ttl: 900).response_body)
49
47
 
50
48
  Kovid::Tablelize.cases(response)
51
49
  end
52
50
 
53
51
  def history(country)
54
- path = '/historical'
55
- fetch_url = BASE_URL + path + "/#{country}"
52
+ history_path = UriBuilder.new('/historical').url
53
+ response ||= JSON.parse(Typhoeus.get(history_path + "/#{country}", cache_ttl: 900).response_body)
56
54
 
57
- response ||= JSON.parse(Typhoeus.get(fetch_url.to_s, cache_ttl: 900).response_body)
58
55
  Kovid::Tablelize.history(response)
59
56
  end
60
57
 
61
58
  private
62
59
 
63
60
  def no_case_in(country)
64
- rows = [["No reported cases OR check your spelling!"]]
65
- Terminal::Table.new headings: ["You checked: #{country.capitalize.to_s}"], rows: rows
61
+ rows = [['No reported cases OR check your spelling!']]
62
+ Terminal::Table.new headings: ["You checked: #{country.capitalize}"], rows: rows
66
63
  end
67
64
 
68
65
  def fetch_countries(list)
69
66
  array = []
70
67
 
71
68
  list.each do |country|
72
- path = "/countries/#{country}"
73
- fetch_url = BASE_URL + path
74
-
75
- array << JSON.parse(Typhoeus.get(fetch_url.to_s, cache_ttl: 900).response_body)
69
+ array << JSON.parse(Typhoeus.get(COUNTRIES_PATH + "/#{country}", cache_ttl: 900).response_body)
76
70
  end
77
71
 
78
72
  array = array.sort_by { |json| -json['cases'] }
79
73
  end
80
74
 
81
75
  def fetch_country(country_name)
82
- path = "/countries/#{country_name}"
83
- fetch_url = BASE_URL + path
76
+ url = COUNTRIES_PATH + "/#{country_name}"
84
77
 
85
- JSON.parse(Typhoeus.get(fetch_url.to_s, cache_ttl: 900).response_body)
78
+ JSON.parse(Typhoeus.get(url, cache_ttl: 900).response_body)
86
79
  end
87
80
 
88
81
  def fetch_state(state)
89
- path = '/states'
90
- fetch_url = BASE_URL + path
82
+ url = UriBuilder.new('/states').url
83
+ states_array = JSON.parse(Typhoeus.get(url, cache_ttl: 900).response_body)
91
84
 
92
- states_array = JSON.parse(Typhoeus.get(fetch_url.to_s, cache_ttl: 900).response_body)
85
+ states_array.select { |state_name| state_name['state'] == capitalize_words(state) }.first
86
+ end
87
+
88
+ private
93
89
 
94
- states_array.select { |state_name| state_name['state'] == state.split.map(&:capitalize).join(' ') }.first
90
+ def capitalize_words(string)
91
+ string.split.map(&:capitalize).join(' ')
95
92
  end
96
93
  end
97
94
  end
@@ -20,6 +20,8 @@ module Kovid
20
20
  'Recovered'.paint_green
21
21
  ].freeze
22
22
 
23
+ FOOTER_LINE = ['------------', '------------', '------------', '------------'].freeze
24
+
23
25
  def country_table(data)
24
26
  headings = CASES_DEATHS_RECOVERED
25
27
  rows = [[data['cases'], data['deaths'], data['recovered']]]
@@ -65,6 +67,8 @@ module Kovid
65
67
 
66
68
  rows = []
67
69
  rows << [state['cases'], state['todayCases'], state['deaths'], state['todayDeaths'], state['recovered'], state['active']]
70
+ puts
71
+ puts "‼️ Swap value of 'Recovered' for 'Active'. API scraper broke."
68
72
  Terminal::Table.new(title: state['state'], headings: headings, rows: rows)
69
73
  end
70
74
 
@@ -137,13 +141,15 @@ module Kovid
137
141
  rows << row
138
142
  end
139
143
 
140
- rows << ['------------', '------------', '------------', '------------']
144
+ rows << FOOTER_LINE
141
145
  rows << DATE_CASES_DEATHS_RECOVERED
142
146
 
143
- Terminal::Table.new(title: country['standardizedCountryName'].capitalize.to_s, headings: headings, rows: rows)
147
+ Terminal::Table.new(title: country['standardizedCountryName'].split.map(&:capitalize).join(' '), headings: headings, rows: rows)
144
148
  end
145
149
 
146
- private def comma_delimit(number)
150
+ private
151
+
152
+ def comma_delimit(number)
147
153
  number.to_s.chars.to_a.reverse.each_slice(3).map(&:join).join(',').reverse
148
154
  end
149
155
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+
5
+ module Kovid
6
+ class UriBuilder
7
+ attr_reader :path
8
+
9
+ BASE_URI = 'corona.lmao.ninja'
10
+
11
+ def initialize(path = '')
12
+ @path = path
13
+ end
14
+
15
+ def url
16
+ URI::HTTPS.build(host: BASE_URI, path: path).to_s
17
+ end
18
+ end
19
+ end
data/lib/kovid/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kovid
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kovid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emmanuel Hayford
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-23 00:00:00.000000000 Z
11
+ date: 2020-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -151,6 +151,7 @@ files:
151
151
  - lib/kovid/painter.rb
152
152
  - lib/kovid/request.rb
153
153
  - lib/kovid/tablelize.rb
154
+ - lib/kovid/uri_builder.rb
154
155
  - lib/kovid/version.rb
155
156
  homepage: https://github.com/siaw23/kovid
156
157
  licenses:
@@ -161,13 +162,12 @@ metadata:
161
162
  source_code_uri: https://github.com/siaw23/kovid
162
163
  changelog_uri: https://github.com/siaw23/kovid
163
164
  post_install_message: "\n ============================================================================\n
164
- \ COVID-19 has devasted the world! But while we're fighting\n with the
165
- novel coronavirus, I think stats on the issue should be easily\n reachable.\n\n
166
- \ There isn't much we can do now aside:\n\n * Washing our hands with soap
167
- frequently.\n * Limiting our movements, how much we touch our faces & social
168
- distancing.\n * Disinfecting our phones, keys, doorknobs, keyboards, etc.\n
169
- \ * Being there for each other.\n\n Stay safe!\n Emmanuel Hayford.\n
170
- \ ============================================================================\n
165
+ \ COVID-19 has devasted the world. But while we're fighting\n with the
166
+ novel coronavirus, I think stats on the issue should be\n accessible.\n\n There
167
+ isn't much we can do now aside:\n\n * Washing our hands with soap frequently.\n
168
+ \ * Limiting our movements, how much we touch our faces & social distancing.\n
169
+ \ * Disinfecting our phones, keys, doorknobs, keyboards, etc.\n * Being
170
+ there for each other.\n\n Stay safe!\n Emmanuel Hayford.\n ============================================================================\n
171
171
  \ "
172
172
  rdoc_options: []
173
173
  require_paths: