repost 0.3.0 → 0.3.5
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.
- checksums.yaml +4 -4
- data/lib/repost/action.rb +2 -2
- data/lib/repost/extend_controller.rb +16 -12
- data/lib/repost/senpai.rb +15 -3
- data/lib/repost/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a550b943057d547063df1b9a6775a89f112e997eb10dc892ad5288d6badc7d0a
|
4
|
+
data.tar.gz: '081133fd059196c4c7e071e183333400e0ecddeca66e0c39467f16d10f84e489'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 379a30beab17dc0516de3551d6922e2f66243bb02e53e1ec589f25dea58035d843ddb65257b8048fefddef217e64f833caa79207ab67defc649d5f8dc884b198
|
7
|
+
data.tar.gz: 42f022dee1b7c95109e26d158ac1166635d16adea63fe3e8a88703e5e5084064fc86852ece2889c0eb9c3fd86a27c805e19187f33bc3c1f8068af2a90abc24b5
|
data/lib/repost/action.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
-
if defined?(Rails)
|
2
|
-
|
3
|
-
|
1
|
+
if defined?(Rails) && defined?(ActiveSupport)
|
2
|
+
ActiveSupport.on_load(:action_controller) do
|
3
|
+
class ::ActionController::Base
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
def repost(url, params: {}, options: {})
|
6
|
+
authenticity_token = form_authenticity_token if ['auto', :auto].include?(options[:authenticity_token])
|
7
|
+
render html: Repost::Senpai.perform(
|
8
|
+
url,
|
9
|
+
params: params,
|
10
|
+
options: options.merge({
|
11
|
+
authenticity_token: authenticity_token,
|
12
|
+
autosubmit_nonce: content_security_policy_nonce,
|
13
|
+
}.compact)
|
14
|
+
).html_safe
|
15
|
+
end
|
13
16
|
|
14
|
-
|
17
|
+
alias :redirect_post :repost
|
15
18
|
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
data/lib/repost/senpai.rb
CHANGED
@@ -12,6 +12,7 @@ module Repost
|
|
12
12
|
@charset = options.fetch(:charset, DEFAULT_CHARSET)
|
13
13
|
@form_id = options.fetch(:form_id, generated_form_id)
|
14
14
|
@autosubmit = options.fetch(:autosubmit, true)
|
15
|
+
@autosubmit_nonce = options.fetch(:autosubmit_nonce, nil)
|
15
16
|
@section_classes = options.dig(:decor, :section, :classes)
|
16
17
|
@section_html = options.dig(:decor, :section, :html)
|
17
18
|
@submit_classes = options.dig(:decor, :submit, :classes)
|
@@ -31,7 +32,7 @@ module Repost
|
|
31
32
|
|
32
33
|
attr_reader :url, :params, :options, :method, :form_id, :autosubmit,
|
33
34
|
:section_classes, :section_html, :submit_classes,
|
34
|
-
:submit_text, :authenticity_token, :charset
|
35
|
+
:submit_text, :authenticity_token, :charset, :autosubmit_nonce
|
35
36
|
|
36
37
|
def form_head
|
37
38
|
"<form id='#{form_id}' action='#{url}' method='#{method}' accept-charset='#{charset}'>"
|
@@ -39,12 +40,22 @@ module Repost
|
|
39
40
|
|
40
41
|
def form_body
|
41
42
|
inputs = params.map do |key, value|
|
42
|
-
|
43
|
+
form_input(key, value)
|
43
44
|
end
|
44
45
|
inputs.unshift(csrf_token) if authenticity_token
|
45
46
|
inputs.join
|
46
47
|
end
|
47
48
|
|
49
|
+
def form_input(key, value)
|
50
|
+
if value.is_a?(Hash)
|
51
|
+
value.map do |inner_key, inner_value|
|
52
|
+
form_input("#{key}[#{inner_key}]", inner_value)
|
53
|
+
end.join
|
54
|
+
else
|
55
|
+
"<input type='hidden' name='#{key}' value='#{value}'>"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
48
59
|
def form_footer
|
49
60
|
"</form>"
|
50
61
|
end
|
@@ -71,7 +82,8 @@ module Repost
|
|
71
82
|
end
|
72
83
|
|
73
84
|
def auto_submit_script
|
74
|
-
"
|
85
|
+
nonce_attr = %Q( nonce="#{autosubmit_nonce}") if autosubmit_nonce
|
86
|
+
"<script#{nonce_attr}>
|
75
87
|
document.getElementById('#{form_id}').submit();
|
76
88
|
</script>"
|
77
89
|
end
|
data/lib/repost/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YaroslavO
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0'
|
88
88
|
requirements: []
|
89
|
-
rubygems_version: 3.0.
|
89
|
+
rubygems_version: 3.0.8
|
90
90
|
signing_key:
|
91
91
|
specification_version: 4
|
92
92
|
summary: Gem implements Redirect using POST method
|