repost 0.2.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 037632e9b2ccf954175d35d6457de95a5bf4cf9ebf08425e15eb73b32289007d
4
+ data.tar.gz: 0dc79c9352f948fca3bd91c63c590bb99b650a2bf5e827b601515ef89563902f
5
+ SHA512:
6
+ metadata.gz: 0fefb0a56366f112a52b570904810247ccc23099ded831cc599ad29ad42efeaadba703db979dc9d660b0f59995bccf048771bcf611bd02e519447fc09dc100d3
7
+ data.tar.gz: d4fced12a946c072552cf9b5aafe4e6385073c247ded869b2eb747d05bd083e489b6ff374d0c3b23a4171da6b8587584ede97dbbfff992980f24b15e35c81411
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/lib/repost.rb ADDED
@@ -0,0 +1,9 @@
1
+ require "repost/version"
2
+ require "repost/action"
3
+ require "repost/senpai"
4
+ require "repost/extend_controller"
5
+
6
+ module Repost
7
+ class Error < StandardError; end
8
+ end
9
+
@@ -0,0 +1,6 @@
1
+ class Action
2
+ def self.perform(*args)
3
+ action = new(*args)
4
+ action.perform
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ if defined?(Rails)
2
+ class ::ActionController::Base
3
+
4
+ def repost(*args)
5
+ render html: Repost::Senpai.perform(*args).html_safe
6
+ end
7
+
8
+ alias :redirect_post :repost
9
+ end
10
+ end
@@ -0,0 +1,70 @@
1
+ module Repost
2
+ class Senpai < Action
3
+ DEFAULT_SUBMIT_BUTTON_TEXT = 'Continue'
4
+
5
+ def initialize(url, params: {}, options: {})
6
+ @url = url
7
+ @params = params
8
+ @options = options
9
+ @method = options[:method] || :post
10
+ @form_id = options[:form_id] || generated_form_id
11
+ @autosubmit = options.fetch(:autosubmit, true)
12
+ @section_classes = options.dig(:decor, :section, :classes)
13
+ @section_html = options.dig(:decor, :section, :html)
14
+ @submit_classes = options.dig(:decor, :submit, :classes)
15
+ @submit_text = options.dig(:decor, :submit, :text) || DEFAULT_SUBMIT_BUTTON_TEXT
16
+ end
17
+
18
+ def perform
19
+ compiled_body = if autosubmit
20
+ form_body << auto_submit_script << no_script
21
+ else
22
+ form_body << submit_section
23
+ end
24
+ form_head.concat(compiled_body, form_footer)
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :url, :params, :options, :method, :form_id, :autosubmit,
30
+ :section_classes, :section_html, :submit_classes, :submit_text
31
+
32
+ def form_body
33
+ inputs = params.map do |key, value|
34
+ "<input type='hidden' name='#{key}' value='#{value}'>"
35
+ end
36
+ inputs.join
37
+ end
38
+
39
+ def form_head
40
+ "<form id='#{form_id}' action='#{url}' method='#{method}'>"
41
+ end
42
+
43
+ def form_footer
44
+ "</form>"
45
+ end
46
+
47
+ def no_script
48
+ "<noscript>
49
+ #{submit_section}
50
+ </noscript>"
51
+ end
52
+
53
+ def submit_section
54
+ "<div class='#{section_classes}'>
55
+ #{section_html}
56
+ <input class='#{submit_classes}' type='submit' value='#{submit_text}'></input>
57
+ </div>"
58
+ end
59
+
60
+ def generated_form_id
61
+ "repost-#{Time.now.to_i}"
62
+ end
63
+
64
+ def auto_submit_script
65
+ "<script>
66
+ document.getElementById('#{form_id}').submit();
67
+ </script>"
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,3 @@
1
+ module Repost
2
+ VERSION = "0.2.5"
3
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: repost
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.5
5
+ platform: ruby
6
+ authors:
7
+ - YaroslavO
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-01-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 3.0.1
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '3.0'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 3.0.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: simplecov
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.16.1
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.16.1
89
+ description: Later
90
+ email:
91
+ - osyaroslav@gmail.com
92
+ executables: []
93
+ extensions: []
94
+ extra_rdoc_files: []
95
+ files:
96
+ - Rakefile
97
+ - lib/repost.rb
98
+ - lib/repost/action.rb
99
+ - lib/repost/extend_controller.rb
100
+ - lib/repost/senpai.rb
101
+ - lib/repost/version.rb
102
+ homepage: https://vergilet.github.io/repost/
103
+ licenses:
104
+ - MIT
105
+ metadata:
106
+ homepage_uri: https://vergilet.github.io/repost/
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ requirements: []
122
+ rubyforge_project:
123
+ rubygems_version: 2.7.8
124
+ signing_key:
125
+ specification_version: 4
126
+ summary: Gem implements Redirect using POST method
127
+ test_files: []