glib-web 0.5.71 → 0.5.72

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 (185) 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 +148 -148
  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 -8
  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.rb +140 -140
  21. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  22. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  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 +33 -33
  27. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  28. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  29. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  30. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  31. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  32. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  33. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  34. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  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.rb +240 -240
  38. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  39. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  40. data/app/helpers/glib/json_ui/view_builder/fields.rb +278 -279
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +256 -256
  42. data/app/helpers/glib/urls_helper.rb +12 -12
  43. data/app/models/glib/active_storage/attachment.rb +9 -9
  44. data/app/models/glib/active_storage/blob.rb +9 -9
  45. data/app/models/glib/application_record.rb +18 -18
  46. data/app/models/glib/dynamic_text_record.rb +9 -9
  47. data/app/models/glib/text.rb +95 -95
  48. data/app/policies/glib/application_policy.rb +161 -161
  49. data/app/validators/email_typo_validator.rb +38 -38
  50. data/app/validators/email_validator.rb +7 -7
  51. data/app/validators/url_validator.rb +20 -20
  52. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  53. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  54. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  55. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  57. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  59. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  60. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  61. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  62. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  65. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  66. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  67. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  68. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  69. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -22
  70. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  71. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -37
  72. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  73. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  74. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  75. data/app/views/json_ui/garage/forms/index.json.jbuilder +113 -113
  76. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  77. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  78. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  79. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +81 -81
  80. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  81. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  82. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -84
  83. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
  84. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  85. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  86. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  87. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  88. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  89. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
  90. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  91. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  92. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  93. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  94. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  95. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  96. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  97. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  98. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  99. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  100. data/app/views/json_ui/garage/lists/index.json.jbuilder +38 -38
  101. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  102. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  103. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  104. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  105. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  106. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  107. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  108. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  109. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  110. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  111. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  112. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  113. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  114. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  115. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  116. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
  117. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  118. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  119. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  120. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  121. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  122. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  123. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -134
  124. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  125. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  126. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  127. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -0
  128. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  129. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  130. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  131. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  132. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  133. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  134. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  135. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  136. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  137. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  138. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  139. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  140. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  141. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  142. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  143. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  144. data/app/views/json_ui/garage/views/controls.json.jbuilder +37 -37
  145. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  146. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -14
  147. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  148. data/app/views/json_ui/garage/views/index.json.jbuilder +67 -67
  149. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  150. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  151. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  152. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  153. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  154. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  155. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  156. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  157. data/config/routes.rb +7 -7
  158. data/lib/generators/glib/install_generator.rb +24 -24
  159. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  160. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  161. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  162. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  163. data/lib/generators/templates/database.yml +107 -107
  164. data/lib/generators/templates/dynamic_text.rb +2 -2
  165. data/lib/glib-web.rb +9 -9
  166. data/lib/glib/crypt/utils.rb +26 -26
  167. data/lib/glib/dynamic_text/config.rb +21 -21
  168. data/lib/glib/engine.rb +7 -7
  169. data/lib/glib/json_crawler.rb +11 -11
  170. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  171. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  172. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  173. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  174. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  175. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  176. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  177. data/lib/glib/json_crawler/coverage.rb +20 -20
  178. data/lib/glib/json_crawler/http.rb +120 -120
  179. data/lib/glib/json_crawler/router.rb +98 -98
  180. data/lib/glib/mailer_tester.rb +36 -36
  181. data/lib/glib/test_helpers.rb +52 -52
  182. data/lib/glib/value.rb +7 -7
  183. data/lib/glib/version.rb +5 -5
  184. data/lib/tasks/db.rake +95 -95
  185. metadata +3 -3
@@ -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)
data/lib/glib-web.rb CHANGED
@@ -1,9 +1,9 @@
1
- require 'glib/version'
2
- require 'glib/engine' if defined?(::Rails)
3
- require 'glib/value'
4
- require 'glib/json_crawler'
5
-
6
- require 'glib/dynamic_text'
7
- require 'glib/crypt'
8
- require 'glib/test_helpers'
9
- require 'glib/mailer_tester'
1
+ require 'glib/version'
2
+ require 'glib/engine' if defined?(::Rails)
3
+ require 'glib/value'
4
+ require 'glib/json_crawler'
5
+
6
+ require 'glib/dynamic_text'
7
+ require 'glib/crypt'
8
+ require 'glib/test_helpers'
9
+ require 'glib/mailer_tester'
@@ -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,11 +1,11 @@
1
- require_relative './json_crawler/http'
2
- require_relative './json_crawler/router'
3
- require_relative './json_crawler/action_crawler'
4
- require_relative './json_crawler/coverage'
5
-
6
- require_relative './json_crawler/action_crawlers/nav_initiate'
7
- require_relative './json_crawler/action_crawlers/windows_open'
8
- require_relative './json_crawler/action_crawlers/action_http'
9
- require_relative './json_crawler/action_crawlers/forms_submit'
10
- require_relative './json_crawler/action_crawlers/menu'
11
- require_relative './json_crawler/action_crawlers/run_multiple'
1
+ require_relative './json_crawler/http'
2
+ require_relative './json_crawler/router'
3
+ require_relative './json_crawler/action_crawler'
4
+ require_relative './json_crawler/coverage'
5
+
6
+ require_relative './json_crawler/action_crawlers/nav_initiate'
7
+ require_relative './json_crawler/action_crawlers/windows_open'
8
+ require_relative './json_crawler/action_crawlers/action_http'
9
+ require_relative './json_crawler/action_crawlers/forms_submit'
10
+ require_relative './json_crawler/action_crawlers/menu'
11
+ require_relative './json_crawler/action_crawlers/run_multiple'
@@ -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
@@ -1,33 +1,33 @@
1
- module Glib
2
- module JsonCrawler
3
- class WindowsOpen < ActionCrawler
4
- def initialize(http, args, action)
5
- @http = http
6
-
7
- if (url = args['url'])
8
- json = @http.get(url, action, args.except('url'))
9
-
10
- unless json.nil?
11
- crawl json['header']&.[]('childViews')
12
- crawl json['body']&.[]('childViews')
13
- crawl json['footer']&.[]('childViews')
14
-
15
- json['rightButtons']&.each do |button|
16
- if button['buttons'].present?
17
- button['buttons'].each do |inner_button|
18
- click inner_button
19
- end
20
- else
21
- click button
22
- end
23
- end
24
-
25
- if (on_load = (args.fetch('onLoad', nil)))
26
- perform(on_load)
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class WindowsOpen < ActionCrawler
4
+ def initialize(http, args, action)
5
+ @http = http
6
+
7
+ if (url = args['url'])
8
+ json = @http.get(url, action, args.except('url'))
9
+
10
+ unless json.nil?
11
+ crawl json['header']&.[]('childViews')
12
+ crawl json['body']&.[]('childViews')
13
+ crawl json['footer']&.[]('childViews')
14
+
15
+ json['rightButtons']&.each do |button|
16
+ if button['buttons'].present?
17
+ button['buttons'].each do |inner_button|
18
+ click inner_button
19
+ end
20
+ else
21
+ click button
22
+ end
23
+ end
24
+
25
+ if (on_load = (args.fetch('onLoad', nil)))
26
+ perform(on_load)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end