apple_system_status 0.1.0.beta2 → 0.1.0.beta3
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 +4 -4
- data/.travis.yml +0 -2
- data/.yardopts +2 -0
- data/README.md +58 -6
- data/apple_system_status.gemspec +3 -1
- data/lib/apple_system_status.rb +2 -2
- data/lib/apple_system_status/cli.rb +7 -3
- data/lib/apple_system_status/crawler.rb +25 -9
- data/lib/apple_system_status/version.rb +1 -1
- metadata +37 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae7c1bc4d64eafd171c4df528eb028503d0bbcb0
|
4
|
+
data.tar.gz: e698795a06cc3d33a780127d3b7694237d590d7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 974279679d2a8f7c5d4d007bd30bbde61e004228ceda0d2e96c21eecf94a2110e3a7612aee4fef8a76a5b678333383dc851cf8aeb8f14e81f2c2a9ae29aeab3c
|
7
|
+
data.tar.gz: 4bf9c7f3215565003d2f2b5394a6002c08985fb8327fd8d5f7461a234d754fea921532b3fc83467584e497013f64df6c88635a74d4b46caa91bf5d34fc0ef2f7
|
data/.travis.yml
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.0
|
4
3
|
- 2.1
|
5
4
|
- 2.2
|
6
5
|
- ruby-head
|
@@ -18,7 +17,6 @@ notifications:
|
|
18
17
|
secure: wPazrrt03q4/4YEWTGejm2yB36hROtpeJKSojv4cE1gRQarQceyMZdOZU4gvJ7DP5ehGSikp+PvdhUj8ZGmUoLcaQQu89eCxa5BGf3sofYD2EOZJe33w+di+L++41/cFp6XJ9XRPxbmVjpmPzl28yq2nfzgdI90qhztcswojGyT3Pkj0STB4qu6T+Kmvd5o4vlWUsZlKiv20sAav5/kL86/K4gwakmpyxPYMafG4WcVGbXoHovOlwdHXdml3Ldfuq9IQ35tu0xJ23o6RoPHl38klOgQQj4k7vbtowWmE5UWZFzWkPpH9GDYtS3ML4yCcM7QLj8nEMVWj+QlTsICmKgKfvSpcs9jQtLQEykDS/H43dTu3gyLuGPcbKbR08cXxkOq6lAAuVV7avNkJb5yJV8Nj+1PWksbBbTNwURamjogRTejxX1dTTUsTQITrrCJyKCOM8LvigKTBmpkEiBR6wDZqZoAx6HXEu0O8G9XpT7aI3pJ85/RCxQdYDe193olcg25TQNjlrSaFl6M1VCMB3jzNcCHZkmiM9KnTRjTMSn/5FUxzAnGeaHvxff6wMffcPKS3E/j+2sXkdpsL1Kwtj6b7ejpL/Pbn6P926iWx8mUmH0xC04M8nQgDE1aorMuqHSSH0EPUUMGBdOPvXOjR2CEtEYgqH/ymDPsT/dUub1M=
|
19
18
|
matrix:
|
20
19
|
allow_failures:
|
21
|
-
- rvm: 2.0
|
22
20
|
- rvm: ruby-head
|
23
21
|
sudo: false
|
24
22
|
cache: bundler
|
data/.yardopts
ADDED
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# AppleSystemStatus
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
[Apple System Status](https://www.apple.com/support/systemstatus/) scraping library
|
6
4
|
|
7
5
|
[](https://travis-ci.org/sue445/apple_system_status)
|
8
6
|
[](https://codeclimate.com/github/sue445/apple_system_status)
|
@@ -10,6 +8,10 @@ TODO: Delete this and the text above, and describe your gem
|
|
10
8
|
[](https://coveralls.io/github/sue445/apple_system_status?branch=master)
|
11
9
|
[](https://gemnasium.com/sue445/apple_system_status)
|
12
10
|
|
11
|
+
## Requirements
|
12
|
+
* Ruby 2.1+
|
13
|
+
* [Phantomjs](http://phantomjs.org/)
|
14
|
+
|
13
15
|
## Installation
|
14
16
|
|
15
17
|
Add this line to your application's Gemfile:
|
@@ -26,9 +28,59 @@ Or install it yourself as:
|
|
26
28
|
|
27
29
|
$ gem install apple_system_status
|
28
30
|
|
29
|
-
## Usage
|
31
|
+
## Usage (via. ruby)
|
32
|
+
```ruby
|
33
|
+
crawler = AppleSystemStatus::Crawler.new
|
34
|
+
|
35
|
+
# English
|
36
|
+
pp crawler.perform
|
37
|
+
|
38
|
+
{:title=>"System Status as of 12:51 AM JST",
|
39
|
+
:services=>
|
40
|
+
[{:title=>"App Store",
|
41
|
+
:description=>"No Issues: App Store",
|
42
|
+
:status=>"allgood"},
|
43
|
+
{:title=>"iCloud Account & Sign In",
|
44
|
+
:description=>"No Issues: iCloud Account & Sign In",
|
45
|
+
:status=>"allgood"},
|
46
|
+
# ...
|
47
|
+
]}
|
48
|
+
|
49
|
+
# Japanese
|
50
|
+
pp crawler.perform("jp")
|
51
|
+
|
52
|
+
{:title=>"00:53 JST 時点のシステム状況",
|
53
|
+
:services=>
|
54
|
+
[{:title=>"App Store", :description=>"問題なし: App Store", :status=>"allgood"},
|
55
|
+
{:title=>"iCloud ストレージアップグレード",
|
56
|
+
:description=>"問題なし: iCloud ストレージアップグレード",
|
57
|
+
:status=>"allgood"},
|
58
|
+
{:title=>"iTunes Store",
|
59
|
+
:description=>"問題なし: iTunes Store",
|
60
|
+
:status=>"allgood"},
|
61
|
+
# ...
|
62
|
+
]}
|
63
|
+
```
|
30
64
|
|
31
|
-
|
65
|
+
## Usage (via. shell)
|
66
|
+
```sh
|
67
|
+
$ apple_system_status help
|
68
|
+
Commands:
|
69
|
+
apple_system_status fetch # Fetch apple system status
|
70
|
+
apple_system_status help [COMMAND] # Describe available commands or one specific command
|
71
|
+
apple_system_status version # Show apple_system_status version
|
72
|
+
|
73
|
+
$ apple_system_status help fetch
|
74
|
+
Usage:
|
75
|
+
apple_system_status fetch
|
76
|
+
|
77
|
+
Options:
|
78
|
+
[--country=COUNTRY] # country code. (ex. jp, ca, fr)
|
79
|
+
# Default: us
|
80
|
+
[--title=TITLE] # If specified, narrow the service title
|
81
|
+
[--format=FORMAT] # output format. (ex. plain, json)
|
82
|
+
# Default: plain
|
83
|
+
```
|
32
84
|
|
33
85
|
## Development
|
34
86
|
|
@@ -38,7 +90,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
38
90
|
|
39
91
|
## Contributing
|
40
92
|
|
41
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
93
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/sue445/apple_system_status.
|
42
94
|
|
43
95
|
|
44
96
|
## License
|
data/apple_system_status.gemspec
CHANGED
@@ -27,15 +27,17 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
|
+
spec.add_dependency "activesupport"
|
30
31
|
spec.add_dependency "capybara"
|
31
32
|
spec.add_dependency "poltergeist"
|
32
33
|
spec.add_dependency "thor"
|
33
34
|
|
34
|
-
spec.add_development_dependency "activesupport"
|
35
35
|
spec.add_development_dependency "bundler", "~> 1.10"
|
36
36
|
spec.add_development_dependency "codeclimate-test-reporter"
|
37
37
|
spec.add_development_dependency "coveralls"
|
38
38
|
spec.add_development_dependency "pry-byebug"
|
39
39
|
spec.add_development_dependency "rake", "~> 10.0"
|
40
40
|
spec.add_development_dependency "rspec"
|
41
|
+
spec.add_development_dependency "rspec-parameterized"
|
42
|
+
spec.add_development_dependency "yard"
|
41
43
|
end
|
data/lib/apple_system_status.rb
CHANGED
@@ -6,8 +6,8 @@ module AppleSystemStatus
|
|
6
6
|
case format
|
7
7
|
when "plain"
|
8
8
|
str = "#{hash[:title]}\n"
|
9
|
-
hash[:
|
10
|
-
str << "#{
|
9
|
+
hash[:services].each do |service|
|
10
|
+
str << "#{service[:title]},#{service[:status]},#{service[:description]}\n"
|
11
11
|
end
|
12
12
|
str
|
13
13
|
|
@@ -4,10 +4,14 @@ require "apple_system_status"
|
|
4
4
|
module AppleSystemStatus
|
5
5
|
class CLI < Thor
|
6
6
|
desc "fetch", "Fetch apple system status"
|
7
|
-
option :country, desc: "country code. (ex. jp, ca, fr)"
|
8
|
-
option :
|
7
|
+
option :country, desc: "country code. (ex. jp, ca, fr)", default: "us"
|
8
|
+
option :title, desc: "If specified, narrow the service title"
|
9
|
+
option :format, desc: "output format. (ex. plain, json)", default: "plain"
|
9
10
|
def fetch
|
10
|
-
response = AppleSystemStatus::Crawler.new.perform(
|
11
|
+
response = AppleSystemStatus::Crawler.new.perform(
|
12
|
+
country: options[:country],
|
13
|
+
title: options[:title],
|
14
|
+
)
|
11
15
|
puts AppleSystemStatus.format_response(response, options[:format])
|
12
16
|
end
|
13
17
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module AppleSystemStatus
|
2
2
|
require "capybara"
|
3
3
|
require 'capybara/poltergeist'
|
4
|
+
require "active_support/core_ext/object/blank"
|
4
5
|
|
5
6
|
class Crawler
|
6
7
|
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36"
|
@@ -13,7 +14,18 @@ module AppleSystemStatus
|
|
13
14
|
@session.driver.headers = { "User-Agent" => USER_AGENT }
|
14
15
|
end
|
15
16
|
|
16
|
-
|
17
|
+
# crawl apple system status page
|
18
|
+
# @param country [String] country code. (ex. jp, ca, fr. default. us)
|
19
|
+
# @param title [String] If specified, narrow the service title
|
20
|
+
# @return [Hash]
|
21
|
+
# @example response format
|
22
|
+
# {
|
23
|
+
# title: ,
|
24
|
+
# services: [
|
25
|
+
# { title: , description: , status: }
|
26
|
+
# ]
|
27
|
+
# }
|
28
|
+
def perform(country: nil, title: nil)
|
17
29
|
@session.visit(apple_url(country))
|
18
30
|
|
19
31
|
title_parts = [
|
@@ -24,12 +36,12 @@ module AppleSystemStatus
|
|
24
36
|
|
25
37
|
response = {
|
26
38
|
title: title_parts.join(" ").strip,
|
27
|
-
|
39
|
+
services: [],
|
28
40
|
}
|
29
41
|
|
30
|
-
@session.all("#dashboard td").each_with_object(response[:
|
42
|
+
@session.all("#dashboard td").each_with_object(response[:services]) do |td, services|
|
31
43
|
begin
|
32
|
-
|
44
|
+
services << {
|
33
45
|
title: td.find("p[role='text']").text,
|
34
46
|
description: td.find("p[role='text']")["aria-label"],
|
35
47
|
status: td.find("span")["class"],
|
@@ -39,16 +51,20 @@ module AppleSystemStatus
|
|
39
51
|
end
|
40
52
|
end
|
41
53
|
|
54
|
+
unless title.blank?
|
55
|
+
response[:services].select! { |service| service[:title] == title }
|
56
|
+
end
|
57
|
+
|
58
|
+
response[:services].sort_by! { |service| service[:title] }
|
59
|
+
|
42
60
|
response
|
43
61
|
end
|
44
62
|
|
45
|
-
private
|
46
|
-
|
47
63
|
def apple_url(country)
|
48
|
-
if country
|
49
|
-
"https://www.apple.com/#{country}/support/systemstatus/"
|
50
|
-
else
|
64
|
+
if country.blank? || country == "us"
|
51
65
|
"https://www.apple.com/support/systemstatus/"
|
66
|
+
else
|
67
|
+
"https://www.apple.com/#{country}/support/systemstatus/"
|
52
68
|
end
|
53
69
|
end
|
54
70
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apple_system_status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sue445
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: capybara
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: poltergeist
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,13 +53,13 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: thor
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
-
type: :
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
@@ -150,6 +150,34 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec-parameterized
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: yard
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
153
181
|
description: Apple System Status scraping library
|
154
182
|
email:
|
155
183
|
- sue445@sue445.net
|
@@ -162,6 +190,7 @@ files:
|
|
162
190
|
- ".gitignore"
|
163
191
|
- ".rspec"
|
164
192
|
- ".travis.yml"
|
193
|
+
- ".yardopts"
|
165
194
|
- Gemfile
|
166
195
|
- LICENSE.txt
|
167
196
|
- README.md
|
@@ -200,3 +229,4 @@ signing_key:
|
|
200
229
|
specification_version: 4
|
201
230
|
summary: Apple System Status scraping library
|
202
231
|
test_files: []
|
232
|
+
has_rdoc:
|