meetalendar 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.rubocop.yml +96 -0
  4. data/.travis.yml +21 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +20 -0
  7. data/README.md +141 -0
  8. data/Rakefile +5 -0
  9. data/app/controllers/comfy/admin/meetalendar/meetups_controller.rb +154 -0
  10. data/app/models/comfy/admin/meetalendar/auth_credential.rb +22 -0
  11. data/app/models/comfy/admin/meetalendar/meetup_group.rb +3 -0
  12. data/app/models/comfy/admin/meetalendar/meetups_calendar_syncer.rb +178 -0
  13. data/app/models/comfy/admin/meetalendar/meetups_controller_logic.rb +77 -0
  14. data/app/models/google/auth/store/db_token_store.rb +37 -0
  15. data/app/views/comfy/admin/meetalendar/meetups/_authorize_calendar.slim +6 -0
  16. data/app/views/comfy/admin/meetalendar/meetups/_edit.slim +6 -0
  17. data/app/views/comfy/admin/meetalendar/meetups/_search_mask.slim +19 -0
  18. data/app/views/comfy/admin/meetalendar/meetups/_search_result.slim +57 -0
  19. data/app/views/comfy/admin/meetalendar/meetups/authorize_calendar.slim +6 -0
  20. data/app/views/comfy/admin/meetalendar/meetups/edit.slim +11 -0
  21. data/app/views/comfy/admin/meetalendar/meetups/index.slim +26 -0
  22. data/app/views/comfy/admin/meetalendar/meetups/search_mask.slim +5 -0
  23. data/app/views/comfy/admin/meetalendar/meetups/search_result.slim +5 -0
  24. data/app/views/comfy/admin/meetalendar/partials/_navigation.html.haml +9 -0
  25. data/app/views/layouts/comfy/meetalendar/application.html.erb +28 -0
  26. data/bin/bundle +3 -0
  27. data/bin/rails +4 -0
  28. data/bin/rake +4 -0
  29. data/bin/setup +36 -0
  30. data/bin/update +31 -0
  31. data/bin/yarn +11 -0
  32. data/comfy_meetalendar.gemspec +44 -0
  33. data/config.ru +6 -0
  34. data/config/application.rb +38 -0
  35. data/config/boot.rb +7 -0
  36. data/config/database.yml +11 -0
  37. data/config/environment.rb +7 -0
  38. data/config/environments/development.rb +64 -0
  39. data/config/environments/test.rb +51 -0
  40. data/config/initializers/meetalendar.rb +23 -0
  41. data/config/locales/en.yml +33 -0
  42. data/config/meetalendar_routes.rb +3 -0
  43. data/config/storage.yml +35 -0
  44. data/db/migrate/00_create_cms.rb +142 -0
  45. data/db/migrate/01_create_meetalendar_meetup_groups.rb +13 -0
  46. data/db/migrate/02_create_meetalendar_auth_credentials.rb +16 -0
  47. data/lib/generators/comfy/meetalendar/README +5 -0
  48. data/lib/generators/comfy/meetalendar/meetalendar_generator.rb +61 -0
  49. data/lib/meetalendar.rb +29 -0
  50. data/lib/meetalendar/configuration.rb +24 -0
  51. data/lib/meetalendar/engine.rb +32 -0
  52. data/lib/meetalendar/routes/meetalendar_admin.rb +30 -0
  53. data/lib/meetalendar/routing.rb +3 -0
  54. data/lib/meetalendar/version.rb +7 -0
  55. data/lib/tasks/meetalendar_tasks.rake +14 -0
  56. metadata +244 -0
@@ -0,0 +1,3 @@
1
+ Meetalendar::Application.routes.draw do
2
+ comfy_route :meetalendar_admin
3
+ end
@@ -0,0 +1,35 @@
1
+ test:
2
+ service: Disk
3
+ root: <%= Rails.root.join("tmp/storage") %>
4
+
5
+ local:
6
+ service: Disk
7
+ root: <%= Rails.root.join("storage") %>
8
+
9
+ # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
10
+ # amazon:
11
+ # service: S3
12
+ # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
13
+ # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
14
+ # region: us-east-1
15
+ # bucket: your_own_bucket
16
+
17
+ # Remember not to checkin your GCS keyfile to a repository
18
+ # google:
19
+ # service: GCS
20
+ # project: your_project
21
+ # keyfile: <%= Rails.root.join("path/to/gcs.keyfile") %>
22
+ # bucket: your_own_bucket
23
+
24
+ # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
25
+ # microsoft:
26
+ # service: AzureStorage
27
+ # path: your_azure_storage_path
28
+ # storage_account_name: your_account_name
29
+ # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
30
+ # container: your_container_name
31
+
32
+ # mirror:
33
+ # service: Mirror
34
+ # primary: local
35
+ # mirrors: [ amazon, google, microsoft ]
@@ -0,0 +1,142 @@
1
+ class CreateCms < ActiveRecord::Migration[5.2]
2
+
3
+ LIMIT = 16777215
4
+
5
+ def change
6
+
7
+ # -- Sites -----------------------------------------------------------------
8
+ create_table :comfy_cms_sites, force: true do |t|
9
+ t.string :label, null: false
10
+ t.string :identifier, null: false
11
+ t.string :hostname, null: false
12
+ t.string :path
13
+ t.string :locale, null: false, default: "en"
14
+ t.timestamps
15
+
16
+ t.index :hostname
17
+ end
18
+
19
+ # -- Layouts ---------------------------------------------------------------
20
+ create_table :comfy_cms_layouts, force: true do |t|
21
+ t.integer :site_id, null: false
22
+ t.integer :parent_id
23
+ t.string :app_layout
24
+ t.string :label, null: false
25
+ t.string :identifier, null: false
26
+ t.text :content, limit: LIMIT
27
+ t.text :css, limit: LIMIT
28
+ t.text :js, limit: LIMIT
29
+ t.integer :position, null: false, default: 0
30
+ t.timestamps
31
+
32
+ t.index [:parent_id, :position]
33
+ t.index [:site_id, :identifier], unique: true
34
+ end
35
+
36
+ # -- Pages -----------------------------------------------------------------
37
+ create_table :comfy_cms_pages, force: true do |t|
38
+ t.integer :site_id, null: false
39
+ t.integer :layout_id
40
+ t.integer :parent_id
41
+ t.integer :target_page_id
42
+ t.string :label, null: false
43
+ t.string :slug
44
+ t.string :full_path, null: false
45
+ t.text :content_cache, limit: LIMIT
46
+ t.integer :position, null: false, default: 0
47
+ t.integer :children_count, null: false, default: 0
48
+ t.boolean :is_published, null: false, default: true
49
+ t.timestamps
50
+
51
+ t.index [:site_id, :full_path]
52
+ t.index [:parent_id, :position]
53
+ t.index [:is_published]
54
+ end
55
+
56
+ # -- Translations ----------------------------------------------------------
57
+ create_table :comfy_cms_translations, force: true do |t|
58
+ t.string :locale, null: false
59
+ t.integer :page_id, null: false
60
+ t.integer :layout_id
61
+ t.string :label, null: false
62
+ t.text :content_cache, limit: LIMIT
63
+ t.boolean :is_published, null: false, default: true
64
+ t.timestamps
65
+
66
+ t.index [:page_id]
67
+ t.index [:locale]
68
+ t.index [:is_published]
69
+ end
70
+
71
+ # -- Fragments -------------------------------------------------------------
72
+ create_table :comfy_cms_fragments, force: true do |t|
73
+ t.references :record, polymorphic: true
74
+ t.string :identifier, null: false
75
+ t.string :tag, null: false, default: "text"
76
+ t.text :content, limit: LIMIT
77
+ t.boolean :boolean, null: false, default: false
78
+ t.datetime :datetime
79
+ t.timestamps
80
+
81
+ t.index [:identifier]
82
+ t.index [:datetime]
83
+ t.index [:boolean]
84
+ end
85
+
86
+ # -- Snippets --------------------------------------------------------------
87
+ create_table :comfy_cms_snippets, force: true do |t|
88
+ t.integer :site_id, null: false
89
+ t.string :label, null: false
90
+ t.string :identifier, null: false
91
+ t.text :content, limit: LIMIT
92
+ t.integer :position, null: false, default: 0
93
+ t.timestamps
94
+
95
+ t.index [:site_id, :identifier], unique: true
96
+ t.index [:site_id, :position]
97
+ end
98
+
99
+ # -- Files -----------------------------------------------------------------
100
+ create_table :comfy_cms_files, force: true do |t|
101
+ t.integer :site_id, null: false
102
+ t.string :label, null: false, default: ""
103
+ t.text :description, limit: 2048
104
+ t.integer :position, null: false, default: 0
105
+ t.timestamps
106
+
107
+ t.index [:site_id, :position]
108
+ end
109
+
110
+ # -- Revisions -------------------------------------------------------------
111
+ create_table :comfy_cms_revisions, force: true do |t|
112
+ t.string :record_type, null: false
113
+ t.integer :record_id, null: false
114
+ t.text :data, limit: LIMIT
115
+ t.datetime :created_at
116
+
117
+ t.index [:record_type, :record_id, :created_at],
118
+ name: "index_cms_revisions_on_rtype_and_rid_and_created_at"
119
+ end
120
+
121
+ # -- Categories ------------------------------------------------------------
122
+ create_table :comfy_cms_categories, force: true do |t|
123
+ t.integer :site_id, null: false
124
+ t.string :label, null: false
125
+ t.string :categorized_type, null: false
126
+
127
+ t.index [:site_id, :categorized_type, :label],
128
+ unique: true,
129
+ name: "index_cms_categories_on_site_id_and_cat_type_and_label"
130
+ end
131
+
132
+ create_table :comfy_cms_categorizations, force: true do |t|
133
+ t.integer :category_id, null: false
134
+ t.string :categorized_type, null: false
135
+ t.integer :categorized_id, null: false
136
+
137
+ t.index [:category_id, :categorized_type, :categorized_id],
138
+ unique: true,
139
+ name: "index_cms_categorizations_on_cat_id_and_catd_type_and_catd_id"
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,13 @@
1
+ class CreateMeetalendarMeetupGroups < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :meetalendar_meetup_groups do |t|
4
+ t.string :name
5
+ t.integer :group_id, null: false
6
+ t.string :approved_cities
7
+ t.string :group_link
8
+
9
+ t.index [:group_id], unique: true
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ class CreateMeetalendarAuthCredentials < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :meetalendar_auth_credentials do |t|
4
+ t.string :client_id
5
+ t.string :encrypted_access_token
6
+ t.string :encrypted_access_token_iv
7
+ t.string :encrypted_refresh_token
8
+ t.string :encrypted_refresh_token_iv
9
+ t.string :scope_json
10
+ t.integer :expiration_time_millis
11
+ t.string :auth_id
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ = Meetalendar =
2
+
3
+ Hey! Everything is almost done. Please don't forget to
4
+
5
+ * run migrations -> `rake db:migrate`
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
4
+
5
+ module Comfy
6
+ module Generators
7
+ class MeetalendarGenerator < Rails::Generators::Base
8
+
9
+ include Rails::Generators::Migration
10
+ include Thor::Actions
11
+
12
+ source_root File.expand_path("../../../..", __dir__)
13
+
14
+ def self.next_migration_number(dirname)
15
+ ActiveRecord::Generators::Base.next_migration_number(dirname)
16
+ end
17
+
18
+ def generate_migration
19
+ destination = File.expand_path("db/migrate/01_create_meetalendar_meetup_groups.rb", destination_root)
20
+ migration_dir = File.dirname(destination)
21
+ destination = self.class.migration_exists?(migration_dir, "create_meetalendar_meetup_groups")
22
+
23
+ if destination
24
+ puts "\e[0m\e[31mFound existing create_meetalendar_meetup_groups migration. Remove it if you want to regenerate.\e[0m"
25
+ else
26
+ migration_template "db/migrate/01_create_meetalendar_meetup_groups.rb", "db/migrate/create_meetalendar_meetup_groups.rb"
27
+ end
28
+
29
+ destination = File.expand_path("db/migrate/02_create_meetalendar_auth_credentials.rb", destination_root)
30
+ migration_dir = File.dirname(destination)
31
+ destination = self.class.migration_exists?(migration_dir, "create_meetalendar_auth_credentials.rb")
32
+
33
+ if destination
34
+ puts "\e[0m\e[31mFound existing create_meetalendar_auth_credentials migration. Remove it if you want to regenerate.\e[0m"
35
+ else
36
+ migration_template "db/migrate/02_create_meetalendar_auth_credentials.rb", "db/migrate/create_meetalendar_auth_credentials.rb"
37
+ end
38
+ end
39
+
40
+ def generate_initialization
41
+ copy_file "config/initializers/meetalendar.rb",
42
+ "config/initializers/meetalendar.rb"
43
+ end
44
+
45
+ def generate_routing
46
+ route_string = <<-RUBY.strip_heredoc
47
+ comfy_route :meetalendar_admin, path: "/admin"
48
+ RUBY
49
+ route route_string
50
+ end
51
+
52
+ def generate_views
53
+ directory "app/views/comfy/admin/meetalendar", "app/views/comfy/admin/meetalendar"
54
+ end
55
+
56
+ def show_readme
57
+ readme "lib/generators/comfy/meetalendar/README"
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "meetalendar/version"
4
+ require_relative "meetalendar/engine"
5
+ require_relative "meetalendar/configuration"
6
+ require_relative "meetalendar/routing"
7
+
8
+ module Meetalendar
9
+
10
+ class << self
11
+
12
+ # Modify Blog configuration
13
+ # Example:
14
+ # Meetalendar.configure do |config|
15
+ # config.posts_per_page = 5
16
+ # end
17
+ def configure
18
+ yield configuration
19
+ end
20
+
21
+ # Accessor for Meetalendar::Configuration
22
+ def configuration
23
+ @configuration ||= Meetalendar::Configuration.new
24
+ end
25
+ alias config configuration
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Meetalendar
4
+ class Configuration
5
+
6
+ # Application layout to be used to index blog posts.
7
+ # Default is 'comfy/blog/application'
8
+ attr_accessor :app_layout
9
+
10
+ # # Number of posts per page. Default is 10
11
+ # attr_accessor :posts_per_page
12
+
13
+ # # Auto-setting parameter derived from the routes
14
+ # attr_accessor :public_blog_path
15
+
16
+ # Configuration defaults
17
+ def initialize
18
+ # @posts_per_page = 10
19
+ @app_layout = "comfy/meetalendar/application"
20
+ # @public_blog_path = nil
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubygems"
4
+ require "rails"
5
+ require "comfortable_mexican_sofa"
6
+ require "meetalendar"
7
+
8
+ module Meetalendar
9
+
10
+ module CmsSiteExtensions
11
+
12
+ extend ActiveSupport::Concern
13
+ included do
14
+ has_many :meetalendar_meetups,
15
+ class_name: "Meetalendar::Meetups",
16
+ dependent: :destroy
17
+ end
18
+
19
+ end
20
+
21
+ class Engine < ::Rails::Engine
22
+
23
+ initializer "meetalendar.configuration" do
24
+ ComfortableMexicanSofa::ViewHooks.add(:navigation, "/comfy/admin/meetalendar/partials/navigation")
25
+ config.to_prepare do
26
+ Comfy::Cms::Site.send :include, Meetalendar::CmsSiteExtensions
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ActionDispatch::Routing::Mapper
4
+
5
+ def comfy_route_meetalendar_admin(options = {})
6
+ options[:path] ||= "admin"
7
+ path = [options[:path], "sites", ":site_id"].join("/")
8
+
9
+ scope module: :comfy, as: :comfy do
10
+ scope module: :admin do
11
+
12
+ namespace :meetalendar, as: :admin_meetalendar, path: path, except: [:show] do
13
+ resources :meetups, except: [:show] do
14
+ collection do
15
+ get 'search_mask'
16
+ get 'search_result'
17
+ get 'authorize_calendar'
18
+ post 'authorize_calendar'
19
+ get 'authorize_meetup'
20
+ get 'callback'
21
+ get 'failure'
22
+ end
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "routes/meetalendar_admin"
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Meetalendar
4
+
5
+ VERSION = "0.0.1"
6
+
7
+ end
@@ -0,0 +1,14 @@
1
+ namespace :meetalendar do
2
+ desc 'Syncronize selected meetup groups events with the configured google calendar.'
3
+ task :syncronize => :environment do
4
+ require 'comfy/admin/meetalendar/meetups_calendar_syncer'
5
+ Comfy::Admin::Meetalendar::MeetupsCalendarSyncer.sync_meetups_to_calendar(Comfy::Admin::Meetalendar::MeetupsCalendarSyncer.gather_meetups_in_approved_cities(Time.now))
6
+ end
7
+
8
+
9
+ # desc 'Syncronize selected meetup groups events with the configured google calendar.'
10
+ # task :testoncli => :environment do
11
+ # require 'comfy/admin/meetalendar/meetups_calendar_syncer'
12
+ # Comfy::Admin::Meetalendar::MeetupsCalendarSyncer.gather_meetups_in_approved_cities(Time.now)
13
+ # end
14
+ end
metadata ADDED
@@ -0,0 +1,244 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: meetalendar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andreas Schau @ HicknHack
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.2.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.2.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: httpclient
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.8'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.8.3
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.8'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.8.3
53
+ - !ruby/object:Gem::Dependency
54
+ name: google-api-client
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.30.3
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 0.30.3
67
+ - !ruby/object:Gem::Dependency
68
+ name: attr_encrypted
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '3.1'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.1'
81
+ - !ruby/object:Gem::Dependency
82
+ name: activeresource
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '5.1'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '5.1'
95
+ - !ruby/object:Gem::Dependency
96
+ name: slim
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '4.0'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 4.0.1
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '4.0'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 4.0.1
115
+ - !ruby/object:Gem::Dependency
116
+ name: multi_json
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.13'
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.13.1
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.13'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 1.13.1
135
+ - !ruby/object:Gem::Dependency
136
+ name: bootstrap-sass
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: '3.3'
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 3.3.7
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.3'
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 3.3.7
155
+ description: 'This gem prensents all the needed functionality to search for relevant
156
+ groups on meetup, remember the chosen ones and offers a task that can be called
157
+ regularely to transcribe the meetup-groups events to a google calendar. TLDR: It
158
+ allows the user to subscribe to meetup-groups events.'
159
+ email:
160
+ - andreas.schau@hicknhack-software.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - ".gitignore"
166
+ - ".rubocop.yml"
167
+ - ".travis.yml"
168
+ - Gemfile
169
+ - LICENSE
170
+ - README.md
171
+ - Rakefile
172
+ - app/controllers/comfy/admin/meetalendar/meetups_controller.rb
173
+ - app/models/comfy/admin/meetalendar/auth_credential.rb
174
+ - app/models/comfy/admin/meetalendar/meetup_group.rb
175
+ - app/models/comfy/admin/meetalendar/meetups_calendar_syncer.rb
176
+ - app/models/comfy/admin/meetalendar/meetups_controller_logic.rb
177
+ - app/models/google/auth/store/db_token_store.rb
178
+ - app/views/comfy/admin/meetalendar/meetups/_authorize_calendar.slim
179
+ - app/views/comfy/admin/meetalendar/meetups/_edit.slim
180
+ - app/views/comfy/admin/meetalendar/meetups/_search_mask.slim
181
+ - app/views/comfy/admin/meetalendar/meetups/_search_result.slim
182
+ - app/views/comfy/admin/meetalendar/meetups/authorize_calendar.slim
183
+ - app/views/comfy/admin/meetalendar/meetups/edit.slim
184
+ - app/views/comfy/admin/meetalendar/meetups/index.slim
185
+ - app/views/comfy/admin/meetalendar/meetups/search_mask.slim
186
+ - app/views/comfy/admin/meetalendar/meetups/search_result.slim
187
+ - app/views/comfy/admin/meetalendar/partials/_navigation.html.haml
188
+ - app/views/layouts/comfy/meetalendar/application.html.erb
189
+ - bin/bundle
190
+ - bin/rails
191
+ - bin/rake
192
+ - bin/setup
193
+ - bin/update
194
+ - bin/yarn
195
+ - comfy_meetalendar.gemspec
196
+ - config.ru
197
+ - config/application.rb
198
+ - config/boot.rb
199
+ - config/database.yml
200
+ - config/environment.rb
201
+ - config/environments/development.rb
202
+ - config/environments/test.rb
203
+ - config/initializers/meetalendar.rb
204
+ - config/locales/en.yml
205
+ - config/meetalendar_routes.rb
206
+ - config/storage.yml
207
+ - db/migrate/00_create_cms.rb
208
+ - db/migrate/01_create_meetalendar_meetup_groups.rb
209
+ - db/migrate/02_create_meetalendar_auth_credentials.rb
210
+ - lib/generators/comfy/meetalendar/README
211
+ - lib/generators/comfy/meetalendar/meetalendar_generator.rb
212
+ - lib/meetalendar.rb
213
+ - lib/meetalendar/configuration.rb
214
+ - lib/meetalendar/engine.rb
215
+ - lib/meetalendar/routes/meetalendar_admin.rb
216
+ - lib/meetalendar/routing.rb
217
+ - lib/meetalendar/version.rb
218
+ - lib/tasks/meetalendar_tasks.rake
219
+ homepage: https://www.hicknhack-software.com/
220
+ licenses:
221
+ - MIT
222
+ metadata: {}
223
+ post_install_message:
224
+ rdoc_options: []
225
+ require_paths:
226
+ - lib
227
+ required_ruby_version: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: 2.3.0
232
+ required_rubygems_version: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ requirements: []
238
+ rubyforge_project:
239
+ rubygems_version: 2.7.6
240
+ signing_key:
241
+ specification_version: 4
242
+ summary: To have a section on a website that allows gathering of meetup groups. So
243
+ that their events can regularely be syncronized into a google calendar.
244
+ test_files: []