weather_fetcher 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: 3667f7b49205868dcd39db647197ddec0517d4a2
4
- data.tar.gz: 03de40feb2699f5894e3fb5db7c57bad39107912
3
+ metadata.gz: 71e646fcbe2f0e38d1ac0845dbf009260855bceb
4
+ data.tar.gz: 1e237fbd785725a0218ddaabcedb33ba0526ef72
5
5
  SHA512:
6
- metadata.gz: 381cabb43fbb0165d390f7b9c42f96494a573a57504c8da00468c25f078d904e2a5bf6e935505f37579c81032670f7de22b6cb14a96a42c3f381a8b32d0d3c65
7
- data.tar.gz: b3d173d670ca30a6c1d746f784720d0dd9339af297f9e819a02f144a3053d292807ac12e2226a296bb3666e1ae56e5879cc44bdb160fd69e66b6ef8216b0acaf
6
+ metadata.gz: 3a81ac6441a08b774d665e02f3616d80bff530b9c2114dc56f703841397d006a86749958789e95d8d23dc248c4e1ef780a589dddccbb7963a02a18a0eafa7434
7
+ data.tar.gz: c5225f3c9ba4f72fdaaedc7a4419d9faf7477a48781d3d9605aa3e7e7efee29741efd8942df20ff2b9b1ae3ad07dade8e092f2e86e2b0fb670da79eb3334949d
data/Gemfile CHANGED
@@ -1,7 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem 'curb'
4
- gem "simple_metar_parser", ">= 0.0.1"
4
+ gem 'simple_metar_parser', ">= 0.0.1"
5
+ gem 'colorize'
5
6
 
6
7
  group :development do
7
8
  gem "rspec"
data/Gemfile.lock CHANGED
@@ -3,6 +3,7 @@ GEM
3
3
  specs:
4
4
  addressable (2.3.6)
5
5
  builder (3.2.2)
6
+ colorize (0.7.5)
6
7
  curb (0.8.6)
7
8
  descendants_tracker (0.0.4)
8
9
  thread_safe (~> 0.3, >= 0.3.1)
@@ -32,7 +33,7 @@ GEM
32
33
  rdoc
33
34
  json (1.8.1)
34
35
  jwt (1.2.0)
35
- mini_portile (0.6.1)
36
+ mini_portile (0.6.2)
36
37
  multi_json (1.10.1)
37
38
  multi_xml (0.5.5)
38
39
  multipart-post (2.0.0)
@@ -73,6 +74,7 @@ PLATFORMS
73
74
 
74
75
  DEPENDENCIES
75
76
  bundler
77
+ colorize
76
78
  curb
77
79
  jeweler
78
80
  rdoc
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -1,22 +1,37 @@
1
+ require 'logger'
2
+ require 'colorize'
3
+
1
4
  # Fetcher
2
5
  module WeatherFetcher
3
6
  class Fetcher
4
7
 
5
- def self.fetch(p, max_response_time = 0.8)
8
+ attr_accessor :logger
9
+
10
+ def initialize
11
+ @logger = Logger.new(STDOUT)
12
+ end
13
+
14
+ def fetch(defs, max_response_time = 0.8)
6
15
  require 'yaml'
7
16
  classes = ProviderList.providers(max_response_time)
8
17
  result = Array.new
9
18
 
10
19
  classes.each do |c|
11
- instance = c.new(p)
20
+ self.logger.debug("#{self.class.to_s.blue} - starting #{c.to_s.red} with #{defs.size.to_s.green} definitions")
21
+
22
+ instance = c.new(defs)
23
+ instance.logger = self.logger
12
24
  instance.fetch
13
- result += instance.weathers
25
+ class_results = instance.weathers
26
+
27
+ self.logger.debug("#{self.class.to_s.blue} - done #{c.to_s.red} with #{class_results.size.to_s.green} results")
28
+ result += class_results
14
29
  end
15
30
 
16
31
  return result
17
32
  end
18
33
 
19
- def self.represent_result(result)
34
+ def represent_result(result)
20
35
  puts result.inspect
21
36
  data = result.sort{|r,s| r.time_from <=> s.time_from}
22
37
  data.each do |d|
@@ -1,3 +1,6 @@
1
+ require 'logger'
2
+ require 'colorize'
3
+
1
4
  # Base class for ordinary weather provider
2
5
  module WeatherFetcher
3
6
  class Provider
@@ -10,20 +13,13 @@ module WeatherFetcher
10
13
  # Create an instance, definitions can be set here
11
14
  def initialize(_defs = Array.new)
12
15
  @weathers = Array.new
16
+ @logger = Logger.new(STDOUT)
13
17
  self.defs = _defs
14
18
  end
15
19
 
16
20
  attr_reader :weathers
17
-
18
- # Definitions, format like below
19
- #- :url: 'http://pogoda.onet.pl/0,846,38,,,inowroclaw,miasto.html'
20
- # :city: 'Inowrocław'
21
- # :country: 'Poland'
22
- # :coord:
23
- # :lat: 52.799264
24
- # :lon: 18.259935
25
-
26
21
  attr_reader :defs
22
+ attr_accessor :logger
27
23
 
28
24
  def defs=(_defs)
29
25
  if _defs.kind_of? Hash
@@ -47,9 +43,12 @@ module WeatherFetcher
47
43
 
48
44
  # Fetch everything from definitions (defs)
49
45
  def fetch(ignore_errors: true)
46
+ self.logger.debug "#{self.class.to_s.blue} - #{defs.size.to_s.green} definitions to process"
50
47
  a = Array.new
51
48
  defs.each do |d|
52
49
  begin
50
+ self.logger.debug "#{self.class.to_s.blue} - #{d[:name].to_s.yellow}"
51
+
53
52
  p = fetch_and_process_single(d)
54
53
  p = [] if p.nil?
55
54
  p.each do |pw|
@@ -59,11 +58,13 @@ module WeatherFetcher
59
58
 
60
59
  rescue => e
61
60
  if ignore_errors
62
- puts e.inspect
63
- puts e.backtrace
61
+ self.logger.error "#{self.class.to_s.blue} - #{d.inspect} fail"
62
+ self.logger.error e.inspect
63
+ self.logger.error e.backtrace
64
64
  else
65
65
  raise e
66
66
  end
67
+
67
68
  end
68
69
  a += p unless p.nil?
69
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weather_fetcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksander Kwiatkowski
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.0.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorize
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement