almanack 1.1.3 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +3 -1
- data.tar.gz.sig +0 -0
- data/.travis.yml +4 -4
- data/Gemfile.lock +41 -35
- data/README.md +10 -1
- data/Rakefile +4 -1
- data/almanack.gemspec +1 -0
- data/app.json +41 -0
- data/checksums/almanack-1.1.3.gem.sha256 +1 -0
- data/checksums/almanack-1.1.3.gem.sha512 +1 -0
- data/lib/almanack/event_source/meetup_group.rb +12 -1
- data/lib/almanack/themes/legacy/views/error.erb +2 -0
- data/lib/almanack/themes/starter/views/error.erb +2 -0
- data/lib/almanack/version.rb +1 -1
- metadata +19 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd1677c0cdd5da474a3d19e6e2b883e023a7723f3ccea179ac2098cb75773569
|
4
|
+
data.tar.gz: 4c9e72b26356e55d3a7e8cd0ada49264dc79762066eaf2b119343ba6bc2db1d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1887ce7f38753cabeca433265b85d5e455b2e48321db6d8625f94c1d266b7990cd8041bf3445baf5a0424e5f3ade8366db50eb4b55a3c2fceeb3a43d84b9092
|
7
|
+
data.tar.gz: c1cc81a1d3bbe45aab4073cee57695fba7658cd6ed24efc072b1f507c9fd0d7a5cbdea0b13ae3dc0f21412dd3ba7179bab2d054cefe51ed7c64f028ac744925d
|
checksums.yaml.gz.sig
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
|
1
|
+
�n�e6��ɳ(v��o�
|
2
|
+
E(����8��x���G����+�S��p����}Q�4��r��A.\a ����juqXOwb��
|
3
|
+
��9�������훟�B��ODI���S����\�i������ԇު��T}�4����2��)h�����1.���3C�¤�ܼ�9K��A��-&\��,�8T%Q�M�̑�-E�G�d�>�Ѫ�З��^���8�@5&j5��R�wS]��Z����#���y,�!�!�`O���d63X�z`�H�A:ŋ�����z��&�@N��`-�]iD�iIc�B�'<q�8�.�a�#�Pn� K��*qˤ�A�Zh��4���y#uo�:�0���g4��4Ԛ�-]��/L��G�
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.travis.yml
CHANGED
@@ -2,10 +2,10 @@ sudo: false
|
|
2
2
|
language: ruby
|
3
3
|
cache: bundler
|
4
4
|
rvm:
|
5
|
-
- 2.
|
6
|
-
- 2.5
|
7
|
-
- 2.
|
8
|
-
before_install: gem install bundler -v 2.0.
|
5
|
+
- 2.5.7
|
6
|
+
- 2.6.5
|
7
|
+
- 2.7.0-preview2
|
8
|
+
before_install: gem install bundler -v 2.0.2
|
9
9
|
addons:
|
10
10
|
code_climate:
|
11
11
|
repo_token:
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
almanack (1.1.
|
4
|
+
almanack (1.1.5)
|
5
5
|
activesupport
|
6
6
|
addressable
|
7
7
|
faraday
|
@@ -16,43 +16,47 @@ PATH
|
|
16
16
|
GEM
|
17
17
|
remote: https://rubygems.org/
|
18
18
|
specs:
|
19
|
-
activesupport (
|
19
|
+
activesupport (6.0.1)
|
20
20
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
21
21
|
i18n (>= 0.7, < 2)
|
22
22
|
minitest (~> 5.1)
|
23
23
|
tzinfo (~> 1.1)
|
24
|
-
|
25
|
-
|
24
|
+
zeitwerk (~> 2.2)
|
25
|
+
addressable (2.7.0)
|
26
|
+
public_suffix (>= 2.0.2, < 5.0)
|
26
27
|
backports (3.15.0)
|
28
|
+
bundler-audit (0.6.1)
|
29
|
+
bundler (>= 1.2.0, < 3)
|
30
|
+
thor (~> 0.18)
|
27
31
|
coderay (1.1.2)
|
28
32
|
concurrent-ruby (1.1.5)
|
29
33
|
crack (0.4.3)
|
30
34
|
safe_yaml (~> 1.0.0)
|
31
35
|
diff-lcs (1.3)
|
32
|
-
faraday (0.
|
36
|
+
faraday (0.17.0)
|
33
37
|
multipart-post (>= 1.2, < 3)
|
34
38
|
faraday_middleware (0.13.1)
|
35
39
|
faraday (>= 0.7.4, < 1.0)
|
36
|
-
ffi (1.11.
|
37
|
-
hashdiff (0.
|
38
|
-
i18n (1.
|
40
|
+
ffi (1.11.2)
|
41
|
+
hashdiff (1.0.0)
|
42
|
+
i18n (1.7.0)
|
39
43
|
concurrent-ruby (~> 1.0)
|
40
44
|
method_source (0.9.2)
|
41
45
|
mini_portile2 (2.4.0)
|
42
|
-
minitest (5.
|
43
|
-
multi_json (1.
|
46
|
+
minitest (5.13.0)
|
47
|
+
multi_json (1.14.1)
|
44
48
|
multipart-post (2.1.1)
|
45
49
|
mustermann (1.0.3)
|
46
|
-
nokogiri (1.10.
|
50
|
+
nokogiri (1.10.5)
|
47
51
|
mini_portile2 (~> 2.4.0)
|
48
52
|
pry (0.12.2)
|
49
53
|
coderay (~> 1.1.0)
|
50
54
|
method_source (~> 0.9.0)
|
51
|
-
public_suffix (
|
55
|
+
public_suffix (4.0.1)
|
52
56
|
rack (2.0.7)
|
53
57
|
rack-contrib (2.1.0)
|
54
58
|
rack (~> 2.0)
|
55
|
-
rack-protection (2.0.
|
59
|
+
rack-protection (2.0.7)
|
56
60
|
rack
|
57
61
|
rack-test (1.1.0)
|
58
62
|
rack (>= 1.0, < 3)
|
@@ -61,48 +65,49 @@ GEM
|
|
61
65
|
rb-inotify (0.10.0)
|
62
66
|
ffi (~> 1.0)
|
63
67
|
ri_cal (0.8.8)
|
64
|
-
rspec (3.
|
65
|
-
rspec-core (~> 3.
|
66
|
-
rspec-expectations (~> 3.
|
67
|
-
rspec-mocks (~> 3.
|
68
|
-
rspec-core (3.
|
69
|
-
rspec-support (~> 3.
|
70
|
-
rspec-expectations (3.
|
68
|
+
rspec (3.9.0)
|
69
|
+
rspec-core (~> 3.9.0)
|
70
|
+
rspec-expectations (~> 3.9.0)
|
71
|
+
rspec-mocks (~> 3.9.0)
|
72
|
+
rspec-core (3.9.0)
|
73
|
+
rspec-support (~> 3.9.0)
|
74
|
+
rspec-expectations (3.9.0)
|
71
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
72
|
-
rspec-support (~> 3.
|
73
|
-
rspec-mocks (3.
|
76
|
+
rspec-support (~> 3.9.0)
|
77
|
+
rspec-mocks (3.9.0)
|
74
78
|
diff-lcs (>= 1.2.0, < 2.0)
|
75
|
-
rspec-support (~> 3.
|
76
|
-
rspec-support (3.
|
79
|
+
rspec-support (~> 3.9.0)
|
80
|
+
rspec-support (3.9.0)
|
77
81
|
safe_yaml (1.0.5)
|
78
82
|
sass (3.7.4)
|
79
83
|
sass-listen (~> 4.0.0)
|
80
84
|
sass-listen (4.0.0)
|
81
85
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
82
86
|
rb-inotify (~> 0.9, >= 0.9.7)
|
83
|
-
sinatra (2.0.
|
87
|
+
sinatra (2.0.7)
|
84
88
|
mustermann (~> 1.0)
|
85
89
|
rack (~> 2.0)
|
86
|
-
rack-protection (= 2.0.
|
90
|
+
rack-protection (= 2.0.7)
|
87
91
|
tilt (~> 2.0)
|
88
|
-
sinatra-contrib (2.0.
|
92
|
+
sinatra-contrib (2.0.7)
|
89
93
|
backports (>= 2.8.2)
|
90
94
|
multi_json
|
91
95
|
mustermann (~> 1.0)
|
92
|
-
rack-protection (= 2.0.
|
93
|
-
sinatra (= 2.0.
|
94
|
-
tilt (
|
96
|
+
rack-protection (= 2.0.7)
|
97
|
+
sinatra (= 2.0.7)
|
98
|
+
tilt (~> 2.0)
|
95
99
|
thor (0.20.3)
|
96
100
|
thread_safe (0.3.6)
|
97
|
-
tilt (2.0.
|
101
|
+
tilt (2.0.10)
|
98
102
|
timecop (0.9.1)
|
99
103
|
tzinfo (1.2.5)
|
100
104
|
thread_safe (~> 0.1)
|
101
|
-
vcr (
|
102
|
-
webmock (3.
|
105
|
+
vcr (5.0.0)
|
106
|
+
webmock (3.7.6)
|
103
107
|
addressable (>= 2.3.6)
|
104
108
|
crack (>= 0.3.2)
|
105
|
-
hashdiff
|
109
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
110
|
+
zeitwerk (2.2.1)
|
106
111
|
|
107
112
|
PLATFORMS
|
108
113
|
ruby
|
@@ -110,6 +115,7 @@ PLATFORMS
|
|
110
115
|
DEPENDENCIES
|
111
116
|
almanack!
|
112
117
|
bundler (~> 2.0)
|
118
|
+
bundler-audit
|
113
119
|
nokogiri
|
114
120
|
pry
|
115
121
|
rack-test
|
@@ -120,4 +126,4 @@ DEPENDENCIES
|
|
120
126
|
webmock
|
121
127
|
|
122
128
|
BUNDLED WITH
|
123
|
-
2.0.
|
129
|
+
2.0.2
|
data/README.md
CHANGED
@@ -2,12 +2,13 @@
|
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/Aupajo/almanack.svg)](https://travis-ci.org/Aupajo/almanack)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/almanack.svg)](http://badge.fury.io/rb/almanack)
|
5
|
+
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Aupajo/almanack/tree/heroku-button)
|
5
6
|
|
6
7
|
A calendar that combines events from different sources (such as Google Calendar, Meetup.com, and iCal feeds), and can be hosted for free on [Heroku](http://heroku.com).
|
7
8
|
|
8
9
|
![Sinatra GCal example](http://i.imgur.com/odgyR.png)
|
9
10
|
|
10
|
-
See a demo running at [http://
|
11
|
+
See a demo running at [http://chch-events.herokuapp.com/](http://chch-events.herokuapp.com/)
|
11
12
|
|
12
13
|
## Features
|
13
14
|
|
@@ -21,6 +22,14 @@ See a demo running at [http://christchurch.events.geek.nz](http://christchurch.e
|
|
21
22
|
* Rack-compatible (can be mounted inside a Rails app if needed)
|
22
23
|
* Produces iCal feed for smartphone and desktop calendar apps to subscribe to
|
23
24
|
|
25
|
+
## Simple setup
|
26
|
+
|
27
|
+
This option can host your calendar for free light use.
|
28
|
+
|
29
|
+
[Sign up for a free Heroku account](https://heroku.com) and click the following button:
|
30
|
+
|
31
|
+
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Aupajo/almanack/tree/heroku-button)
|
32
|
+
|
24
33
|
## Video tutorial
|
25
34
|
|
26
35
|
[![View on YouTube](http://i.imgur.com/4ifJAXD.jpg)](http://youtu.be/0tUcWHE0Zh0)
|
data/Rakefile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require "bundler/audit/task"
|
2
3
|
require "rspec/core/rake_task"
|
3
4
|
|
5
|
+
Bundler::Audit::Task.new
|
6
|
+
|
4
7
|
RSpec::Core::RakeTask.new(:spec)
|
5
8
|
|
6
|
-
task :default => :spec
|
9
|
+
task :default => ['bundle:audit', :spec]
|
7
10
|
|
8
11
|
task :checksum do
|
9
12
|
require 'digest/sha2'
|
data/almanack.gemspec
CHANGED
data/app.json
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
{
|
2
|
+
"name": "Almanack",
|
3
|
+
"description": "Combine iCal, Google Calendar, and Meetup.com events into a single calendar with a public website and calendar subscription feed.",
|
4
|
+
"repository": "https://github.com/Aupajo/almanack",
|
5
|
+
"keywords": ["calendar", "events", "meetup", "gcal" , "ical", "web", "feed", "rss"],
|
6
|
+
"buildpacks": [
|
7
|
+
{ "url": "heroku/ruby" }
|
8
|
+
],
|
9
|
+
"env": {
|
10
|
+
"CALENDAR_NAME": {
|
11
|
+
"description": "The name of your calendar.",
|
12
|
+
"value": "My Calendar",
|
13
|
+
"required": true
|
14
|
+
},
|
15
|
+
"TZ": {
|
16
|
+
"description": "Which time zone to display the calendar events in, such as `Pacific/Auckland`. See a full list in the “TZ database name” field at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones",
|
17
|
+
"value": "UTC"
|
18
|
+
},
|
19
|
+
"ICAL_FEEDS": {
|
20
|
+
"description": "An optional list of iCal feed URLs separated by spaces. For Google Calendars, look for the “address in iCal format” URLs in the calendar's settings.",
|
21
|
+
"required": false
|
22
|
+
},
|
23
|
+
"MEETUP_COM_GROUPS": {
|
24
|
+
"description": "An optional list of Meetup.com groups to subscribe to, separated by spaces. A group can be the full URL (e.g. `https://www.meetup.com/Christchurch-Ruby-Group/`) or the URL slug (e.g. `Christchurch-Ruby-Group`). Requires MEETUP_COM_API_KEYS also be set.",
|
25
|
+
"required": false
|
26
|
+
},
|
27
|
+
"MEETUP_COM_API_KEYS": {
|
28
|
+
"description": "If retrieving events from Meetup.com, you need to specify one or more API keys to use. You can find your API key at https://secure.meetup.com/meetup_api/key. If you have a lot of groups, use multiple API keys to avoid hitting API request limits separated by spaces.",
|
29
|
+
"required": false
|
30
|
+
},
|
31
|
+
"CACHE_DURATION_IN_SECONDS": {
|
32
|
+
"description": "How long to keep calendar events cached for. Set to `0` to always show an up-to-date calendar, but be wary of API request limits when using Meetup.com. Default is 15 minutes.",
|
33
|
+
"value": "900"
|
34
|
+
},
|
35
|
+
"DAYS_LOOKAHEAD": {
|
36
|
+
"description": "How many days of events to display on the calendar",
|
37
|
+
"value": "30",
|
38
|
+
"required": true
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
a387719ce45e5b0fc859110f0f73baf66e24b8b2c38f30d444448c57115ce6f8
|
@@ -0,0 +1 @@
|
|
1
|
+
dccd4fbe67f011c1272024f5a82f00b96b84766b7c48af41dc28c19857b053c8ef5ef72622aef194ef2ea78dfef3af956cf54398ea55ff4448d3691c5c6b06ad
|
@@ -2,6 +2,7 @@ module Almanack
|
|
2
2
|
module EventSource
|
3
3
|
class MeetupGroup
|
4
4
|
def initialize(options = {})
|
5
|
+
warn "Meetup have disabled support for API keys. Read more at https://github.com/Aupajo/almanack/issues/36"
|
5
6
|
@request_options = options
|
6
7
|
@group_properties = {}
|
7
8
|
end
|
@@ -108,11 +109,21 @@ module Almanack
|
|
108
109
|
data = JSON.parse(response.body)
|
109
110
|
|
110
111
|
if data['problem']
|
111
|
-
raise MeetupAPIError, data
|
112
|
+
raise MeetupAPIError, error_message_from(data)
|
112
113
|
end
|
113
114
|
|
114
115
|
data
|
115
116
|
end
|
117
|
+
|
118
|
+
def error_message_from(data)
|
119
|
+
message = [data['problem'], data['details']].compact.join(' - ')
|
120
|
+
|
121
|
+
if message.include?('not authorized')
|
122
|
+
message << ' ⚠️ See https://github.com/Aupajo/almanack/issues/36 for more details'
|
123
|
+
end
|
124
|
+
|
125
|
+
message
|
126
|
+
end
|
116
127
|
end
|
117
128
|
end
|
118
129
|
end
|
data/lib/almanack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: almanack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Nicholls
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
dZpUW6Gfv2VtOtiN0Q3PjLK+TRjHtqYBjbxa771Msax3xs40e2cSVU/dO+OY5NmR
|
35
35
|
a61dVmZ1PIJiY+jyzJSb8ohHVx4=
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2019-
|
37
|
+
date: 2019-11-22 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: sinatra
|
@@ -302,6 +302,20 @@ dependencies:
|
|
302
302
|
- - ">="
|
303
303
|
- !ruby/object:Gem::Version
|
304
304
|
version: '0'
|
305
|
+
- !ruby/object:Gem::Dependency
|
306
|
+
name: bundler-audit
|
307
|
+
requirement: !ruby/object:Gem::Requirement
|
308
|
+
requirements:
|
309
|
+
- - ">="
|
310
|
+
- !ruby/object:Gem::Version
|
311
|
+
version: '0'
|
312
|
+
type: :development
|
313
|
+
prerelease: false
|
314
|
+
version_requirements: !ruby/object:Gem::Requirement
|
315
|
+
requirements:
|
316
|
+
- - ">="
|
317
|
+
- !ruby/object:Gem::Version
|
318
|
+
version: '0'
|
305
319
|
description:
|
306
320
|
email:
|
307
321
|
- aupajo@gmail.com
|
@@ -320,6 +334,7 @@ files:
|
|
320
334
|
- README.md
|
321
335
|
- Rakefile
|
322
336
|
- almanack.gemspec
|
337
|
+
- app.json
|
323
338
|
- bin/console
|
324
339
|
- bin/setup
|
325
340
|
- bin/test
|
@@ -328,6 +343,8 @@ files:
|
|
328
343
|
- checksums/almanack-1.1.1.gem.sha512
|
329
344
|
- checksums/almanack-1.1.2.gem.sha256
|
330
345
|
- checksums/almanack-1.1.2.gem.sha512
|
346
|
+
- checksums/almanack-1.1.3.gem.sha256
|
347
|
+
- checksums/almanack-1.1.3.gem.sha512
|
331
348
|
- checksums/almanack-1.1.3.rc1.gem.sha256
|
332
349
|
- checksums/almanack-1.1.3.rc1.gem.sha512
|
333
350
|
- example.ru
|
metadata.gz.sig
CHANGED
Binary file
|