weather-report 0.4.1 → 0.4.2

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: 68d94f027fd2507b577ed28553f002ad8b1daeacfa8c4cf9b45df023ad85b4e5
4
- data.tar.gz: 8179f05a5fdc3b61b442afb214499736105ef432624836ebd02588363aab5178
3
+ metadata.gz: 940926ddd30861ac84a28085e33ea3a5545b26c8e6594bfe95f385bc4cd02968
4
+ data.tar.gz: 91d5683c8c07b435493f0e8a6f676360e96b9f48625ca2b761837eda78795e1d
5
5
  SHA512:
6
- metadata.gz: 91d4c37a2841d6cde6fce7224b02b5fcaa63b508c38acc27a191b664ea34f0150593a173bccd4e80c1d231eef3ff9350ecb6d3b78a3bdd63e105c430c83886a3
7
- data.tar.gz: 632fcda99ad2eb42aef55725e4fb565a5f11b6a52ad6a0e238d7589b239a0151bf2783a7a54113009f977de1b696a1345c0d43184fe16a552b74b1ff913b117f
6
+ metadata.gz: 63da6c9c80a1b8ca054cb5ed8d5e021505e2f90b8774097817402bb8015a046ab29eeba34a0cdb421c4b40a4bf3aad3f0d134c458efd3056d3a5bdad78189d2b
7
+ data.tar.gz: 39350cfa70debae80bafe58d4591fed4ccb025a36864dc64fb2d7fc74bcec1d95f537105fcaf3ed75c20efefe3a766bbd8c344158a21add5694f8e3a2fe430cb
@@ -1,9 +1,12 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - "2.5"
5
- - "2.6"
6
- - "2.7"
7
- # - jruby
8
- # - rbx-3
4
+ - '2.5'
5
+ - '2.6'
6
+ - '2.7'
7
+ # - jruby
8
+ # - rbx-3
9
9
  before_install: gem install bundler -v 2.1.4
10
+ notifications:
11
+ slack:
12
+ secure: V4ek++4NqkVvL44PrDrycKUdIVIGUM5lkBydkyNl1CU8+wf2l/GzeMnI/d8rF+ok8DgWTvEoEr15+/d9tzec34M91GbVnHI5+MeOWuZcp7LDVvKMZc67kZcHqplurBFcKuTty8AJgGmLOjUqmlrXoXSceTachaqdU/0u1MQV2Sg=
data/Gemfile CHANGED
@@ -2,3 +2,14 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in weather-report.gemspec
4
4
  gemspec
5
+
6
+ gem 'nokogiri'
7
+ gem 'slop', '~> 3.6.0'
8
+
9
+ group :development do
10
+ gem "rake"
11
+ gem "guard"
12
+ gem "guard-minitest"
13
+ gem "rb-fsevent"
14
+ gem "minitest-reporters"
15
+ end
@@ -1,20 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weather-report (0.4.1)
5
- nokogiri
6
- slop (~> 3.6.0)
4
+ weather-report (0.4.2)
7
5
 
8
6
  GEM
9
7
  remote: https://rubygems.org/
10
8
  specs:
11
9
  ansi (1.5.0)
12
10
  builder (3.2.4)
13
- growl (1.0.3)
11
+ coderay (1.1.3)
12
+ ffi (1.13.1)
13
+ formatador (0.2.5)
14
+ guard (2.16.2)
15
+ formatador (>= 0.2.4)
16
+ listen (>= 2.7, < 4.0)
17
+ lumberjack (>= 1.0.12, < 2.0)
18
+ nenv (~> 0.1)
19
+ notiffany (~> 0.0)
20
+ pry (>= 0.9.12)
21
+ shellany (~> 0.0)
22
+ thor (>= 0.18.1)
14
23
  guard-compat (1.2.1)
15
24
  guard-minitest (2.4.6)
16
25
  guard-compat (~> 1.2)
17
26
  minitest (>= 3.0)
27
+ listen (3.2.1)
28
+ rb-fsevent (~> 0.10, >= 0.10.3)
29
+ rb-inotify (~> 0.9, >= 0.9.10)
30
+ lumberjack (1.2.8)
31
+ method_source (1.0.0)
18
32
  mini_portile2 (2.4.0)
19
33
  minitest (5.14.2)
20
34
  minitest-reporters (1.4.2)
@@ -22,22 +36,35 @@ GEM
22
36
  builder
23
37
  minitest (>= 5.0)
24
38
  ruby-progressbar
39
+ nenv (0.3.0)
25
40
  nokogiri (1.10.10)
26
41
  mini_portile2 (~> 2.4.0)
42
+ notiffany (0.1.3)
43
+ nenv (~> 0.1)
44
+ shellany (~> 0.0)
45
+ pry (0.13.1)
46
+ coderay (~> 1.1)
47
+ method_source (~> 1.0)
27
48
  rake (13.0.1)
28
49
  rb-fsevent (0.10.4)
50
+ rb-inotify (0.10.1)
51
+ ffi (~> 1.0)
29
52
  ruby-progressbar (1.10.1)
53
+ shellany (0.0.1)
30
54
  slop (3.6.0)
55
+ thor (1.0.1)
31
56
 
32
57
  PLATFORMS
33
58
  ruby
34
59
 
35
60
  DEPENDENCIES
36
- growl
61
+ guard
37
62
  guard-minitest
38
63
  minitest-reporters
64
+ nokogiri
39
65
  rake
40
66
  rb-fsevent
67
+ slop (~> 3.6.0)
41
68
  weather-report!
42
69
 
43
70
  BUNDLED WITH
@@ -21,7 +21,7 @@ module WeatherReport
21
21
  # @return [Array] get city list
22
22
  def self.cities
23
23
  proxy = Weather.parse_proxy(ENV["http_proxy"])
24
- doc = Nokogiri::XML(open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
24
+ doc = Nokogiri::XML(URI.open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
25
25
  doc.xpath("//city").map{|i|
26
26
  i["title"]
27
27
  }
@@ -6,7 +6,17 @@ module WeatherReport
6
6
 
7
7
  def initialize(forecasts, dateLabel)
8
8
  raise ArgumentError, "dateLabel must be 今日, 明日 or 明後日" unless dateLabel =~ /(今日|明日|明後日)/
9
- @forecast = forecast(forecasts, dateLabel)
9
+
10
+ forecast = forecast(forecasts, dateLabel)
11
+ @telop = forecast['telop']
12
+ year, month, day = forecast['date'].split('-')
13
+ @date = Date.new(year.to_i, month.to_i, day.to_i)
14
+
15
+ temperature = forecast['temperature']
16
+ min = temperature['min']
17
+ max = temperature['max']
18
+ @temperature_min = min ? min['celsius'].to_i : nil
19
+ @temperature_max = max ? max['celsius'].to_i : nil
10
20
  end
11
21
 
12
22
  # @return [Boolean] return true if it rains.
@@ -24,33 +34,6 @@ module WeatherReport
24
34
  telop =~ /[雨雪霙雹]/ ? true : false
25
35
  end
26
36
 
27
- # @return [Date] the date
28
- def date
29
- year, month, day = @forecast["date"].split('-')
30
- @date ||= Date.new(year.to_i, month.to_i, day.to_i)
31
- end
32
-
33
- # @return [String] the telop
34
- def telop
35
- @telop ||= @forecast["telop"]
36
- end
37
-
38
- # @return [Fixnum] the minimum temperature.
39
- # Temperature of today could be nil.
40
- def temperature_min
41
- min = @forecast["temperature"]["min"]
42
- @temperature ||=
43
- min ? min["celsius"].to_i : nil
44
- end
45
-
46
- # @return [Fixnum] the maximum temperature.
47
- # Temperature of today could be nil.
48
- def temperature_max
49
- max = @forecast["temperature"]["max"]
50
- @temperature_max ||=
51
- max ? max["celsius"].to_i : nil
52
- end
53
-
54
37
  # @return [Hash] return with hash format.
55
38
  def to_h
56
39
  {
@@ -1,3 +1,3 @@
1
1
  module WeatherReport
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  end
@@ -12,7 +12,7 @@ module WeatherReport
12
12
  def self.request_cityid(city_name)
13
13
  raise ArgumentError, "City name must be String." unless city_name.kind_of?(String)
14
14
  proxy = Weather.parse_proxy(ENV["http_proxy"])
15
- doc = Nokogiri::XML(open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
15
+ doc = Nokogiri::XML(URI.open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
16
16
  doc.search("//city[@title='#{city_name}']").attr("id").value
17
17
  rescue NoMethodError
18
18
  raise NoCityError, "It seems like city #{city_name} does not exist.\nPlease look at https://weather.tsukumijima.net/primary_area.xml for city list."
@@ -0,0 +1,8 @@
1
+ module WeatherReport
2
+ class Day
3
+ attr_reader date: Date
4
+ attr_reader telop: String
5
+ attr_reader temperature_min: Integer?
6
+ attr_reader temperature_max: Integer?
7
+ end
8
+ end
@@ -1,28 +1,21 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'weather-report/version'
1
+ require_relative 'lib/weather-report/version'
5
2
 
6
3
  Gem::Specification.new do |spec|
7
4
  spec.name = "weather-report"
8
5
  spec.version = WeatherReport::VERSION
9
6
  spec.authors = ["zakuni"]
10
7
  spec.email = ["kunio038@gmail.com"]
11
- spec.description = %q{A Ruby library and CLI to get Japanese Weather via Livedoor Weather Web Service(http://weather.livedoor.com/weather_hacks/webservice).}
12
- spec.summary = %q{A Ruby client of Livedoor Weather Web Service.}
8
+
9
+ spec.description = %q{A Ruby library and CLI to get Japanese Weather via 天気予報 API(https://weather.tsukumijima.net/) which is compatible with Livedoor Weather Web Service.}
10
+ spec.summary = %q{A Ruby client of 天気予報 API(https://weather.tsukumijima.net/).}
13
11
  spec.homepage = "https://github.com/zakuni/weather-report"
14
12
  spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
15
14
 
16
- spec.files = `git ls-files`.split($/)
15
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
16
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ end
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
20
  spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency "nokogiri"
22
- spec.add_dependency "slop", "~> 3.6.0"
23
- spec.add_development_dependency "rake"
24
- spec.add_development_dependency "guard-minitest"
25
- spec.add_development_dependency "rb-fsevent"
26
- spec.add_development_dependency "minitest-reporters"
27
- spec.add_development_dependency "growl"
28
21
  end
metadata CHANGED
@@ -1,115 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weather-report
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - zakuni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-13 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: nokogiri
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: slop
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 3.6.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 3.6.0
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: guard-minitest
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rb-fsevent
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: minitest-reporters
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: growl
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- description: A Ruby library and CLI to get Japanese Weather via Livedoor Weather Web
112
- Service(http://weather.livedoor.com/weather_hacks/webservice).
11
+ date: 2020-12-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A Ruby library and CLI to get Japanese Weather via 天気予報 API(https://weather.tsukumijima.net/)
14
+ which is compatible with Livedoor Weather Web Service.
113
15
  email:
114
16
  - kunio038@gmail.com
115
17
  executables:
@@ -130,10 +32,7 @@ files:
130
32
  - lib/weather-report/day.rb
131
33
  - lib/weather-report/version.rb
132
34
  - lib/weather-report/weather.rb
133
- - test/test_day.rb
134
- - test/test_helper.rb
135
- - test/test_weather-report.rb
136
- - test/test_weather.rb
35
+ - sig/day.rbs
137
36
  - weather-report.gemspec
138
37
  homepage: https://github.com/zakuni/weather-report
139
38
  licenses:
@@ -147,7 +46,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
46
  requirements:
148
47
  - - ">="
149
48
  - !ruby/object:Gem::Version
150
- version: '0'
49
+ version: 2.3.0
151
50
  required_rubygems_version: !ruby/object:Gem::Requirement
152
51
  requirements:
153
52
  - - ">="
@@ -157,9 +56,5 @@ requirements: []
157
56
  rubygems_version: 3.1.2
158
57
  signing_key:
159
58
  specification_version: 4
160
- summary: A Ruby client of Livedoor Weather Web Service.
161
- test_files:
162
- - test/test_day.rb
163
- - test/test_helper.rb
164
- - test/test_weather-report.rb
165
- - test/test_weather.rb
59
+ summary: A Ruby client of 天気予報 API(https://weather.tsukumijima.net/).
60
+ test_files: []
@@ -1,95 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.expand_path 'test_helper', File.dirname(__FILE__)
4
-
5
- class TestDay < MiniTest::Unit::TestCase
6
- include WeatherReport
7
-
8
- def setup
9
- city_id = Weather.request_cityid("東京")
10
- uri = URI.parse("https://weather.tsukumijima.net/api/forecast?city=#{city_id}")
11
- @forecasts = JSON.parse(uri.read)
12
- @day = Day.new(@forecasts, "明日")
13
- end
14
-
15
- def test_initialize
16
- assert_instance_of Day, Day.new(@forecasts, "明日")
17
- assert_raises(ArgumentError) do
18
- Day.new(@forecasts, "昨日")
19
- end
20
- end
21
-
22
- def test_rain?
23
- assert_respond_to @day, :rain?
24
- @day.stub(:telop, '晴れ') do
25
- assert_equal @day.rain?, false
26
- end
27
- @day.stub(:telop, '雨') do
28
- assert_equal @day.rain?, true
29
- end
30
- @day.stub(:telop, '晴れ時々雨') do
31
- assert_equal @day.rain?, true
32
- end
33
- end
34
-
35
- def test_snow?
36
- assert_respond_to @day, :snow?
37
- @day.stub(:telop, '晴れ') do
38
- assert_equal @day.snow?, false
39
- end
40
- @day.stub(:telop, '雪') do
41
- assert_equal @day.snow?, true
42
- end
43
- @day.stub(:telop, '雪のち晴れ') do
44
- assert_equal @day.snow?, true
45
- end
46
- end
47
-
48
- def test_umbrella?
49
- assert_respond_to @day, :umbrella?
50
- @day.stub(:telop, '晴れ') do
51
- assert_equal @day.umbrella?, false
52
- end
53
- @day.stub(:telop, '雨') do
54
- assert_equal @day.umbrella?, true
55
- end
56
- @day.stub(:telop, '晴れのち雨') do
57
- assert_equal @day.umbrella?, true
58
- end
59
- @day.stub(:telop, '曇りのち晴れ') do
60
- assert_equal @day.umbrella?, false
61
- end
62
- end
63
-
64
- def test_date
65
- assert_respond_to @day, :date
66
- assert_instance_of Date, @day.date
67
- end
68
-
69
- def test_telop
70
- assert_respond_to @day, :telop
71
- assert_instance_of String, @day.telop
72
- end
73
-
74
- def test_temperature_min
75
- assert_respond_to @day, :temperature_min
76
- assert [Fixnum, NilClass].include? @day.temperature_min.class
77
- end
78
-
79
- def test_temperature_max
80
- assert_respond_to @day, :temperature_max
81
- assert [Fixnum, NilClass].include? @day.temperature_max.class
82
- end
83
-
84
- def test_to_h
85
- assert_respond_to @day, :to_h
86
- end
87
-
88
- def test_forecast
89
- forecasts = {"forecasts" => [{"dateLabel" => "明日"}]}
90
- refute_nil @day.send(:forecast, forecasts, "明日")
91
- assert_raises NoForecastError do
92
- @day.send(:forecast, forecasts, "明後日")
93
- end
94
- end
95
- end
@@ -1,9 +0,0 @@
1
- require 'rubygems'
2
- require 'minitest/autorun'
3
- require 'minitest/reporters'
4
- require 'minitest/pride'
5
-
6
- $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
7
- require 'weather-report'
8
-
9
- MiniTest::Reporters.use! [MiniTest::Reporters::DefaultReporter.new]
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.expand_path 'test_helper', File.dirname(__FILE__)
4
-
5
- class TestWeatherReport < MiniTest::Unit::TestCase
6
-
7
- def test_get
8
- assert_respond_to WeatherReport, :get
9
- assert_instance_of WeatherReport::Weather, WeatherReport.get("横浜")
10
- end
11
-
12
- def test_cities
13
- cities = WeatherReport.cities
14
- assert_instance_of Array, cities
15
- assert cities.include? "東京"
16
- assert cities.include? "横浜"
17
- end
18
- end
@@ -1,61 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.expand_path 'test_helper', File.dirname(__FILE__)
4
-
5
- class TestWeather < MiniTest::Unit::TestCase
6
- include WeatherReport
7
-
8
- def setup
9
- @id = Weather.request_cityid("東京")
10
- @weather = Weather.new(@id)
11
- end
12
-
13
- def test_initialize
14
- assert_raises ::ArgumentError do
15
- Weather.new
16
- end
17
- assert_instance_of Weather, Weather.new(@id)
18
- end
19
-
20
- def test_today
21
- assert_respond_to @weather, :today
22
-
23
- today = @weather.today
24
- assert_instance_of Day, today
25
- end
26
-
27
- def test_tomorrow
28
- assert_respond_to @weather, :tomorrow
29
-
30
- tomorrow = @weather.tomorrow
31
- assert_instance_of Day, tomorrow
32
- end
33
-
34
- def test_day_after_tomorrow
35
- assert_respond_to @weather, :day_after_tomorrow
36
-
37
- day_after_tomorrow = @weather.day_after_tomorrow
38
- assert_instance_of Day, day_after_tomorrow
39
- end
40
-
41
- def test_link
42
- assert_respond_to @weather, :link
43
- assert_instance_of String, @weather.link
44
- end
45
-
46
- def test_request_cityid
47
- assert_respond_to Weather, :request_cityid
48
- assert_equal "130010", Weather.request_cityid("東京")
49
- assert_equal "140010", Weather.request_cityid("横浜")
50
- assert_raises(ArgumentError) do
51
- Weather.request_cityid(nil)
52
- end
53
- assert_raises(NoCityError) do
54
- Weather.request_cityid("存在しない街")
55
- end
56
- end
57
-
58
- def test_to_h
59
- assert_respond_to @weather, :to_h
60
- end
61
- end