meetalendar 0.0.1

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.
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: []