weatherfor 0.1.2 → 0.1.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: 8b4b91285f13701c20571438e8512fd6ae2a5f8eb622e7a7be34503bff366aed
4
- data.tar.gz: 77651d9a2851a1c7ddf2d0ef31b63fa39f48ccec82f94ba050246a46f956250b
3
+ metadata.gz: 85a546d16499c87a9f01c538667787d96fdaea6f155ef156e7d52e3226a234b3
4
+ data.tar.gz: f7a43bb84686aec7bcbb93125180fc4ab0a8aa08b68472f711f16d8edab5f54a
5
5
  SHA512:
6
- metadata.gz: 47099721577ff9a0ce10a1baa1beb3cdb9f9f54684d9dfa920a5c454e680923e9acc4a064861baef308ae14663cf6c42da465d87bd9811b33c97c728dcf14254
7
- data.tar.gz: de57fa381901230b6a056b0879ec4d36374a76cc1c8dc88caad73b977f26b7f6ac5a257fb42a90241c69fc3fed4a81de09fdb9f624247c431fc8f96b7d324b2e
6
+ metadata.gz: ead1a7c9ef8c1cd38cdab3c8bc0bdcf12857bf8310d84f7895b63caf7bd5f468e672d36ed763ac879e28c429155842e136db8da7e15d5ace9ffc0dc4d14191f7
7
+ data.tar.gz: 022301040e6e8c5de10d9d81813d9dce4b38c79ad7236a34dfa7df2226183ad8d027a4440b783e27cb6358a3e0942704b28a0a5fb74187f134eb30a0f132a602
data/.rubocop.yml CHANGED
@@ -1,2 +1,11 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
+ SuggestExtensions: false
4
+
5
+ Metrics/BlockLength:
6
+ Exclude:
7
+ - 'spec/**/*.rb'
8
+
9
+ Layout/LineLength:
10
+ Exclude:
11
+ - 'spec/**/*.rb'
data/Gemfile CHANGED
@@ -9,3 +9,9 @@ gemspec
9
9
  gem 'rake', '~> 12.0'
10
10
  gem 'rspec', '~> 3.0'
11
11
  gem 'rubocop', require: false
12
+ gem 'vcr'
13
+
14
+ group :test do
15
+ gem 'simplecov', require: false
16
+ gem 'webmock'
17
+ end
data/Gemfile.lock CHANGED
@@ -1,16 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weatherfor (0.1.2)
4
+ weatherfor (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ addressable (2.7.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
9
11
  ast (2.4.2)
12
+ crack (0.4.5)
13
+ rexml
10
14
  diff-lcs (1.4.4)
15
+ docile (1.3.5)
16
+ hashdiff (1.0.1)
11
17
  parallel (1.20.1)
12
18
  parser (3.0.1.0)
13
19
  ast (~> 2.4.1)
20
+ public_suffix (4.0.6)
14
21
  rainbow (3.0.0)
15
22
  rake (12.3.3)
16
23
  regexp_parser (2.1.1)
@@ -40,7 +47,18 @@ GEM
40
47
  rubocop-ast (1.4.1)
41
48
  parser (>= 2.7.1.5)
42
49
  ruby-progressbar (1.11.0)
50
+ simplecov (0.21.2)
51
+ docile (~> 1.1)
52
+ simplecov-html (~> 0.11)
53
+ simplecov_json_formatter (~> 0.1)
54
+ simplecov-html (0.12.3)
55
+ simplecov_json_formatter (0.1.2)
43
56
  unicode-display_width (2.0.0)
57
+ vcr (6.0.0)
58
+ webmock (3.12.2)
59
+ addressable (>= 2.3.6)
60
+ crack (>= 0.3.2)
61
+ hashdiff (>= 0.4.0, < 2.0.0)
44
62
 
45
63
  PLATFORMS
46
64
  ruby
@@ -49,7 +67,10 @@ DEPENDENCIES
49
67
  rake (~> 12.0)
50
68
  rspec (~> 3.0)
51
69
  rubocop
70
+ simplecov
71
+ vcr
52
72
  weatherfor!
73
+ webmock
53
74
 
54
75
  BUNDLED WITH
55
76
  2.1.2
data/lib/weatherfor.rb CHANGED
@@ -9,16 +9,18 @@ module Weatherfor
9
9
 
10
10
  # Make the API request and parse data
11
11
  class ApiConsultant
12
+ attr_reader :obj
13
+
12
14
  def initialize(city, api_id)
13
15
  uri = url(city, api_id)
14
16
  res = Net::HTTP.get_response(uri)
15
17
 
16
- @data = case res.code
17
- when '200'
18
- JSON.parse(res.body)
19
- else
20
- { error: res.message }
21
- end
18
+ @obj = case res.code
19
+ when '200'
20
+ JSON.parse(res.body)
21
+ else
22
+ { error: res.message }
23
+ end
22
24
  end
23
25
 
24
26
  def weather_in_days
@@ -30,7 +32,7 @@ module Weatherfor
30
32
 
31
33
  def avg_temp_in_days
32
34
  @arr = []
33
- @json['list'].group_by { |item| Time.at(item['dt']).strftime('%m-%d-%Y') }.each do |date, data|
35
+ @obj['list'].group_by { |item| Time.at(item['dt']).strftime('%m-%d-%Y') }.each do |date, data|
34
36
  avg_temp = data.sum { |info| info['main']['temp'] }
35
37
  avg_temp /= data.count
36
38
  @arr << { avg_temp: avg_temp, date: date }
@@ -38,38 +40,34 @@ module Weatherfor
38
40
  end
39
41
 
40
42
  def today_avg_temp
41
- @arr.first[:avg_temp].round(0)
43
+ @obj['list'][0]['main']['temp'].round
42
44
  end
43
45
 
44
46
  def city_name
45
- @json['city']['name']
47
+ @obj['city']['name']
46
48
  end
47
49
 
48
50
  def current_temp_desc
49
- @json['list'][0]['weather'][0]['description']
51
+ @obj['list'][0]['weather'][0]['description']
50
52
  end
51
53
 
52
54
  def current_date
53
55
  Time.now.strftime('%d/%m')
54
56
  end
55
57
 
58
+ private
59
+
56
60
  def parse_avg_text
57
61
  text = ''
58
- @arr.last(4).each_with_index do |item, index|
62
+ @arr.last(5).each_with_index do |item, index|
59
63
  text += "#{item[:avg_temp].round(0)}°C em #{parse_date(item[:date])}"
60
- text += index < 3 ? ', ' : '.'
64
+ text += ', ' if index <= 2
65
+ text += ' e ' if index == 3
66
+ text += '.' if index == 4
61
67
  end
62
68
  text
63
69
  end
64
70
 
65
- def city
66
- @json['city']
67
- end
68
-
69
- def list
70
- @json['list']
71
- end
72
-
73
71
  def parse_date(date)
74
72
  date.gsub('-', '/').delete_suffix('/2021')
75
73
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Weatherfor
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weatherfor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Ramos