weather-report 0.3.5 → 0.4.2
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 +5 -5
- data/.gitignore +1 -1
- data/.travis.yml +10 -5
- data/Gemfile +11 -0
- data/Gemfile.lock +71 -0
- data/README.md +1 -1
- data/bin/weather-report +25 -21
- data/lib/weather-report.rb +13 -1
- data/lib/weather-report/day.rb +14 -29
- data/lib/weather-report/version.rb +1 -1
- data/lib/weather-report/weather.rb +7 -8
- data/sig/day.rbs +8 -0
- data/weather-report.gemspec +8 -15
- metadata +15 -120
- data/test/test_day.rb +0 -54
- data/test/test_helper.rb +0 -9
- data/test/test_weather-report.rb +0 -11
- data/test/test_weather.rb +0 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 940926ddd30861ac84a28085e33ea3a5545b26c8e6594bfe95f385bc4cd02968
|
4
|
+
data.tar.gz: 91d5683c8c07b435493f0e8a6f676360e96b9f48625ca2b761837eda78795e1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63da6c9c80a1b8ca054cb5ed8d5e021505e2f90b8774097817402bb8015a046ab29eeba34a0cdb421c4b40a4bf3aad3f0d134c458efd3056d3a5bdad78189d2b
|
7
|
+
data.tar.gz: 39350cfa70debae80bafe58d4591fed4ccb025a36864dc64fb2d7fc74bcec1d95f537105fcaf3ed75c20efefe3a766bbd8c344158a21add5694f8e3a2fe430cb
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
language: ruby
|
2
|
+
cache: bundler
|
2
3
|
rvm:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
- '2.5'
|
5
|
+
- '2.6'
|
6
|
+
- '2.7'
|
7
|
+
# - jruby
|
8
|
+
# - rbx-3
|
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
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
weather-report (0.4.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
ansi (1.5.0)
|
10
|
+
builder (3.2.4)
|
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)
|
23
|
+
guard-compat (1.2.1)
|
24
|
+
guard-minitest (2.4.6)
|
25
|
+
guard-compat (~> 1.2)
|
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)
|
32
|
+
mini_portile2 (2.4.0)
|
33
|
+
minitest (5.14.2)
|
34
|
+
minitest-reporters (1.4.2)
|
35
|
+
ansi
|
36
|
+
builder
|
37
|
+
minitest (>= 5.0)
|
38
|
+
ruby-progressbar
|
39
|
+
nenv (0.3.0)
|
40
|
+
nokogiri (1.10.10)
|
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)
|
48
|
+
rake (13.0.1)
|
49
|
+
rb-fsevent (0.10.4)
|
50
|
+
rb-inotify (0.10.1)
|
51
|
+
ffi (~> 1.0)
|
52
|
+
ruby-progressbar (1.10.1)
|
53
|
+
shellany (0.0.1)
|
54
|
+
slop (3.6.0)
|
55
|
+
thor (1.0.1)
|
56
|
+
|
57
|
+
PLATFORMS
|
58
|
+
ruby
|
59
|
+
|
60
|
+
DEPENDENCIES
|
61
|
+
guard
|
62
|
+
guard-minitest
|
63
|
+
minitest-reporters
|
64
|
+
nokogiri
|
65
|
+
rake
|
66
|
+
rb-fsevent
|
67
|
+
slop (~> 3.6.0)
|
68
|
+
weather-report!
|
69
|
+
|
70
|
+
BUNDLED WITH
|
71
|
+
2.1.4
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Weather Report
|
2
2
|
|
3
|
-
A Ruby library and CLI to get Japanese Weather via
|
3
|
+
A Ruby library and CLI to get Japanese Weather via 天気予報 API(https://weather.tsukumijima.net/) which is compatible with Livedoor Weather Web Service.
|
4
4
|
|
5
5
|
[](https://travis-ci.org/zakuni/weather-report)
|
6
6
|
|
data/bin/weather-report
CHANGED
@@ -1,42 +1,46 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
require 'rubygems'
|
4
|
-
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
5
|
-
require 'weather-report'
|
6
|
-
require 'optparse'
|
7
|
-
require 'ostruct'
|
8
2
|
|
9
|
-
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'weather-report'
|
5
|
+
require 'slop'
|
10
6
|
|
11
|
-
|
12
|
-
|
7
|
+
opts = Slop.parse(help: true) do
|
8
|
+
banner 'Usage: weather-report CITY [options]'
|
13
9
|
|
14
|
-
|
15
|
-
|
10
|
+
separator ""
|
11
|
+
separator "Common options:"
|
16
12
|
|
17
|
-
|
18
|
-
|
13
|
+
on :l, :list, 'Show city list' do
|
14
|
+
WeatherReport.cities.each do |city|
|
15
|
+
puts city
|
16
|
+
end
|
19
17
|
exit
|
20
18
|
end
|
21
19
|
|
22
|
-
|
20
|
+
on :v, :version, "Show version" do
|
23
21
|
puts "weather-report v#{WeatherReport::VERSION}"
|
24
22
|
exit
|
25
23
|
end
|
26
24
|
end
|
27
25
|
|
26
|
+
exit if opts.help?
|
27
|
+
|
28
28
|
if ARGV.empty?
|
29
|
-
puts
|
30
|
-
exit
|
29
|
+
puts opts.help
|
30
|
+
exit
|
31
31
|
end
|
32
32
|
|
33
|
-
city =
|
33
|
+
city = ARGV
|
34
34
|
weather = WeatherReport::Weather.new(WeatherReport::Weather.request_cityid(*city))
|
35
35
|
|
36
36
|
[weather.today, weather.tomorrow, weather.day_after_tomorrow].each do |day|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
begin
|
38
|
+
print "#{day.date.year}年#{day.date.month}月#{day.date.day}日の天気 #{day.telop}"
|
39
|
+
print " 最低気温#{day.temperature_min}度" if day.temperature_min
|
40
|
+
print " 最高気温#{day.temperature_max}度" if day.temperature_max
|
41
|
+
puts
|
42
|
+
rescue NoMethodError
|
43
|
+
next
|
44
|
+
end
|
41
45
|
end
|
42
46
|
puts weather.link
|
data/lib/weather-report.rb
CHANGED
@@ -8,10 +8,22 @@ require 'weather-report/day'
|
|
8
8
|
require 'weather-report/version'
|
9
9
|
|
10
10
|
module WeatherReport
|
11
|
-
class
|
11
|
+
class Error < StandardError; end
|
12
|
+
class ArgumentError < Error; end
|
13
|
+
class NoCityError < Error; end
|
14
|
+
class NoForecastError < Error; end
|
12
15
|
|
13
16
|
# @return [Weather] get weather of the city
|
14
17
|
def self.get(city_name)
|
15
18
|
Weather.new(Weather.request_cityid(city_name))
|
16
19
|
end
|
20
|
+
|
21
|
+
# @return [Array] get city list
|
22
|
+
def self.cities
|
23
|
+
proxy = Weather.parse_proxy(ENV["http_proxy"])
|
24
|
+
doc = Nokogiri::XML(URI.open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
|
25
|
+
doc.xpath("//city").map{|i|
|
26
|
+
i["title"]
|
27
|
+
}
|
28
|
+
end
|
17
29
|
end
|
data/lib/weather-report/day.rb
CHANGED
@@ -5,8 +5,19 @@ module WeatherReport
|
|
5
5
|
attr_reader :date, :telop, :temperature_min, :temperature_max
|
6
6
|
|
7
7
|
def initialize(forecasts, dateLabel)
|
8
|
-
|
9
|
-
|
8
|
+
raise ArgumentError, "dateLabel must be 今日, 明日 or 明後日" unless 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
|
20
|
+
end
|
10
21
|
|
11
22
|
# @return [Boolean] return true if it rains.
|
12
23
|
def rain?
|
@@ -23,33 +34,6 @@ module WeatherReport
|
|
23
34
|
telop =~ /[雨雪霙雹]/ ? true : false
|
24
35
|
end
|
25
36
|
|
26
|
-
# @return [Date] the date
|
27
|
-
def date
|
28
|
-
year, month, day = @forecast["date"].split('-')
|
29
|
-
@date ||= Date.new(year.to_i, month.to_i, day.to_i)
|
30
|
-
end
|
31
|
-
|
32
|
-
# @return [String] the telop
|
33
|
-
def telop
|
34
|
-
@telop ||= @forecast["telop"]
|
35
|
-
end
|
36
|
-
|
37
|
-
# @return [Fixnum] the minimum temperature.
|
38
|
-
# Temperature of today could be nil.
|
39
|
-
def temperature_min
|
40
|
-
min = @forecast["temperature"]["min"]
|
41
|
-
@temperature ||=
|
42
|
-
min ? min["celsius"].to_i : nil
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [Fixnum] the maximum temperature.
|
46
|
-
# Temperature of today could be nil.
|
47
|
-
def temperature_max
|
48
|
-
max = @forecast["temperature"]["max"]
|
49
|
-
@temperature_max ||=
|
50
|
-
max ? max["celsius"].to_i : nil
|
51
|
-
end
|
52
|
-
|
53
37
|
# @return [Hash] return with hash format.
|
54
38
|
def to_h
|
55
39
|
{
|
@@ -64,6 +48,7 @@ module WeatherReport
|
|
64
48
|
|
65
49
|
def forecast(forecasts, dateLabel)
|
66
50
|
forecasts["forecasts"].each {|elem| return elem if elem["dateLabel"] == dateLabel}
|
51
|
+
raise NoForecastError
|
67
52
|
end
|
68
53
|
end
|
69
54
|
end
|
@@ -5,18 +5,17 @@ module WeatherReport
|
|
5
5
|
attr_reader :today, :tomorrow, :day_after_tomorrow
|
6
6
|
|
7
7
|
def initialize(city_id)
|
8
|
-
@uri = URI.parse("
|
8
|
+
@uri = URI.parse("https://weather.tsukumijima.net/api/forecast?city=#{city_id}")
|
9
9
|
end
|
10
10
|
|
11
11
|
# @return [String] the id of given city
|
12
12
|
def self.request_cityid(city_name)
|
13
|
+
raise ArgumentError, "City name must be String." unless city_name.kind_of?(String)
|
13
14
|
proxy = Weather.parse_proxy(ENV["http_proxy"])
|
14
|
-
doc = Nokogiri::XML(open("
|
15
|
+
doc = Nokogiri::XML(URI.open("https://weather.tsukumijima.net/primary_area.xml", :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass]))
|
15
16
|
doc.search("//city[@title='#{city_name}']").attr("id").value
|
16
17
|
rescue NoMethodError
|
17
|
-
raise
|
18
|
-
rescue => e
|
19
|
-
raise WeatherReportError
|
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."
|
20
19
|
end
|
21
20
|
|
22
21
|
def self.parse_proxy(proxy)
|
@@ -27,8 +26,8 @@ module WeatherReport
|
|
27
26
|
host, port = server.split(":")
|
28
27
|
account = raccount.nil? ? "" : raccount.reverse.split(":")
|
29
28
|
user, pass = account
|
30
|
-
|
31
|
-
proxy = OpenStruct.new({
|
29
|
+
|
30
|
+
proxy = OpenStruct.new({
|
32
31
|
"server" => server.empty? ? nil : "http://#{server}",
|
33
32
|
"user" => user.nil? ? "" : user,
|
34
33
|
"pass" => pass.nil? ? "" : pass
|
@@ -75,7 +74,7 @@ module WeatherReport
|
|
75
74
|
def read
|
76
75
|
@response ||= JSON.parse(@uri.read)
|
77
76
|
rescue => e
|
78
|
-
raise
|
77
|
+
raise Error
|
79
78
|
end
|
80
79
|
end
|
81
80
|
end
|
data/sig/day.rbs
ADDED
data/weather-report.gemspec
CHANGED
@@ -1,28 +1,21 @@
|
|
1
|
-
|
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
|
-
|
12
|
-
spec.
|
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 =
|
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_development_dependency "bundler", "~> 1.3"
|
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
|
+
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:
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
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: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.3'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.3'
|
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:
|
@@ -117,9 +19,10 @@ executables:
|
|
117
19
|
extensions: []
|
118
20
|
extra_rdoc_files: []
|
119
21
|
files:
|
120
|
-
- .gitignore
|
121
|
-
- .travis.yml
|
22
|
+
- ".gitignore"
|
23
|
+
- ".travis.yml"
|
122
24
|
- Gemfile
|
25
|
+
- Gemfile.lock
|
123
26
|
- Guardfile
|
124
27
|
- LICENSE.txt
|
125
28
|
- README.md
|
@@ -129,10 +32,7 @@ files:
|
|
129
32
|
- lib/weather-report/day.rb
|
130
33
|
- lib/weather-report/version.rb
|
131
34
|
- lib/weather-report/weather.rb
|
132
|
-
-
|
133
|
-
- test/test_helper.rb
|
134
|
-
- test/test_weather-report.rb
|
135
|
-
- test/test_weather.rb
|
35
|
+
- sig/day.rbs
|
136
36
|
- weather-report.gemspec
|
137
37
|
homepage: https://github.com/zakuni/weather-report
|
138
38
|
licenses:
|
@@ -144,22 +44,17 @@ require_paths:
|
|
144
44
|
- lib
|
145
45
|
required_ruby_version: !ruby/object:Gem::Requirement
|
146
46
|
requirements:
|
147
|
-
- -
|
47
|
+
- - ">="
|
148
48
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
49
|
+
version: 2.3.0
|
150
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
51
|
requirements:
|
152
|
-
- -
|
52
|
+
- - ">="
|
153
53
|
- !ruby/object:Gem::Version
|
154
54
|
version: '0'
|
155
55
|
requirements: []
|
156
|
-
|
157
|
-
rubygems_version: 2.0.3
|
56
|
+
rubygems_version: 3.1.2
|
158
57
|
signing_key:
|
159
58
|
specification_version: 4
|
160
|
-
summary: A Ruby client of
|
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: []
|
data/test/test_day.rb
DELETED
@@ -1,54 +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("http://weather.livedoor.com/forecast/webservice/json/v1?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
|
-
end
|
18
|
-
|
19
|
-
def test_rain?
|
20
|
-
assert_respond_to @day, :rain?
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_snow?
|
24
|
-
assert_respond_to @day, :snow?
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_umbrella?
|
28
|
-
assert_respond_to @day, :umbrella?
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_date
|
32
|
-
assert_respond_to @day, :date
|
33
|
-
assert_instance_of Date, @day.date
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_telop
|
37
|
-
assert_respond_to @day, :telop
|
38
|
-
assert_instance_of String, @day.telop
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_temperature_min
|
42
|
-
assert_respond_to @day, :temperature_min
|
43
|
-
assert [Fixnum, NilClass].include? @day.temperature_min.class
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_temperature_max
|
47
|
-
assert_respond_to @day, :temperature_max
|
48
|
-
assert [Fixnum, NilClass].include? @day.temperature_max.class
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_to_h
|
52
|
-
assert_respond_to @day, :to_h
|
53
|
-
end
|
54
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -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]
|
data/test/test_weather-report.rb
DELETED
@@ -1,11 +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
|
-
end
|
data/test/test_weather.rb
DELETED
@@ -1,58 +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(WeatherReportError) do
|
51
|
-
Weather.request_cityid(nil)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_to_h
|
56
|
-
assert_respond_to @weather, :to_h
|
57
|
-
end
|
58
|
-
end
|