google_holiday_calendar 0.0.2 → 0.1.0
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/.env.example +1 -0
- data/.gitignore +2 -0
- data/.travis.yml +17 -3
- data/CHANGELOG.md +7 -1
- data/README.md +15 -1
- data/google_holiday_calendar.gemspec +4 -3
- data/lib/google_holiday_calendar/calendar.rb +14 -11
- data/lib/google_holiday_calendar/version.rb +1 -1
- data/lib/google_holiday_calendar.rb +1 -1
- data/spec/google_holiday_calendar/calendar_spec.rb +3 -3
- data/spec/spec_helper.rb +7 -3
- data/spec/support/examples/holidays_in_japan_at_jan.rb +1 -3
- metadata +25 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4e1d29ab01f9ca5714f4378aae0d5cbe6c84240
|
4
|
+
data.tar.gz: e6ef5a072140fe6c554a94bd64c25fb255d04888
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 216fee75103099dfcff4032cc910a47097a7e534f5b86f34953badea4e448d6e5e23e0ced9f6f357334518b2464e21c44e2b540f857e89034f955d7e9a46b32d
|
7
|
+
data.tar.gz: 9f17d2eea3c0290c1ec473bf7299e94eaf4fde8a9d05afca48bab200aafb4417940fe388464c3f9be447fde5705888ccfd39def05c5dadd17eafff641d0b00a0
|
data/.env.example
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
GOOGLE_API_KEY=
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,10 +1,24 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
- 2.0
|
4
|
+
- 2.1
|
5
|
+
- 2.2
|
6
|
+
- ruby-head
|
7
|
+
before_script:
|
8
|
+
- export COVERAGE=true
|
9
|
+
script:
|
10
|
+
- bundle exec rspec
|
6
11
|
branches:
|
7
12
|
only:
|
8
13
|
- master
|
14
|
+
env:
|
15
|
+
global:
|
16
|
+
secure: "PUaG7vOmYf3MhO6KJR7kaOeDk+MiP31JCMI6m47z7y+4SGBj0+pxdYK9CY50McGkjjNajXC6RoNJiaVwlQduLS7mM8WKusGKgtnr/APHtZqbVy+KSXdXLvVD/GPaGxb+W7/SlTj5lLAe75hFj48hMWH2g7qDERmbEksEMqXM8CE="
|
9
17
|
notifications:
|
10
18
|
email: false
|
19
|
+
slack:
|
20
|
+
secure: LFMFNHkB88zWrcjwRstw7Ri+pKVndjkz11H8r73GbrJOL76Lt4llVsraYLRrCnx859kRZul4SjbUIlYsRl28Wv2IJmIhvDnK9n5gX4nSbEfjrZGsaMOmJhY8MxazM4757TFEY6ugzwRD3hzWKEK6bIY6nRu5KAFaZhPjDbSaEpA=
|
21
|
+
matrix:
|
22
|
+
allow_failures:
|
23
|
+
- rvm: 2.2
|
24
|
+
- rvm: ruby-head
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## master
|
2
|
-
[full changelog](http://github.com/sue445/google_holiday_calendar/compare/v0.0
|
2
|
+
[full changelog](http://github.com/sue445/google_holiday_calendar/compare/v0.1.0...master)
|
3
|
+
|
4
|
+
## v0.1.0
|
5
|
+
[full changelog](http://github.com/sue445/google_holiday_calendar/compare/v0.0.2...v0.1.0)
|
6
|
+
|
7
|
+
* Use Google Calendar API v3
|
8
|
+
* relax dependency gem version
|
3
9
|
|
4
10
|
## v0.0.2
|
5
11
|
[full changelog](http://github.com/sue445/google_holiday_calendar/compare/v0.0.1...v0.0.2)
|
data/README.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
# GoogleHolidayCalendar
|
1
|
+
# GoogleHolidayCalendar
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/google_holiday_calendar)
|
4
|
+
[](https://travis-ci.org/sue445/google_holiday_calendar)
|
5
|
+
[](https://coveralls.io/r/sue445/google_holiday_calendar)
|
6
|
+
[](https://gemnasium.com/sue445/google_holiday_calendar)
|
7
|
+
[](https://codeclimate.com/github/sue445/google_holiday_calendar)
|
2
8
|
|
3
9
|
Get holidays via Google Calendar.
|
4
10
|
|
@@ -93,6 +99,14 @@ $ google_holiday_calendar --start-date=2014-01-01 --end-date=2014-07-01 --countr
|
|
93
99
|
## More reference
|
94
100
|
http://rubydoc.info/github/sue445/google_holiday_calendar
|
95
101
|
|
102
|
+
## Testing
|
103
|
+
get api key on [API Console](https://code.google.com/apis/console/) and enable Google Calendar API
|
104
|
+
|
105
|
+
```bash
|
106
|
+
cp .env.example .env
|
107
|
+
vi .env
|
108
|
+
```
|
109
|
+
|
96
110
|
## Contributing
|
97
111
|
|
98
112
|
1. Fork it ( http://github.com/sue445/google_holiday_calendar/fork )
|
@@ -20,15 +20,16 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_dependency "activesupport", "
|
23
|
+
spec.add_dependency "activesupport", ">= 4.0.0"
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler", "
|
25
|
+
spec.add_development_dependency "bundler", ">= 1.5"
|
26
26
|
spec.add_development_dependency "rake"
|
27
|
-
spec.add_development_dependency "rspec", "3.
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.1.0"
|
28
28
|
spec.add_development_dependency "rspec-its"
|
29
29
|
spec.add_development_dependency "rspec-collection_matchers"
|
30
30
|
spec.add_development_dependency "delorean"
|
31
31
|
spec.add_development_dependency "yard"
|
32
32
|
spec.add_development_dependency "memoist"
|
33
33
|
spec.add_development_dependency "coveralls"
|
34
|
+
spec.add_development_dependency "dotenv"
|
34
35
|
end
|
@@ -1,14 +1,16 @@
|
|
1
1
|
module GoogleHolidayCalendar
|
2
2
|
require 'open-uri'
|
3
|
+
require 'cgi'
|
3
4
|
|
4
5
|
class Calendar
|
5
6
|
attr_reader :country, :lang
|
6
7
|
|
7
8
|
# @param country [String]
|
8
9
|
# @param lang [String]
|
9
|
-
def initialize(country: "usa", lang: "en")
|
10
|
+
def initialize(country: "usa", lang: "en", api_key: nil)
|
10
11
|
@country = country.downcase
|
11
12
|
@lang = lang.downcase
|
13
|
+
@api_key = api_key
|
12
14
|
end
|
13
15
|
|
14
16
|
# get holidays via google calendar
|
@@ -21,23 +23,24 @@ module GoogleHolidayCalendar
|
|
21
23
|
start_date = Date.today unless start_date
|
22
24
|
end_date = to_date(start_date) + 1.month unless end_date
|
23
25
|
|
24
|
-
|
26
|
+
calendar_id = "#{@lang}.#{@country}#holiday@group.v.calendar.google.com"
|
27
|
+
url = "https://www.googleapis.com/calendar/v3/calendars/#{CGI.escape(calendar_id)}/events?"
|
25
28
|
params = {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
29
|
+
"key" => @api_key,
|
30
|
+
"timeMin" => to_ymd(start_date),
|
31
|
+
"timeMax" => to_ymd(end_date),
|
32
|
+
"maxResults" => limit,
|
30
33
|
}
|
31
34
|
url += params.to_query
|
32
35
|
|
33
36
|
calendar_response = fetch(url)
|
34
37
|
|
35
|
-
entries = calendar_response["
|
38
|
+
entries = calendar_response["items"]
|
36
39
|
return {} unless entries
|
37
40
|
|
38
|
-
holidays = entries.inject({}){ |res,
|
39
|
-
date = Date.parse(
|
40
|
-
title =
|
41
|
+
holidays = entries.inject({}){ |res, item|
|
42
|
+
date = Date.parse(item['start']['date'])
|
43
|
+
title = item["summary"]
|
41
44
|
res[date] =title
|
42
45
|
res
|
43
46
|
}
|
@@ -65,7 +68,7 @@ module GoogleHolidayCalendar
|
|
65
68
|
# @return [String] YYYY-MM-DD
|
66
69
|
def to_ymd(arg)
|
67
70
|
date = to_date(arg)
|
68
|
-
date.strftime("%Y-%m-%d")
|
71
|
+
date.strftime("%Y-%m-%d") + "T00:00:00Z"
|
69
72
|
end
|
70
73
|
|
71
74
|
# @param arg [Date,String]
|
@@ -7,13 +7,13 @@ describe GoogleHolidayCalendar::Calendar do
|
|
7
7
|
let(:end_date) { "2014-01-31" }
|
8
8
|
|
9
9
|
context "Without country and lang" do
|
10
|
-
let(:calendar){ GoogleHolidayCalendar::Calendar.new }
|
10
|
+
let(:calendar){ GoogleHolidayCalendar::Calendar.new(api_key: ENV["GOOGLE_API_KEY"]) }
|
11
11
|
|
12
12
|
its(:count){ should > 0 }
|
13
13
|
end
|
14
14
|
|
15
15
|
context "With country and lang" do
|
16
|
-
let(:calendar){ GoogleHolidayCalendar::Calendar.new(country: country, lang: lang) }
|
16
|
+
let(:calendar){ GoogleHolidayCalendar::Calendar.new(country: country, lang: lang, api_key: ENV["GOOGLE_API_KEY"]) }
|
17
17
|
|
18
18
|
context "When holidays in Japan" do
|
19
19
|
let(:country) { "japanese" }
|
@@ -64,7 +64,7 @@ describe GoogleHolidayCalendar::Calendar do
|
|
64
64
|
describe "#holiday?" do
|
65
65
|
subject{ calendar.holiday?(date) }
|
66
66
|
|
67
|
-
let(:calendar){ GoogleHolidayCalendar::Calendar.new(country: country, lang: lang) }
|
67
|
+
let(:calendar){ GoogleHolidayCalendar::Calendar.new(country: country, lang: lang, api_key: ENV["GOOGLE_API_KEY"]) }
|
68
68
|
let(:country) { "japanese" }
|
69
69
|
let(:lang) { "ja" }
|
70
70
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
if ENV["COVERAGE"]
|
2
|
+
require 'coveralls'
|
3
|
+
Coveralls.wear!
|
4
|
+
end
|
5
|
+
|
1
6
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
7
|
require 'google_holiday_calendar'
|
3
8
|
|
@@ -6,9 +11,8 @@ require 'rspec/its'
|
|
6
11
|
require 'rspec/collection_matchers'
|
7
12
|
require 'delorean'
|
8
13
|
require 'memoist'
|
9
|
-
|
10
|
-
|
11
|
-
Coveralls.wear!
|
14
|
+
require 'dotenv'
|
15
|
+
Dotenv.load
|
12
16
|
|
13
17
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
14
18
|
# in spec/support/ and its subdirectories.
|
@@ -1,7 +1,5 @@
|
|
1
1
|
shared_examples :holidays_in_japan_at_jan do
|
2
|
-
its(:count){ should ==
|
2
|
+
its(:count){ should == 2 }
|
3
3
|
it{ should include(date("2014-01-01") => "元日") }
|
4
|
-
it{ should include(date("2014-01-02") => "銀行休業日") }
|
5
|
-
it{ should include(date("2014-01-03") => "銀行休業日") }
|
6
4
|
it{ should include(date("2014-01-13") => "成人の日") }
|
7
5
|
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_holiday_calendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sue445
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 4.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 4.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.1.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec-its
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: dotenv
|
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'
|
153
167
|
description: Get holidays via Google Calendar.
|
154
168
|
email:
|
155
169
|
- sue445@sue445.net
|
@@ -159,6 +173,7 @@ extensions: []
|
|
159
173
|
extra_rdoc_files: []
|
160
174
|
files:
|
161
175
|
- ".coveralls.yml"
|
176
|
+
- ".env.example"
|
162
177
|
- ".gitignore"
|
163
178
|
- ".rspec"
|
164
179
|
- ".travis.yml"
|