weatherfor 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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