covid19_api 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/covid19.rb +98 -0
  3. metadata +84 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4ac8668b1302fd59c339ad4c093b57947fa83758c2492c0e185046e8d531b66e
4
+ data.tar.gz: ae094b9fad8d9baed79b44c3ea0cdb27d293e7a4f372fc4cdf01fe059b02ea7f
5
+ SHA512:
6
+ metadata.gz: 0e919a0dab436ea1fd8907496520fdd7d009d11f062af077c3499962f16e953a190148a0f08af17ba453b03b97683fefec9e921a58a1db7ece7934485c863272
7
+ data.tar.gz: 413d78b0f56c179d1255610e1246ff1374d366f3b9d0d95e9fe56f3cb2b6a7e942bbbc5f6da3da506bf69711848c0ee9c42d6953e5bfe90a4e401da43ed30522
data/lib/covid19.rb ADDED
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'http'
4
+
5
+ # Ruby wrapper for https://covid19api.com/.
6
+ class Covid19
7
+ BASE_URL = 'https://api.covid19api.com'.freeze
8
+ STATUSES = %w[confirmed recovered deaths].freeze
9
+
10
+ class << self
11
+ def info
12
+ serve_request('')
13
+ end
14
+
15
+ # Warning: returns 10MB of data - use with caution.
16
+ def all
17
+ serve_request('all')
18
+ end
19
+
20
+ def stats
21
+ serve_request('stats')
22
+ end
23
+
24
+ def summary
25
+ serve_request('summary')
26
+ end
27
+
28
+ def countries
29
+ serve_request('countries')
30
+ end
31
+
32
+ def cases_by_day_one(country, status)
33
+ return invalid_status_msg(status) unless valid_status?(status)
34
+
35
+ serve_request("/dayone/country/#{country}/status/#{status}")
36
+ end
37
+
38
+ def cases_by_day_one_live(country, status)
39
+ return invalid_status_msg(status) unless valid_status?(status)
40
+
41
+ serve_request("/dayone/country/#{country}/status/#{status}/live")
42
+ end
43
+
44
+ def cases_by_day_one_total(country, status)
45
+ serve_request("/total/dayone/country/#{country}/status/#{status}")
46
+ end
47
+
48
+ def cases_by_country(country, status)
49
+ return invalid_status_msg(status) unless valid_status?(status)
50
+
51
+ serve_request("/country/#{country}/status/#{status}")
52
+ end
53
+
54
+ def cases_by_country_live(country, status)
55
+ return invalid_status_msg(status) unless valid_status?(status)
56
+
57
+ serve_request("/country/#{country}/status/#{status}/live")
58
+ end
59
+
60
+ def cases_by_country_total(country, status)
61
+ return invalid_status_msg(status) unless valid_status?(status)
62
+
63
+ serve_request("/total/country/#{country}/status/#{status}")
64
+ end
65
+
66
+ def cases_live_by_country_and_status(country, status)
67
+ return invalid_status_msg(status) unless valid_status?(status)
68
+
69
+ serve_request("/live/country/#{country}/status/#{status}")
70
+ end
71
+
72
+ def cases_live_by_country_after_date(
73
+ country,
74
+ status,
75
+ date = (DateTime.now - 1).to_s
76
+ )
77
+ return invalid_status_msg(status) unless valid_status?(status)
78
+
79
+ serve_request("/live/country/#{country}/status/#{status}/date/#{date}")
80
+ end
81
+
82
+ private
83
+
84
+ def serve_request(suffix)
85
+ response = HTTP.get("#{BASE_URL}/#{suffix}")
86
+ JSON.parse(response)
87
+ end
88
+
89
+ def valid_status?(status)
90
+ STATUSES.include?(status.downcase)
91
+ end
92
+
93
+ def invalid_status_msg(status)
94
+ "Invalid status \"#{status.downcase}\"." \
95
+ "Please provide one of the following statuses: #{STATUSES.join(', ')}"
96
+ end
97
+ end
98
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: covid19_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Conor Broderick
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-03-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: http
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.4'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.4.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '4.4'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.4.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.9'
40
+ - - '='
41
+ - !ruby/object:Gem::Version
42
+ version: 3.9.0
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.9'
50
+ - - '='
51
+ - !ruby/object:Gem::Version
52
+ version: 3.9.0
53
+ description: Ruby wrapper for https://covid19api.com/
54
+ email: cjayjayb@gmail.com
55
+ executables: []
56
+ extensions: []
57
+ extra_rdoc_files: []
58
+ files:
59
+ - lib/covid19.rb
60
+ homepage: https://github.com/covoid19-api-ruby-wrapper
61
+ licenses:
62
+ - MIT
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.7.3
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: COVID19 API ruby wrapper
84
+ test_files: []