glib-web 0.5.97 → 0.5.98

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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -34
  3. data/app/channels/glib/channel/online_channel.rb +36 -36
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +149 -149
  6. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  7. data/app/controllers/concerns/glib/json/libs.rb +149 -149
  8. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  9. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  10. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  11. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  12. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  13. data/app/controllers/glib/home_controller.rb +54 -54
  14. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  15. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  16. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  17. data/app/helpers/glib/enum_helper.rb +18 -18
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
  20. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  21. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  22. data/app/helpers/glib/json_ui/action_builder/iap.rb +15 -15
  23. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  24. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  25. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  26. data/app/helpers/glib/json_ui/action_builder/windows.rb +38 -38
  27. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  28. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  29. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  30. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  31. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  32. data/app/helpers/glib/json_ui/menu_builder.rb +96 -96
  33. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  34. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  35. data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  38. data/app/helpers/glib/json_ui/view_builder/charts.rb +49 -49
  39. data/app/helpers/glib/json_ui/view_builder/fields.rb +296 -296
  40. data/app/helpers/glib/json_ui/view_builder/iap.rb +11 -11
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +262 -262
  42. data/app/helpers/glib/json_ui/view_builder.rb +256 -253
  43. data/app/helpers/glib/urls_helper.rb +12 -12
  44. data/app/models/concerns/glib/soft_deletable.rb +73 -73
  45. data/app/models/glib/active_storage/attachment.rb +9 -9
  46. data/app/models/glib/active_storage/blob.rb +9 -9
  47. data/app/models/glib/application_record.rb +18 -18
  48. data/app/models/glib/dynamic_text_record.rb +9 -9
  49. data/app/models/glib/text.rb +95 -95
  50. data/app/policies/glib/application_policy.rb +191 -191
  51. data/app/validators/email_typo_validator.rb +38 -38
  52. data/app/validators/email_validator.rb +7 -7
  53. data/app/validators/url_validator.rb +20 -20
  54. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +72 -72
  55. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  56. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  59. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  60. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  61. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  62. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  65. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +10 -10
  66. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  67. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  68. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +27 -27
  69. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +38 -38
  70. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  71. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -24
  72. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  73. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +37 -37
  74. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  75. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  76. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  77. data/app/views/json_ui/garage/forms/index.json.jbuilder +120 -120
  78. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  79. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  80. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  81. data/app/views/json_ui/garage/forms/payments.json.jbuilder +34 -34
  82. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +89 -89
  83. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  84. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  85. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -91
  86. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +150 -150
  87. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  88. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  89. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  90. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  91. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  92. data/app/views/json_ui/garage/forms/submit_on_change.json.jbuilder +28 -28
  93. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +65 -65
  94. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  95. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  96. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  97. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  98. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +30 -30
  99. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  100. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  101. data/app/views/json_ui/garage/lists/autoload_as_needed_responsive_columns.json.jbuilder +27 -27
  102. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  103. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  104. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  105. data/app/views/json_ui/garage/lists/index.json.jbuilder +41 -41
  106. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  107. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  108. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  109. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  110. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  111. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  112. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  113. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  114. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  115. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  116. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  117. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  118. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  119. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  120. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  121. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +92 -92
  122. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  123. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  124. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +38 -38
  125. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  126. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  127. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +101 -101
  128. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
  129. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  130. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  131. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  132. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -33
  133. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  134. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  135. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  136. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  137. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  138. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  139. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  140. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  141. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  142. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  143. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  144. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  145. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  146. data/app/views/json_ui/garage/views/banners.json.jbuilder +67 -67
  147. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  148. data/app/views/json_ui/garage/views/charts.json.jbuilder +125 -125
  149. data/app/views/json_ui/garage/views/controls.json.jbuilder +60 -60
  150. data/app/views/json_ui/garage/views/iap.json.jbuilder +21 -21
  151. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  152. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
  153. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  154. data/app/views/json_ui/garage/views/index.json.jbuilder +83 -83
  155. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  156. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  157. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  158. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  159. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  160. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  161. data/app/views/json_ui/garage/views/progress.json.jbuilder +31 -31
  162. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  163. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  164. data/config/routes.rb +7 -7
  165. data/lib/generators/glib/install_generator.rb +24 -24
  166. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  167. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  168. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  169. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  170. data/lib/generators/templates/database.yml +107 -107
  171. data/lib/generators/templates/dynamic_text.rb +2 -2
  172. data/lib/glib/crypt/utils.rb +26 -26
  173. data/lib/glib/dynamic_text/config.rb +21 -21
  174. data/lib/glib/engine.rb +7 -7
  175. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  176. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  177. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  178. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  179. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  180. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  181. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  182. data/lib/glib/json_crawler/coverage.rb +20 -20
  183. data/lib/glib/json_crawler/http.rb +120 -120
  184. data/lib/glib/json_crawler/router.rb +90 -90
  185. data/lib/glib/json_crawler.rb +11 -11
  186. data/lib/glib/mailer_tester.rb +36 -36
  187. data/lib/glib/test_helpers.rb +52 -52
  188. data/lib/glib/value.rb +7 -7
  189. data/lib/glib/version.rb +5 -5
  190. data/lib/glib-web.rb +9 -9
  191. data/lib/tasks/db.rake +95 -95
  192. metadata +2 -3
@@ -1,27 +1,27 @@
1
- # This migration comes from active_storage (originally 20170806125915)
2
- class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
- def change
4
- create_table :active_storage_blobs do |t|
5
- t.string :key, null: false
6
- t.string :filename, null: false
7
- t.string :content_type
8
- t.text :metadata
9
- t.bigint :byte_size, null: false
10
- t.string :checksum, null: false
11
- t.datetime :created_at, null: false
12
-
13
- t.index [ :key ], unique: true
14
- end
15
-
16
- create_table :active_storage_attachments do |t|
17
- t.string :name, null: false
18
- t.references :record, null: false, polymorphic: true, index: false
19
- t.references :blob, null: false
20
-
21
- t.datetime :created_at, null: false
22
-
23
- t.index [ :record_type, :record_id, :name, :blob_id ], name: 'index_active_storage_attachments_uniqueness', unique: true
24
- t.foreign_key :active_storage_blobs, column: :blob_id
25
- end
26
- end
27
- end
1
+ # This migration comes from active_storage (originally 20170806125915)
2
+ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
+ def change
4
+ create_table :active_storage_blobs do |t|
5
+ t.string :key, null: false
6
+ t.string :filename, null: false
7
+ t.string :content_type
8
+ t.text :metadata
9
+ t.bigint :byte_size, null: false
10
+ t.string :checksum, null: false
11
+ t.datetime :created_at, null: false
12
+
13
+ t.index [ :key ], unique: true
14
+ end
15
+
16
+ create_table :active_storage_attachments do |t|
17
+ t.string :name, null: false
18
+ t.references :record, null: false, polymorphic: true, index: false
19
+ t.references :blob, null: false
20
+
21
+ t.datetime :created_at, null: false
22
+
23
+ t.index [ :record_type, :record_id, :name, :blob_id ], name: 'index_active_storage_attachments_uniqueness', unique: true
24
+ t.foreign_key :active_storage_blobs, column: :blob_id
25
+ end
26
+ end
27
+ end
@@ -1,107 +1,107 @@
1
- # PostgreSQL. Versions 9.1 and up are supported.
2
- #
3
- # Install the pg driver:
4
- # gem install pg
5
- # On OS X with Homebrew:
6
- # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7
- # On OS X with MacPorts:
8
- # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9
- # On Windows:
10
- # gem install pg
11
- # Choose the win32 build.
12
- # Install PostgreSQL and put its /bin directory on your path.
13
- #
14
- # Configure Using Gemfile
15
- # gem 'pg'
16
- #
17
- default: &default
18
- adapter: postgresql
19
- encoding: unicode
20
- # For details on connection pooling, see Rails configuration guide
21
- # http://guides.rubyonrails.org/configuring.html#database-pooling
22
- pool: <%= "\<\%\= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } \%\>" %>
23
- host: <%= "\<\%\= ENV.fetch(\"DATABASE_HOST\") {} \%\>" %>
24
- username: <%= "\<\%\= ENV.fetch(\"DATABASE_USER\") {} \%\>" %>
25
- password: <%= "\<\%\= ENV.fetch(\"DATABASE_PASSWORD\") {} \%\>" %>
26
-
27
- development:
28
- primary:
29
- <<: *default
30
- database: <%= "\<\%\= ENV.fetch(\"DATABASE_NAME\") { \"#{options[:app_name]}\" } + \"_development\" \%\>" %>
31
- dynamic_text:
32
- <<: *default
33
- migrations_paths: db/dynamic_text_migrate
34
- database: <%= "\<\%\= ENV.fetch(\"DT_DATABASE_NAME\") { \"DynamicText\" } + \"_development\" \%\>" %>
35
-
36
- # The specified database role being used to connect to postgres.
37
- # To create additional roles in postgres see `$ createuser --help`.
38
- # When left blank, postgres will use the default role. This is
39
- # the same name as the operating system user that initialized the database.
40
- #username: ItineraryBuilder
41
-
42
- # The password associated with the postgres role (username).
43
- #password:
44
-
45
- # Connect on a TCP socket. Omitted by default since the client uses a
46
- # domain socket that doesn't need configuration. Windows does not have
47
- # domain sockets, so uncomment these lines.
48
- #host: localhost
49
-
50
- # The TCP port the server listens on. Defaults to 5432.
51
- # If your server runs on a different port number, change accordingly.
52
- #port: 5432
53
-
54
- # Schema search path. The server defaults to $user,public
55
- #schema_search_path: myapp,sharedapp,public
56
-
57
- # Minimum log levels, in increasing order:
58
- # debug5, debug4, debug3, debug2, debug1,
59
- # log, notice, warning, error, fatal, and panic
60
- # Defaults to warning.
61
- #min_messages: notice
62
-
63
- # Warning: The database defined as "test" will be erased and
64
- # re-generated from your development database when you run "rake".
65
- # Do not set this db to the same as development or production.
66
- test:
67
- primary:
68
- <<: *default
69
- database: <%= "\<\%\= ENV.fetch(\"DATABASE_NAME\") { \"#{options[:app_name]}\" } + \"_test\" \%\>" %>
70
- dynamic_text:
71
- <<: *default
72
- migrations_paths: db/dynamic_text_migrate
73
- database: <%= "\<\%\= ENV.fetch(\"DT_DATABASE_NAME\") { \"DynamicText\" } + \"_test\" \%\>" %>
74
-
75
- # As with config/secrets.yml, you never want to store sensitive information,
76
- # like your database password, in your source code. If your source code is
77
- # ever seen by anyone, they now have access to your database.
78
- #
79
- # Instead, provide the password as a unix environment variable when you boot
80
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
81
- # for a full rundown on how to provide these environment variables in a
82
- # production deployment.
83
- #
84
- # On Heroku and other platform providers, you may have a full connection URL
85
- # available as an environment variable. For example:
86
- #
87
- # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
88
- #
89
- # You can use this database configuration with:
90
- #
91
- # production:
92
- # url: <%= "\<\%\= ENV[\'DATABASE_URL\'] \%\>" %>
93
- #
94
-
95
- production_default: &production_default
96
- adapter: postgresql
97
- encoding: unicode
98
- pool: <%= "\<\%\= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } \%\>" %>
99
-
100
- production:
101
- primary:
102
- <<: *production_default
103
- url: <%= "\<\%\= ENV[\"DATABASE_URL\"] \%\>" %>
104
- dynamic_text:
105
- <<: *production_default
106
- migrations_paths: db/dynamic_text_migrate
107
- url: <%= "\<\%\= ENV[\"#{options[:database_env_key]}\"] \%\>" %>
1
+ # PostgreSQL. Versions 9.1 and up are supported.
2
+ #
3
+ # Install the pg driver:
4
+ # gem install pg
5
+ # On OS X with Homebrew:
6
+ # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7
+ # On OS X with MacPorts:
8
+ # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9
+ # On Windows:
10
+ # gem install pg
11
+ # Choose the win32 build.
12
+ # Install PostgreSQL and put its /bin directory on your path.
13
+ #
14
+ # Configure Using Gemfile
15
+ # gem 'pg'
16
+ #
17
+ default: &default
18
+ adapter: postgresql
19
+ encoding: unicode
20
+ # For details on connection pooling, see Rails configuration guide
21
+ # http://guides.rubyonrails.org/configuring.html#database-pooling
22
+ pool: <%= "\<\%\= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } \%\>" %>
23
+ host: <%= "\<\%\= ENV.fetch(\"DATABASE_HOST\") {} \%\>" %>
24
+ username: <%= "\<\%\= ENV.fetch(\"DATABASE_USER\") {} \%\>" %>
25
+ password: <%= "\<\%\= ENV.fetch(\"DATABASE_PASSWORD\") {} \%\>" %>
26
+
27
+ development:
28
+ primary:
29
+ <<: *default
30
+ database: <%= "\<\%\= ENV.fetch(\"DATABASE_NAME\") { \"#{options[:app_name]}\" } + \"_development\" \%\>" %>
31
+ dynamic_text:
32
+ <<: *default
33
+ migrations_paths: db/dynamic_text_migrate
34
+ database: <%= "\<\%\= ENV.fetch(\"DT_DATABASE_NAME\") { \"DynamicText\" } + \"_development\" \%\>" %>
35
+
36
+ # The specified database role being used to connect to postgres.
37
+ # To create additional roles in postgres see `$ createuser --help`.
38
+ # When left blank, postgres will use the default role. This is
39
+ # the same name as the operating system user that initialized the database.
40
+ #username: ItineraryBuilder
41
+
42
+ # The password associated with the postgres role (username).
43
+ #password:
44
+
45
+ # Connect on a TCP socket. Omitted by default since the client uses a
46
+ # domain socket that doesn't need configuration. Windows does not have
47
+ # domain sockets, so uncomment these lines.
48
+ #host: localhost
49
+
50
+ # The TCP port the server listens on. Defaults to 5432.
51
+ # If your server runs on a different port number, change accordingly.
52
+ #port: 5432
53
+
54
+ # Schema search path. The server defaults to $user,public
55
+ #schema_search_path: myapp,sharedapp,public
56
+
57
+ # Minimum log levels, in increasing order:
58
+ # debug5, debug4, debug3, debug2, debug1,
59
+ # log, notice, warning, error, fatal, and panic
60
+ # Defaults to warning.
61
+ #min_messages: notice
62
+
63
+ # Warning: The database defined as "test" will be erased and
64
+ # re-generated from your development database when you run "rake".
65
+ # Do not set this db to the same as development or production.
66
+ test:
67
+ primary:
68
+ <<: *default
69
+ database: <%= "\<\%\= ENV.fetch(\"DATABASE_NAME\") { \"#{options[:app_name]}\" } + \"_test\" \%\>" %>
70
+ dynamic_text:
71
+ <<: *default
72
+ migrations_paths: db/dynamic_text_migrate
73
+ database: <%= "\<\%\= ENV.fetch(\"DT_DATABASE_NAME\") { \"DynamicText\" } + \"_test\" \%\>" %>
74
+
75
+ # As with config/secrets.yml, you never want to store sensitive information,
76
+ # like your database password, in your source code. If your source code is
77
+ # ever seen by anyone, they now have access to your database.
78
+ #
79
+ # Instead, provide the password as a unix environment variable when you boot
80
+ # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
81
+ # for a full rundown on how to provide these environment variables in a
82
+ # production deployment.
83
+ #
84
+ # On Heroku and other platform providers, you may have a full connection URL
85
+ # available as an environment variable. For example:
86
+ #
87
+ # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
88
+ #
89
+ # You can use this database configuration with:
90
+ #
91
+ # production:
92
+ # url: <%= "\<\%\= ENV[\'DATABASE_URL\'] \%\>" %>
93
+ #
94
+
95
+ production_default: &production_default
96
+ adapter: postgresql
97
+ encoding: unicode
98
+ pool: <%= "\<\%\= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } \%\>" %>
99
+
100
+ production:
101
+ primary:
102
+ <<: *production_default
103
+ url: <%= "\<\%\= ENV[\"DATABASE_URL\"] \%\>" %>
104
+ dynamic_text:
105
+ <<: *production_default
106
+ migrations_paths: db/dynamic_text_migrate
107
+ url: <%= "\<\%\= ENV[\"#{options[:database_env_key]}\"] \%\>" %>
@@ -1,2 +1,2 @@
1
- dt_redis_url = ENV.fetch('<%= options[:redis_env_key] %>', 'redis://localhost:6379')
2
- $dt_redis = Redis.new(url: dt_redis_url)
1
+ dt_redis_url = ENV.fetch('<%= options[:redis_env_key] %>', 'redis://localhost:6379')
2
+ $dt_redis = Redis.new(url: dt_redis_url)
@@ -1,26 +1,26 @@
1
- module Glib
2
- module Crypt
3
- class Utils
4
- def self.encrypt(original_message, encryption_secret, encryption_salt)
5
- encryptor = message_encryptor(encryption_secret, encryption_salt)
6
- CGI.escape(encryptor.encrypt_and_sign(original_message))
7
- end
8
-
9
- def self.decrypt(encrypted_message, encryption_secret, encryption_salt)
10
- encryptor = message_encryptor(encryption_secret, encryption_salt)
11
- begin
12
- encryptor.decrypt_and_verify(CGI.unescape(encrypted_message))
13
- rescue ActiveSupport::MessageEncryptor::InvalidMessage
14
- nil
15
- end
16
- end
17
-
18
- private
19
- def self.message_encryptor(encryption_secret, encryption_salt)
20
- key_generator = ActiveSupport::KeyGenerator.new(encryption_secret, iterations: 1000)
21
- key_secret = key_generator.generate_key(encryption_salt, 32)
22
- ActiveSupport::MessageEncryptor.new(key_secret, digest: 'SHA1', serializer: JSON)
23
- end
24
- end
25
- end
26
- end
1
+ module Glib
2
+ module Crypt
3
+ class Utils
4
+ def self.encrypt(original_message, encryption_secret, encryption_salt)
5
+ encryptor = message_encryptor(encryption_secret, encryption_salt)
6
+ CGI.escape(encryptor.encrypt_and_sign(original_message))
7
+ end
8
+
9
+ def self.decrypt(encrypted_message, encryption_secret, encryption_salt)
10
+ encryptor = message_encryptor(encryption_secret, encryption_salt)
11
+ begin
12
+ encryptor.decrypt_and_verify(CGI.unescape(encrypted_message))
13
+ rescue ActiveSupport::MessageEncryptor::InvalidMessage
14
+ nil
15
+ end
16
+ end
17
+
18
+ private
19
+ def self.message_encryptor(encryption_secret, encryption_salt)
20
+ key_generator = ActiveSupport::KeyGenerator.new(encryption_secret, iterations: 1000)
21
+ key_secret = key_generator.generate_key(encryption_salt, 32)
22
+ ActiveSupport::MessageEncryptor.new(key_secret, digest: 'SHA1', serializer: JSON)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,21 +1,21 @@
1
- module Glib
2
- module DynamicText
3
- class Config
4
- @@redis = nil
5
- @@database_url = nil
6
-
7
- def self.redis
8
- if @@redis.nil?
9
- redis_url = ENV.fetch('DT_REDIS_URL', 'redis://localhost:6379')
10
- # Allow application to specify their own $dt_redis
11
- @@redis = $dt_redis || Redis.new(url: redis_url)
12
- end
13
- @@redis
14
- end
15
-
16
- def self.database_url
17
- @@database_url ||= ENV['DT_DATABASE_URL']
18
- end
19
- end
20
- end
21
- end
1
+ module Glib
2
+ module DynamicText
3
+ class Config
4
+ @@redis = nil
5
+ @@database_url = nil
6
+
7
+ def self.redis
8
+ if @@redis.nil?
9
+ redis_url = ENV.fetch('DT_REDIS_URL', 'redis://localhost:6379')
10
+ # Allow application to specify their own $dt_redis
11
+ @@redis = $dt_redis || Redis.new(url: redis_url)
12
+ end
13
+ @@redis
14
+ end
15
+
16
+ def self.database_url
17
+ @@database_url ||= ENV['DT_DATABASE_URL']
18
+ end
19
+ end
20
+ end
21
+ end
data/lib/glib/engine.rb CHANGED
@@ -1,7 +1,7 @@
1
- module Glib
2
- module Web
3
- class Engine < ::Rails::Engine
4
- # isolate_namespace Glib::Web
5
- end
6
- end
7
- end
1
+ module Glib
2
+ module Web
3
+ class Engine < ::Rails::Engine
4
+ # isolate_namespace Glib::Web
5
+ end
6
+ end
7
+ end
@@ -1,23 +1,23 @@
1
- module Glib
2
- module JsonCrawler
3
- class ActionCrawler
4
- def initialize(http)
5
- @http = http
6
- end
7
-
8
- def click(object)
9
- @http.router.step(@http, object)
10
- end
11
-
12
- def crawl(views)
13
- @http.router.crawl_multiple views, ->(view) do
14
- click view
15
- end
16
- end
17
-
18
- def perform(action)
19
- @http.router.process_action(@http, action)
20
- end
21
- end
22
- end
23
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class ActionCrawler
4
+ def initialize(http)
5
+ @http = http
6
+ end
7
+
8
+ def click(object)
9
+ @http.router.step(@http, object)
10
+ end
11
+
12
+ def crawl(views)
13
+ @http.router.crawl_multiple views, ->(view) do
14
+ click view
15
+ end
16
+ end
17
+
18
+ def perform(action)
19
+ @http.router.process_action(@http, action)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,11 +1,11 @@
1
- module Glib
2
- module JsonCrawler
3
- class ActionHttp < ActionCrawler
4
- def initialize(method, http, args, controller)
5
- @http = http
6
- json = @http.send(method, args['url'], controller, args.fetch('formData', {}))
7
- perform(json['onResponse'])
8
- end
9
- end
10
- end
11
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class ActionHttp < ActionCrawler
4
+ def initialize(method, http, args, controller)
5
+ @http = http
6
+ json = @http.send(method, args['url'], controller, args.fetch('formData', {}))
7
+ perform(json['onResponse'])
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,48 +1,48 @@
1
- module Glib
2
- module JsonCrawler
3
- class FormsSubmit < ActionCrawler
4
- def initialize(http, form)
5
- super(http)
6
-
7
- raise 'Submit action needs to be inside a form' unless form
8
-
9
- @http = http
10
-
11
- method = form['method']
12
- action = "forms/#{method}"
13
-
14
- case method
15
- when 'patch', 'put'
16
- submit_update(form, action)
17
- else
18
- url = form['url']
19
- http.router.log action, url
20
- end
21
- end
22
-
23
- def submit_update(view, action)
24
- url = view['url']
25
- fields = []
26
- params = {}
27
- @http.router.crawl_multiple view['childViews'], ->(child) do
28
- name = child['view']
29
- if name.start_with?('fields/')
30
- fields << child
31
-
32
- include_params = case name
33
- when 'fields/check', 'fields/check-v1'
34
- child['checkValue'] == child['value']
35
- else
36
- true
37
- end
38
-
39
- params[child['name']] = child['value'] if include_params
40
- end
41
- end
42
-
43
- json = @http.patch url, action, params
44
- perform(json['onResponse'])
45
- end
46
- end
47
- end
48
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class FormsSubmit < ActionCrawler
4
+ def initialize(http, form)
5
+ super(http)
6
+
7
+ raise 'Submit action needs to be inside a form' unless form
8
+
9
+ @http = http
10
+
11
+ method = form['method']
12
+ action = "forms/#{method}"
13
+
14
+ case method
15
+ when 'patch', 'put'
16
+ submit_update(form, action)
17
+ else
18
+ url = form['url']
19
+ http.router.log action, url
20
+ end
21
+ end
22
+
23
+ def submit_update(view, action)
24
+ url = view['url']
25
+ fields = []
26
+ params = {}
27
+ @http.router.crawl_multiple view['childViews'], ->(child) do
28
+ name = child['view']
29
+ if name.start_with?('fields/')
30
+ fields << child
31
+
32
+ include_params = case name
33
+ when 'fields/check', 'fields/check-v1'
34
+ child['checkValue'] == child['value']
35
+ else
36
+ true
37
+ end
38
+
39
+ params[child['name']] = child['value'] if include_params
40
+ end
41
+ end
42
+
43
+ json = @http.patch url, action, params
44
+ perform(json['onResponse'])
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,12 +1,12 @@
1
- module Glib
2
- module JsonCrawler
3
- class Menu < ActionCrawler
4
- def initialize(http, args, action)
5
- super(http)
6
-
7
- @http.router.log action, nil
8
- crawl args['buttons']
9
- end
10
- end
11
- end
12
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class Menu < ActionCrawler
4
+ def initialize(http, args, action)
5
+ super(http)
6
+
7
+ @http.router.log action, nil
8
+ crawl args['buttons']
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,19 +1,19 @@
1
- module Glib
2
- module JsonCrawler
3
- class NavInitiate < ActionCrawler
4
- def initialize(http, args, action)
5
- super(http)
6
-
7
- @http = http
8
- if (json = (@http.get args['url'], action, args.except('url'))) && (left_drawer = json['leftDrawer'])
9
- crawl left_drawer['header']&.[]('childViews')
10
- crawl left_drawer['rows']
11
- end
12
-
13
- if (on_load = (args.fetch('onLoad', nil)))
14
- perform(on_load)
15
- end
16
- end
17
- end
18
- end
19
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class NavInitiate < ActionCrawler
4
+ def initialize(http, args, action)
5
+ super(http)
6
+
7
+ @http = http
8
+ if (json = (@http.get args['url'], action, args.except('url'))) && (left_drawer = json['leftDrawer'])
9
+ crawl left_drawer['header']&.[]('childViews')
10
+ crawl left_drawer['rows']
11
+ end
12
+
13
+ if (on_load = (args.fetch('onLoad', nil)))
14
+ perform(on_load)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,13 +1,13 @@
1
- module Glib
2
- module JsonCrawler
3
- class RunMultiple < ActionCrawler
4
- def initialize(http, args, action)
5
- @http = http
6
-
7
- args['childActions']&.each do |button|
8
- perform(button)
9
- end
10
- end
11
- end
12
- end
13
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class RunMultiple < ActionCrawler
4
+ def initialize(http, args, action)
5
+ @http = http
6
+
7
+ args['childActions']&.each do |button|
8
+ perform(button)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end