ree_lib 1.0.39 → 1.0.41

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -1
  3. data/lib/ree_lib/.vscode-ree/templates/spec_template.rb +1 -1
  4. data/lib/ree_lib/Packages.schema.json +4 -0
  5. data/lib/ree_lib/packages/.vscode-ree/templates/spec_template.rb +1 -1
  6. data/lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb +28 -70
  7. data/lib/ree_lib/packages/ree_actions/package/ree_actions.rb +1 -2
  8. data/lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb +34 -65
  9. data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/group_by_spec.rb +1 -1
  10. data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/index_by_spec.rb +1 -1
  11. data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_array.rb +57 -0
  12. data/lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb +73 -0
  13. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/build_sqlite_connection_spec.rb +1 -1
  14. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/one_to_many_spec.rb +2 -2
  15. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/one_to_one_spec.rb +2 -2
  16. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/persist_assoc_spec.rb +2 -2
  17. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb +72 -0
  18. data/lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_jsonb_spec.rb +94 -0
  19. data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/in_default_time_zone_spec.rb +1 -1
  20. data/lib/ree_lib/packages/ree_dto/spec/ree_dto/entity_dsl_spec.rb +1 -1
  21. data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/transform_values_spec.rb +1 -1
  22. data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/from_json_spec.rb +1 -1
  23. data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/to_json_spec.rb +1 -1
  24. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/appender_spec.rb +1 -1
  25. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/file_appender_spec.rb +3 -3
  26. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/rollbar_appender_spec.rb +1 -1
  27. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/stdout_appender_spec.rb +1 -1
  28. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/beans/logger_spec.rb +2 -2
  29. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/colorized_formatter_spec.rb +10 -7
  30. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/default_formatter_spec.rb +1 -1
  31. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/formatter_spec.rb +1 -1
  32. data/lib/ree_lib/packages/ree_logger/spec/ree_logger/multi_logger_spec.rb +1 -1
  33. data/lib/ree_lib/packages/ree_migrator/spec/ree_migrator/functions/apply_migration_spec.rb +1 -1
  34. data/lib/ree_lib/packages/ree_migrator/spec/ree_migrator/functions/apply_migrations_spec.rb +1 -1
  35. data/lib/ree_lib/packages/ree_migrator/spec/ree_migrator/functions/migrate_db_spec.rb +1 -1
  36. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/deep_dup_spec.rb +2 -2
  37. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/deep_freeze_spec.rb +1 -1
  38. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/dump_as_json_spec.rb +1 -1
  39. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/is_blank_spec.rb +1 -1
  40. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/not_blank_spec.rb +1 -1
  41. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/to_hash_spec.rb +1 -1
  42. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/to_obj_spec.rb +8 -8
  43. data/lib/ree_lib/packages/ree_roda/Package.schema.json +14 -7
  44. data/lib/ree_lib/packages/ree_roda/package/ree_roda/plugins/ree_routes.rb +231 -0
  45. data/lib/ree_lib/packages/ree_roda/package/ree_roda/services/{build_action_errors.rb → build_route_errors.rb} +5 -5
  46. data/lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_routing_tree.rb +144 -0
  47. data/lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_swagger_from_routes.rb +54 -0
  48. data/lib/ree_lib/packages/ree_roda/package/ree_roda.rb +2 -2
  49. data/lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/{build_action_errors.schema.json → build_route_errors.schema.json} +5 -5
  50. data/lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/build_routing_tree.schema.json +28 -0
  51. data/lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/{build_swagger_from_actions.schema.json → build_swagger_from_routes.schema.json} +7 -7
  52. data/lib/ree_lib/packages/ree_roda/spec/ree_roda/app_spec.rb +141 -7
  53. data/lib/ree_lib/packages/ree_roda/spec/ree_roda/services/build_routing_tree_spec.rb +261 -0
  54. data/lib/ree_lib/packages/ree_routes/.gitignore +0 -0
  55. data/lib/ree_lib/packages/ree_routes/.rspec +2 -0
  56. data/lib/ree_lib/packages/ree_routes/Package.schema.json +20 -0
  57. data/lib/ree_lib/packages/ree_routes/bin/console +5 -0
  58. data/lib/ree_lib/packages/ree_routes/package/ree_routes/dsl.rb +102 -0
  59. data/lib/ree_lib/packages/ree_routes/package/ree_routes/route.rb +10 -0
  60. data/lib/ree_lib/packages/{ree_actions/package/ree_actions/action_builder.rb → ree_routes/package/ree_routes/route_builder.rb} +15 -15
  61. data/lib/ree_lib/packages/ree_routes/package/ree_routes.rb +9 -0
  62. data/lib/ree_lib/packages/ree_routes/spec/package_schema_spec.rb +14 -0
  63. data/lib/ree_lib/packages/ree_routes/spec/ree_routes/dsl_spec.rb +93 -0
  64. data/lib/ree_lib/packages/ree_routes/spec/spec_helper.rb +3 -0
  65. data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/safe_join_spec.rb +1 -1
  66. data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/to_sentence_spec.rb +1 -1
  67. data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_password_spec.rb +1 -1
  68. data/lib/ree_lib/version.rb +1 -1
  69. metadata +39 -11
  70. data/lib/ree_lib/packages/ree_actions/package/ree_actions/action.rb +0 -10
  71. data/lib/ree_lib/packages/ree_actions/package/ree_actions/action_dsl.rb +0 -60
  72. data/lib/ree_lib/packages/ree_actions/spec/ree_actions/action_dsl_spec.rb +0 -62
  73. data/lib/ree_lib/packages/ree_roda/package/ree_roda/plugins/ree_actions.rb +0 -150
  74. data/lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_swagger_from_actions.rb +0 -55
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.39
4
+ version: 1.0.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-22 00:00:00.000000000 Z
11
+ date: 2023-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
180
  version: 1.4.1
181
+ - !ruby/object:Gem::Dependency
182
+ name: warden
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 1.2.9
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 1.2.9
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: timecop
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -244,12 +258,8 @@ files:
244
258
  - lib/ree_lib/packages/ree_actions/Package.schema.json
245
259
  - lib/ree_lib/packages/ree_actions/bin/console
246
260
  - lib/ree_lib/packages/ree_actions/package/ree_actions.rb
247
- - lib/ree_lib/packages/ree_actions/package/ree_actions/action.rb
248
- - lib/ree_lib/packages/ree_actions/package/ree_actions/action_builder.rb
249
- - lib/ree_lib/packages/ree_actions/package/ree_actions/action_dsl.rb
250
261
  - lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb
251
262
  - lib/ree_lib/packages/ree_actions/spec/package_schema_spec.rb
252
- - lib/ree_lib/packages/ree_actions/spec/ree_actions/action_dsl_spec.rb
253
263
  - lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb
254
264
  - lib/ree_lib/packages/ree_actions/spec/spec_helper.rb
255
265
  - lib/ree_lib/packages/ree_array/.gitignore
@@ -292,6 +302,8 @@ files:
292
302
  - lib/ree_lib/packages/ree_dao/package/ree_dao/functions/one_to_many.rb
293
303
  - lib/ree_lib/packages/ree_dao/package/ree_dao/functions/one_to_one.rb
294
304
  - lib/ree_lib/packages/ree_dao/package/ree_dao/functions/persist_assoc.rb
305
+ - lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_array.rb
306
+ - lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb
295
307
  - lib/ree_lib/packages/ree_dao/schemas/ree_dao/beans/connections.schema.json
296
308
  - lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_connection.schema.json
297
309
  - lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_dao.schema.json
@@ -306,6 +318,8 @@ files:
306
318
  - lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/one_to_many_spec.rb
307
319
  - lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/one_to_one_spec.rb
308
320
  - lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/persist_assoc_spec.rb
321
+ - lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
322
+ - lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_jsonb_spec.rb
309
323
  - lib/ree_lib/packages/ree_dao/spec/spec_helper.rb
310
324
  - lib/ree_lib/packages/ree_date/.gitignore
311
325
  - lib/ree_lib/packages/ree_date/.rspec
@@ -1095,17 +1109,31 @@ files:
1095
1109
  - lib/ree_lib/packages/ree_roda/bin/console
1096
1110
  - lib/ree_lib/packages/ree_roda/package/ree_roda.rb
1097
1111
  - lib/ree_lib/packages/ree_roda/package/ree_roda/app.rb
1098
- - lib/ree_lib/packages/ree_roda/package/ree_roda/plugins/ree_actions.rb
1099
1112
  - lib/ree_lib/packages/ree_roda/package/ree_roda/plugins/ree_logger.rb
1100
- - lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_action_errors.rb
1101
- - lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_swagger_from_actions.rb
1113
+ - lib/ree_lib/packages/ree_roda/package/ree_roda/plugins/ree_routes.rb
1114
+ - lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_route_errors.rb
1115
+ - lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_routing_tree.rb
1116
+ - lib/ree_lib/packages/ree_roda/package/ree_roda/services/build_swagger_from_routes.rb
1102
1117
  - lib/ree_lib/packages/ree_roda/package/ree_roda/services/status_from_error.rb
1103
- - lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/build_action_errors.schema.json
1104
- - lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/build_swagger_from_actions.schema.json
1118
+ - lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/build_route_errors.schema.json
1119
+ - lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/build_routing_tree.schema.json
1120
+ - lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/build_swagger_from_routes.schema.json
1105
1121
  - lib/ree_lib/packages/ree_roda/schemas/ree_roda/services/status_from_error.schema.json
1106
1122
  - lib/ree_lib/packages/ree_roda/spec/package_schema_spec.rb
1107
1123
  - lib/ree_lib/packages/ree_roda/spec/ree_roda/app_spec.rb
1124
+ - lib/ree_lib/packages/ree_roda/spec/ree_roda/services/build_routing_tree_spec.rb
1108
1125
  - lib/ree_lib/packages/ree_roda/spec/spec_helper.rb
1126
+ - lib/ree_lib/packages/ree_routes/.gitignore
1127
+ - lib/ree_lib/packages/ree_routes/.rspec
1128
+ - lib/ree_lib/packages/ree_routes/Package.schema.json
1129
+ - lib/ree_lib/packages/ree_routes/bin/console
1130
+ - lib/ree_lib/packages/ree_routes/package/ree_routes.rb
1131
+ - lib/ree_lib/packages/ree_routes/package/ree_routes/dsl.rb
1132
+ - lib/ree_lib/packages/ree_routes/package/ree_routes/route.rb
1133
+ - lib/ree_lib/packages/ree_routes/package/ree_routes/route_builder.rb
1134
+ - lib/ree_lib/packages/ree_routes/spec/package_schema_spec.rb
1135
+ - lib/ree_lib/packages/ree_routes/spec/ree_routes/dsl_spec.rb
1136
+ - lib/ree_lib/packages/ree_routes/spec/spec_helper.rb
1109
1137
  - lib/ree_lib/packages/ree_string/.gitignore
1110
1138
  - lib/ree_lib/packages/ree_string/.rspec
1111
1139
  - lib/ree_lib/packages/ree_string/Package.schema.json
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class ReeActions::Action
4
- attr_accessor :summary, :request_method, :serializer, :respond_to,
5
- :sections, :action, :warden_scope, :path
6
-
7
- def valid?
8
- !@action.nil? && !summary.nil? && !warden_scope.nil?
9
- end
10
- end
@@ -1,60 +0,0 @@
1
- module ReeActions
2
- module ActionDSL
3
- def self.included(base)
4
- base.extend(ClassMethods)
5
- base.include(ReeMapper::DSL)
6
- end
7
-
8
- def self.extended(base)
9
- base.extend(ClassMethods)
10
- base.include(ReeMapper::DSL)
11
- end
12
-
13
- module ClassMethods
14
- include Ree::Contracts::Core
15
- include Ree::Contracts::ArgContracts
16
-
17
- def action(name, &proc)
18
- dsl = Ree::ObjectDsl.new(
19
- Ree.container.packages_facade, name, self, :fn
20
- )
21
-
22
- dsl.instance_exec(&proc) if block_given?
23
- dsl.tags(["action"])
24
- dsl.freeze(false)
25
- dsl.object.set_as_compiled(false)
26
-
27
- Ree.container.compile(dsl.package, name)
28
- end
29
-
30
- def method_added(method_name)
31
- return super if method_name != :call
32
-
33
- if @__original_call_defined
34
- remove_instance_variable(:@__original_call_defined)
35
- return
36
- end
37
-
38
- @__original_call_defined = true
39
-
40
- alias_method(:__original_call, :call)
41
-
42
- define_method :call do |user_access, attrs|
43
- if self.class.const_defined?(:ActionCaster)
44
- caster = self.class.const_get(:ActionCaster)
45
-
46
- if !caster.respond_to?(:cast)
47
- raise ArgumentError.new("ActionCaster does not respond to `cast` method")
48
- end
49
-
50
- __original_call(user_access, caster.cast(attrs))
51
- else
52
- __original_call(user_access, attrs)
53
- end
54
- end
55
-
56
- nil
57
- end
58
- end
59
- end
60
- end
@@ -1,62 +0,0 @@
1
- package_require("ree_actions/action_dsl")
2
-
3
- RSpec.describe ReeActions::ActionDSL, type: [:autoclean] do
4
- before do
5
- Ree.enable_irb_mode
6
- end
7
-
8
- after do
9
- Ree.disable_irb_mode
10
- end
11
-
12
- it {
13
- module ReeActionsTest
14
- include Ree::PackageDSL
15
-
16
- package do
17
- depends_on :ree_mapper
18
- end
19
-
20
- class TestAction
21
- include ReeActions::ActionDSL
22
-
23
- action :test_action
24
-
25
- ActionCaster = build_mapper.use(:cast) do
26
- integer :user_id
27
- end
28
-
29
- contract Any, ActionCaster.dto(:cast) => Integer
30
- def call(user_access, attrs)
31
- attrs[:user_id]
32
- end
33
- end
34
- end
35
-
36
- result = ReeActionsTest::TestAction.new.call('user_access', {user_id: 1})
37
- expect(result).to eq(1)
38
- }
39
-
40
- it {
41
- module ReeActionsTest
42
- include Ree::PackageDSL
43
-
44
- package do
45
- end
46
-
47
- class TestAction2
48
- include ReeActions::ActionDSL
49
-
50
- action :test_action2
51
-
52
- contract Any, Hash => Integer
53
- def call(user_access, attrs)
54
- attrs[:user_id]
55
- end
56
- end
57
- end
58
-
59
- result = ReeActionsTest::TestAction2.new.call('user_access', {user_id: 1})
60
- expect(result).to eq(1)
61
- }
62
- end
@@ -1,150 +0,0 @@
1
- class Roda
2
- module RodaPlugins
3
- module ReeActions
4
- def self.load_dependencies(app, opts = {})
5
- package_require("ree_roda/services/build_swagger_from_actions")
6
- package_require("ree_json/functions/to_json")
7
- package_require("ree_hash/functions/transform_values")
8
- package_require("ree_object/functions/not_blank")
9
-
10
- app.plugin :all_verbs
11
- end
12
-
13
- def self.configure(app, opts = {})
14
- app.opts[:ree_actions_before] = opts[:before] if opts[:before]
15
- end
16
-
17
- module ClassMethods
18
- def ree_actions(actions, swagger_title: "", swagger_description: "",
19
- swagger_version: "", swagger_url: "", api_url: "")
20
- @ree_actions ||= []
21
- @ree_actions += actions
22
-
23
- opts[:ree_actions_swagger_title] = swagger_title
24
- opts[:ree_actions_swagger_description] = swagger_description
25
- opts[:ree_actions_swagger_version] = swagger_version
26
- opts[:ree_actions_swagger_url] = swagger_url
27
- opts[:ree_actions_api_url] = api_url
28
-
29
- opts[:ree_actions_swagger] = ReeRoda::BuildSwaggerFromActions.new.call(
30
- @ree_actions,
31
- opts[:ree_actions_swagger_title],
32
- opts[:ree_actions_swagger_description],
33
- opts[:ree_actions_swagger_version],
34
- opts[:ree_actions_api_url]
35
- )
36
-
37
- build_actions_proc
38
- nil
39
- end
40
-
41
- private
42
-
43
- def build_actions_proc
44
- list = []
45
- context = self
46
-
47
- return list if @ree_actions.nil? || @ree_actions.empty?
48
-
49
- if context.opts[:ree_actions_swagger_url]
50
- list << Proc.new do |r|
51
- r.get context.opts[:ree_actions_swagger_url] do
52
- r.json do
53
- response.status = 200
54
- ReeJson::ToJson.new.call(context.opts[:ree_actions_swagger])
55
- end
56
- end
57
- end
58
- end
59
-
60
- @ree_actions.each do |action|
61
- route = []
62
- route_args = []
63
-
64
- action.path.split("/").each do |part|
65
- if part.start_with?(":")
66
- route << String
67
- route_args << part.gsub(":", "")
68
- else
69
- route << part
70
- end
71
- end
72
-
73
- list << Proc.new do |r|
74
- r.send(action.request_method, *route) do |*args|
75
- r.send(action.respond_to) do
76
- env["warden"].authenticate!(scope: action.warden_scope)
77
-
78
- if context.opts[:ree_actions_before]
79
- self.instance_exec(@_request, action.warden_scope, &scope.opts[:ree_actions_before])
80
- end
81
-
82
- # TODO: implement me when migration to roda DSL happens
83
- # if action.before; end
84
-
85
- route_args.each_with_index do |arg, index|
86
- r.params["#{arg}"] = args[index]
87
- end
88
-
89
- params = r.params
90
-
91
- if r.body
92
- body = begin
93
- JSON.parse(r.body.read)
94
- rescue => e
95
- {}
96
- end
97
-
98
- params = params.merge(body)
99
- end
100
-
101
- not_blank = ReeObject::NotBlank.new
102
-
103
- filtered_params = ReeHash::TransformValues.new.call(params) do |k, v|
104
- v.is_a?(Array) ? v.select { not_blank.call(_1) } : v
105
- end
106
-
107
- accessor = env["warden"].user(action.warden_scope)
108
- action_result = action.action.klass.new.call(accessor, filtered_params)
109
-
110
- if action.serializer
111
- serialized_result = action.serializer.klass.new.serialize(action_result)
112
- else
113
- serialized_result = {}
114
- end
115
-
116
- case action.request_method
117
- when :post
118
- response.status = 201
119
- ReeJson::ToJson.new.call(serialized_result)
120
- when :put, :delete, :patch
121
- response.status = 204
122
- ""
123
- else
124
- response.status = 200
125
- ReeJson::ToJson.new.call(serialized_result)
126
- end
127
- end
128
- end
129
- end
130
- end
131
-
132
- opts[:ree_actions_proc] = list
133
- end
134
- end
135
-
136
- module RequestMethods
137
- def ree_actions
138
- if scope.opts[:ree_actions_proc]
139
- scope.opts[:ree_actions_proc].each do |request_proc|
140
- self.instance_exec(self, &request_proc)
141
- end
142
- end
143
- nil
144
- end
145
- end
146
- end
147
-
148
- register_plugin(:ree_actions, Roda::RodaPlugins::ReeActions)
149
- end
150
- end
@@ -1,55 +0,0 @@
1
- class ReeRoda::BuildSwaggerFromActions
2
- include Ree::FnDSL
3
-
4
- fn :build_swagger_from_actions do
5
- link :build_action_errors
6
- link :build_schema, from: :ree_swagger
7
- link "ree_swagger/dto/endpoint_dto", -> { EndpointDto }
8
- end
9
-
10
- contract(ArrayOf[ReeActions::Action], String, String, String, String => Hash)
11
- def call(actions, title, description, version, api_url)
12
- endpoints = actions.map do |action|
13
- method_decorator = Ree::Contracts.get_method_decorator(
14
- action.action.klass, :call, scope: :instance
15
- )
16
-
17
- response_status = case action.request_method
18
- when :post
19
- 201
20
- when :put, :delete, :patch
21
- 204
22
- else
23
- 200
24
- end
25
-
26
- caster = if action.action.klass.const_defined?(:ActionCaster)
27
- action.action.klass.const_get(:ActionCaster)
28
- end
29
-
30
- EndpointDto.new(
31
- method: action.request_method,
32
- sections: action.sections,
33
- respond_to: action.respond_to,
34
- path: action.path.start_with?("/") ? action.path : "/#{action.path}",
35
- caster: caster,
36
- serializer: action.serializer&.klass&.new,
37
- summary: action.summary,
38
- authenticate: action.warden_scope != :visitor,
39
- description: method_decorator&.doc || "",
40
- response_status: response_status,
41
- response_description: nil,
42
- errors: build_action_errors(action)
43
- )
44
- end
45
-
46
- build_schema(
47
- title: title,
48
- description: description,
49
- version: version,
50
- api_url: api_url,
51
- endpoints: endpoints
52
- )
53
- end
54
- end
55
-