tarquinn 0.2.0 → 0.3.0

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +15 -3
  3. data/.gitignore +9 -0
  4. data/.rubocop.yml +29 -0
  5. data/.rubocop_todo.yml +13 -0
  6. data/Dockerfile +2 -2
  7. data/Gemfile +15 -0
  8. data/README.md +5 -1
  9. data/Rakefile +5 -0
  10. data/config/check_specs.yml +3 -0
  11. data/config/rubycritc.rb +12 -0
  12. data/config/yardstick.rb +13 -0
  13. data/config/yardstick.yml +33 -0
  14. data/lib/tarquinn/class_methods.rb +43 -12
  15. data/lib/tarquinn/condition/action_checker.rb +24 -7
  16. data/lib/tarquinn/condition/method_caller.rb +25 -8
  17. data/lib/tarquinn/condition/proc_runner.rb +18 -7
  18. data/lib/tarquinn/condition.rb +57 -4
  19. data/lib/tarquinn/controller.rb +56 -13
  20. data/lib/tarquinn/redirection_config.rb +92 -0
  21. data/lib/tarquinn/redirection_handler.rb +97 -0
  22. data/lib/tarquinn/request_handler.rb +61 -0
  23. data/lib/tarquinn/request_handler_builder.rb +84 -0
  24. data/lib/tarquinn/version.rb +3 -1
  25. data/lib/tarquinn.rb +74 -8
  26. data/spec/dummy/Rakefile +8 -0
  27. data/spec/dummy/app/assets/images/.keep +0 -0
  28. data/spec/dummy/app/assets/stylesheets/application.css +1 -0
  29. data/spec/dummy/app/channels/application_cable/channel.rb +6 -0
  30. data/spec/dummy/app/channels/application_cable/connection.rb +6 -0
  31. data/spec/dummy/app/controllers/application_controller.rb +4 -0
  32. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  33. data/spec/dummy/app/controllers/tarquinn/dummy_controller.rb +43 -0
  34. data/spec/dummy/app/controllers/tarquinn/dummy_route_controller.rb +37 -0
  35. data/spec/dummy/app/helpers/application_helper.rb +4 -0
  36. data/spec/dummy/app/jobs/application_job.rb +9 -0
  37. data/spec/dummy/app/mailers/application_mailer.rb +6 -0
  38. data/spec/dummy/app/models/application_record.rb +5 -0
  39. data/spec/dummy/app/models/concerns/.keep +0 -0
  40. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  41. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  42. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  43. data/spec/dummy/app/views/tarquinn/dummy_route/index.html +0 -0
  44. data/spec/dummy/app/views/tarquinn/dummy_route/new.html +0 -0
  45. data/spec/dummy/bin/rails +6 -0
  46. data/spec/dummy/bin/rake +6 -0
  47. data/spec/dummy/bin/setup +35 -0
  48. data/spec/dummy/config/application.rb +24 -0
  49. data/spec/dummy/config/boot.rb +7 -0
  50. data/spec/dummy/config/cable.yml +10 -0
  51. data/spec/dummy/config/database.yml +25 -0
  52. data/spec/dummy/config/environment.rb +7 -0
  53. data/spec/dummy/config/environments/development.rb +69 -0
  54. data/spec/dummy/config/environments/production.rb +89 -0
  55. data/spec/dummy/config/environments/test.rb +62 -0
  56. data/spec/dummy/config/initializers/content_security_policy.rb +26 -0
  57. data/spec/dummy/config/initializers/filter_parameter_logging.rb +10 -0
  58. data/spec/dummy/config/initializers/inflections.rb +17 -0
  59. data/spec/dummy/config/initializers/permissions_policy.rb +12 -0
  60. data/spec/dummy/config/locales/en.yml +33 -0
  61. data/spec/dummy/config/puma.rb +45 -0
  62. data/spec/dummy/config/routes.rb +8 -0
  63. data/spec/dummy/config/storage.yml +34 -0
  64. data/spec/dummy/config.ru +8 -0
  65. data/spec/dummy/db/schema.rb +16 -0
  66. data/spec/dummy/lib/assets/.keep +0 -0
  67. data/spec/dummy/log/.keep +0 -0
  68. data/spec/dummy/public/404.html +67 -0
  69. data/spec/dummy/public/422.html +67 -0
  70. data/spec/dummy/public/500.html +66 -0
  71. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  72. data/spec/dummy/public/apple-touch-icon.png +0 -0
  73. data/spec/dummy/public/favicon.ico +0 -0
  74. data/spec/dummy/storage/.keep +0 -0
  75. data/spec/dummy/tmp/.keep +0 -0
  76. data/spec/dummy/tmp/pids/.keep +0 -0
  77. data/spec/dummy/tmp/storage/.keep +0 -0
  78. data/spec/lib/tarquinn/condition/action_checker_spec.rb +4 -2
  79. data/spec/lib/tarquinn/condition/method_caller_spec.rb +5 -3
  80. data/spec/lib/tarquinn/condition/proc_runner_spec.rb +56 -4
  81. data/spec/lib/tarquinn/condition_spec.rb +53 -0
  82. data/spec/lib/tarquinn/controller_spec.rb +83 -10
  83. data/spec/lib/tarquinn/{config_spec.rb → redirection_config_spec.rb} +3 -1
  84. data/spec/lib/tarquinn/{handler_spec.rb → redirection_handler_spec.rb} +21 -3
  85. data/spec/lib/tarquinn/request_handler_builder_spec.rb +15 -0
  86. data/spec/lib/tarquinn/{engine_spec.rb → request_handler_spec.rb} +5 -3
  87. data/spec/lib/tarquinn_spec.rb +176 -13
  88. data/spec/spec_helper.rb +16 -6
  89. data/spec/support/shared_examples/config.rb +4 -2
  90. data/tarquinn.gemspec +8 -12
  91. metadata +73 -100
  92. data/lib/tarquinn/builder.rb +0 -28
  93. data/lib/tarquinn/concern.rb +0 -17
  94. data/lib/tarquinn/config.rb +0 -39
  95. data/lib/tarquinn/engine.rb +0 -31
  96. data/lib/tarquinn/handler.rb +0 -49
  97. data/spec/lib/tarquinn/builder_spec.rb +0 -13
  98. data/spec/support/models/tarquinn/dummy_controller.rb +0 -43
data/tarquinn.gemspec CHANGED
@@ -1,28 +1,24 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'tarquinn/version'
5
6
 
6
7
  Gem::Specification.new do |gem|
7
8
  gem.name = 'tarquinn'
8
9
  gem.version = Tarquinn::VERSION
9
- gem.authors = %w(DarthJee)
10
- gem.email = %w(darthjee@gmail.com)
10
+ gem.authors = %w[DarthJee]
11
+ gem.email = %w[darthjee@gmail.com]
11
12
  gem.homepage = 'https://github.com/darthje/tarquinn'
12
13
  gem.description = 'Gem for easy redirection controll'
13
14
  gem.summary = gem.description
15
+ gem.required_ruby_version = '>= 3.3.1'
14
16
 
15
17
  gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
16
- gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- gem.test_files = gem.files.grep(%r{^(test|gem|features)/})
18
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  gem.require_paths = ['lib']
19
20
 
20
21
  gem.add_runtime_dependency 'activesupport'
21
22
 
22
- gem.add_development_dependency 'bundler', '~> 1.16.1'
23
- gem.add_development_dependency 'rake', '~> 13.0.1'
24
- gem.add_development_dependency 'rspec', '~> 3.9.0'
25
- gem.add_development_dependency 'simplecov', '~> 0.17.1'
26
- gem.add_development_dependency 'pry', '~> 0.12.2'
27
- gem.add_development_dependency 'pry-nav', '~> 0.3.0'
23
+ gem.metadata['rubygems_mfa_required'] = 'true'
28
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tarquinn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DarthJee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2024-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,90 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 1.16.1
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 1.16.1
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 13.0.1
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 13.0.1
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 3.9.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 3.9.0
69
- - !ruby/object:Gem::Dependency
70
- name: simplecov
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.17.1
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.17.1
83
- - !ruby/object:Gem::Dependency
84
- name: pry
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.12.2
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.12.2
97
- - !ruby/object:Gem::Dependency
98
- name: pry-nav
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.3.0
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.3.0
111
27
  description: Gem for easy redirection controll
112
28
  email:
113
29
  - darthjee@gmail.com
@@ -118,42 +34,100 @@ files:
118
34
  - ".circleci/config.yml"
119
35
  - ".gitignore"
120
36
  - ".rspec"
37
+ - ".rubocop.yml"
38
+ - ".rubocop_todo.yml"
121
39
  - Dockerfile
122
40
  - Gemfile
123
41
  - LICENSE
124
42
  - README.md
125
43
  - Rakefile
44
+ - config/check_specs.yml
45
+ - config/rubycritc.rb
46
+ - config/yardstick.rb
47
+ - config/yardstick.yml
126
48
  - docker-compose.yml
127
49
  - lib/tarquinn.rb
128
- - lib/tarquinn/builder.rb
129
50
  - lib/tarquinn/class_methods.rb
130
- - lib/tarquinn/concern.rb
131
51
  - lib/tarquinn/condition.rb
132
52
  - lib/tarquinn/condition/action_checker.rb
133
53
  - lib/tarquinn/condition/method_caller.rb
134
54
  - lib/tarquinn/condition/proc_runner.rb
135
- - lib/tarquinn/config.rb
136
55
  - lib/tarquinn/controller.rb
137
- - lib/tarquinn/engine.rb
138
- - lib/tarquinn/handler.rb
56
+ - lib/tarquinn/redirection_config.rb
57
+ - lib/tarquinn/redirection_handler.rb
58
+ - lib/tarquinn/request_handler.rb
59
+ - lib/tarquinn/request_handler_builder.rb
139
60
  - lib/tarquinn/version.rb
140
- - spec/lib/tarquinn/builder_spec.rb
61
+ - spec/dummy/Rakefile
62
+ - spec/dummy/app/assets/images/.keep
63
+ - spec/dummy/app/assets/stylesheets/application.css
64
+ - spec/dummy/app/channels/application_cable/channel.rb
65
+ - spec/dummy/app/channels/application_cable/connection.rb
66
+ - spec/dummy/app/controllers/application_controller.rb
67
+ - spec/dummy/app/controllers/concerns/.keep
68
+ - spec/dummy/app/controllers/tarquinn/dummy_controller.rb
69
+ - spec/dummy/app/controllers/tarquinn/dummy_route_controller.rb
70
+ - spec/dummy/app/helpers/application_helper.rb
71
+ - spec/dummy/app/jobs/application_job.rb
72
+ - spec/dummy/app/mailers/application_mailer.rb
73
+ - spec/dummy/app/models/application_record.rb
74
+ - spec/dummy/app/models/concerns/.keep
75
+ - spec/dummy/app/views/layouts/application.html.erb
76
+ - spec/dummy/app/views/layouts/mailer.html.erb
77
+ - spec/dummy/app/views/layouts/mailer.text.erb
78
+ - spec/dummy/app/views/tarquinn/dummy_route/index.html
79
+ - spec/dummy/app/views/tarquinn/dummy_route/new.html
80
+ - spec/dummy/bin/rails
81
+ - spec/dummy/bin/rake
82
+ - spec/dummy/bin/setup
83
+ - spec/dummy/config.ru
84
+ - spec/dummy/config/application.rb
85
+ - spec/dummy/config/boot.rb
86
+ - spec/dummy/config/cable.yml
87
+ - spec/dummy/config/database.yml
88
+ - spec/dummy/config/environment.rb
89
+ - spec/dummy/config/environments/development.rb
90
+ - spec/dummy/config/environments/production.rb
91
+ - spec/dummy/config/environments/test.rb
92
+ - spec/dummy/config/initializers/content_security_policy.rb
93
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
94
+ - spec/dummy/config/initializers/inflections.rb
95
+ - spec/dummy/config/initializers/permissions_policy.rb
96
+ - spec/dummy/config/locales/en.yml
97
+ - spec/dummy/config/puma.rb
98
+ - spec/dummy/config/routes.rb
99
+ - spec/dummy/config/storage.yml
100
+ - spec/dummy/db/schema.rb
101
+ - spec/dummy/lib/assets/.keep
102
+ - spec/dummy/log/.keep
103
+ - spec/dummy/public/404.html
104
+ - spec/dummy/public/422.html
105
+ - spec/dummy/public/500.html
106
+ - spec/dummy/public/apple-touch-icon-precomposed.png
107
+ - spec/dummy/public/apple-touch-icon.png
108
+ - spec/dummy/public/favicon.ico
109
+ - spec/dummy/storage/.keep
110
+ - spec/dummy/tmp/.keep
111
+ - spec/dummy/tmp/pids/.keep
112
+ - spec/dummy/tmp/storage/.keep
141
113
  - spec/lib/tarquinn/condition/action_checker_spec.rb
142
114
  - spec/lib/tarquinn/condition/method_caller_spec.rb
143
115
  - spec/lib/tarquinn/condition/proc_runner_spec.rb
144
- - spec/lib/tarquinn/config_spec.rb
116
+ - spec/lib/tarquinn/condition_spec.rb
145
117
  - spec/lib/tarquinn/controller_spec.rb
146
- - spec/lib/tarquinn/engine_spec.rb
147
- - spec/lib/tarquinn/handler_spec.rb
118
+ - spec/lib/tarquinn/redirection_config_spec.rb
119
+ - spec/lib/tarquinn/redirection_handler_spec.rb
120
+ - spec/lib/tarquinn/request_handler_builder_spec.rb
121
+ - spec/lib/tarquinn/request_handler_spec.rb
148
122
  - spec/lib/tarquinn_spec.rb
149
123
  - spec/spec_helper.rb
150
- - spec/support/models/tarquinn/dummy_controller.rb
151
124
  - spec/support/shared_examples/config.rb
152
125
  - tarquinn.gemspec
153
126
  - tarquinn.jpg
154
127
  homepage: https://github.com/darthje/tarquinn
155
128
  licenses: []
156
- metadata: {}
129
+ metadata:
130
+ rubygems_mfa_required: 'true'
157
131
  post_install_message:
158
132
  rdoc_options: []
159
133
  require_paths:
@@ -162,15 +136,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
136
  requirements:
163
137
  - - ">="
164
138
  - !ruby/object:Gem::Version
165
- version: '0'
139
+ version: 3.3.1
166
140
  required_rubygems_version: !ruby/object:Gem::Requirement
167
141
  requirements:
168
142
  - - ">="
169
143
  - !ruby/object:Gem::Version
170
144
  version: '0'
171
145
  requirements: []
172
- rubyforge_project:
173
- rubygems_version: 2.7.6
146
+ rubygems_version: 3.5.9
174
147
  signing_key:
175
148
  specification_version: 4
176
149
  summary: Gem for easy redirection controll
@@ -1,28 +0,0 @@
1
- class Tarquinn::Builder
2
- def add_skip_action(redirection, *actions)
3
- config_for(redirection).add_skip_action(*actions)
4
- end
5
-
6
- def add_redirection_config(redirection, *methods, block)
7
- config_for(redirection).add_redirection_rules(*methods, &block)
8
- end
9
-
10
- def add_skip_config(redirection, *methods, block)
11
- config_for(redirection).add_skip_rules(*methods, &block)
12
- end
13
-
14
- def build(controller)
15
- controller = Tarquinn::Controller.new(controller)
16
- Tarquinn::Engine.new(configs, controller)
17
- end
18
-
19
- private
20
-
21
- def config_for(redirection)
22
- configs[redirection.to_sym] ||= Tarquinn::Config.new(redirection)
23
- end
24
-
25
- def configs
26
- @configs ||= {}
27
- end
28
- end
@@ -1,17 +0,0 @@
1
- module Tarquinn
2
- extend ActiveSupport::Concern
3
-
4
- included do
5
- before_action :perform_redirection
6
- end
7
-
8
- private
9
-
10
- def redirector_engine
11
- self.class.redirector_builder.build(self)
12
- end
13
-
14
- def perform_redirection
15
- redirector_engine.perform_redirect
16
- end
17
- end
@@ -1,39 +0,0 @@
1
- class Tarquinn::Config
2
- attr_accessor :redirect
3
-
4
- def initialize(redirect)
5
- @redirect = redirect
6
- end
7
-
8
- def add_skip_action(*routes)
9
- skip_blocks << block_routes(routes)
10
- end
11
-
12
- def add_redirection_rules(*methods, &block)
13
- redirection_blocks << block_methods(methods)
14
- redirection_blocks << Tarquinn::Condition::ProcRunner.new(&block) if block_given?
15
- end
16
-
17
- def add_skip_rules(*methods, &block)
18
- skip_blocks << block_methods(methods)
19
- skip_blocks << Tarquinn::Condition::ProcRunner.new(&block) if block_given?
20
- end
21
-
22
- def redirection_blocks
23
- @blocks ||= []
24
- end
25
-
26
- def skip_blocks
27
- @skip_blocks ||= []
28
- end
29
-
30
- private
31
-
32
- def block_methods(methods)
33
- Tarquinn::Condition::MethodCaller.new(methods)
34
- end
35
-
36
- def block_routes(routes)
37
- Tarquinn::Condition::ActionChecker.new(routes)
38
- end
39
- end
@@ -1,31 +0,0 @@
1
- class Tarquinn::Engine
2
- attr_reader :configs, :controller
3
-
4
- def initialize(configs, controller)
5
- @configs = configs
6
- @controller = controller
7
- end
8
-
9
- def perform_redirect
10
- return unless perform_redirect?
11
- handler_redirector.redirect
12
- end
13
-
14
- private
15
-
16
- def perform_redirect?
17
- handler_redirector.present?
18
- end
19
-
20
- def handler_redirector
21
- @handler_redirector ||= handlers.find(&:perform_redirect?)
22
- end
23
-
24
- def handlers
25
- @handlers ||= build_handlers
26
- end
27
-
28
- def build_handlers
29
- configs.map { |_, c| Tarquinn::Handler.new(c, controller) }
30
- end
31
- end
@@ -1,49 +0,0 @@
1
- class Tarquinn::Handler
2
- attr_accessor :config, :controller
3
-
4
- delegate :redirection_blocks, :skip_blocks, to: :config
5
-
6
- def initialize(config, controller)
7
- @config = config
8
- @controller = controller
9
- end
10
-
11
- def perform_redirect?
12
- return @perform_redirect unless @perform_redirect.nil?
13
- @perform_redirect = is_redirect?
14
- end
15
-
16
- def redirect
17
- controller.call(:redirect_to, redirect_path)
18
- end
19
-
20
- private
21
-
22
- def redirect_method
23
- config.redirect
24
- end
25
-
26
- def redirect_path
27
- return redirect_method unless controller.has_method?(redirect_method)
28
- controller.call redirect_method
29
- end
30
-
31
- def is_redirect?
32
- return false if blocks_skip_redirect?
33
- blocks_require_redirect?
34
- end
35
-
36
- def blocks_skip_redirect?
37
- check_blocks(skip_blocks)
38
- end
39
-
40
- def blocks_require_redirect?
41
- check_blocks(redirection_blocks)
42
- end
43
-
44
- def check_blocks(blocks)
45
- blocks.any? do |block|
46
- block.check?(controller)
47
- end
48
- end
49
- end
@@ -1,13 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Tarquinn::Builder do
4
- describe '#build' do
5
- let(:controller) do
6
- double('controller')
7
- end
8
-
9
- it do
10
- expect(subject.build(controller)).to be_a(Tarquinn::Engine)
11
- end
12
- end
13
- end
@@ -1,43 +0,0 @@
1
- class Tarquinn::DummyController
2
- def self.before_action(_)
3
- end
4
-
5
- include Tarquinn
6
-
7
- skip_redirection :redirection_path, :route_method
8
- redirection_rule :redirection_path, :should_redirect?
9
- skip_redirection_rule :redirection_path, :should_skip_redirect?
10
-
11
- def parse_request
12
- perform_redirection
13
- end
14
-
15
- private
16
-
17
- def params
18
- { action: 'show' }
19
- end
20
-
21
- def true
22
- true
23
- end
24
-
25
- def false
26
- false
27
- end
28
-
29
- def redirection_path
30
- '/path'
31
- end
32
-
33
- def redirect_to(_)
34
- end
35
-
36
- def should_redirect?
37
- true
38
- end
39
-
40
- def should_skip_redirect?
41
- false
42
- end
43
- end