redirect_code_generator 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8d40e38556846c2530c58303c51369dc731fd33
4
- data.tar.gz: 8cf75b5d12d87525ebf9e0a94cadc26381d060bd
3
+ metadata.gz: bb3b5ce617aeb53103a1f93dfa01154e46133dde
4
+ data.tar.gz: 72d48d2b52d6f26f271bbb54dc7b516ed38a7591
5
5
  SHA512:
6
- metadata.gz: ec79fdc6c0fea74be355f293491a890902459dc0649f13264d251ef15fbf567e77ea0b45fd33df66cf5f339c42f5554f7fe8a8af74fc89843c78aa764af51889
7
- data.tar.gz: 7667527be387eb74f9c00d8a441d3c113afbbef034775ccbbd8453b324ed26704796a34ea216c889e0153a2ddb0603fe5d7e2dfe7d7d57bff0605d7bdeea5903
6
+ metadata.gz: ac183ba6f2af987ccd14f8f987b1992d701d91e37ef3d3f549f3f4ff41599cda43122cd05be778dfd772bcbb9e63b9424979ce715c3de3ba9120fe9db8fa952c
7
+ data.tar.gz: e4e5d7d585657a69b0348fa4d354b48056f09af721fc94bd7a03964bdc0b5627db0bcf388eda9dec5d3282bb70ccbf48b4e55f850b23e4bd5961aef5c786eb68
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /.bundle/
2
+ /.idea/
2
3
  /.yardoc
3
4
  /Gemfile.lock
4
5
  /_yardoc/
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # RedirectCodeGenerator
2
2
 
3
- RedirectCodeGenerator creates Apache redirect code
3
+ RedirectCodeGenerator creates Apache redirect code.
4
4
 
5
5
  [![Build Status](https://travis-ci.org/tsmsogn/redirect_code_generator.svg?branch=master)](https://travis-ci.org/tsmsogn/redirect_code_generator)
6
6
 
@@ -11,7 +11,7 @@ $ ./create_apache_redirect_code /old_dir /new_dir
11
11
  # 301 /old_dir -> /new_dir
12
12
  <IfModule mod_rewrite.c>
13
13
  RewriteEngine On
14
- RewriteRule ^/old_dir$ /new_dir? [R=301,L]
14
+ RewriteRule ^/?old_dir$ /new_dir? [R=301,L]
15
15
  </IfModule>
16
16
  ```
17
17
 
@@ -0,0 +1,16 @@
1
+ require 'uri'
2
+
3
+
4
+ module RedirectCodeGenerator
5
+ module ApacheRewriteNormalize
6
+ def to_rewrite_rule_path(path)
7
+ path.gsub(/^\//, "/?")
8
+ end
9
+
10
+ def escape(str)
11
+ Regexp.escape(str)
12
+ end
13
+
14
+ module_function :to_rewrite_rule_path, :escape
15
+ end
16
+ end
@@ -2,24 +2,24 @@ module RedirectCodeGenerator
2
2
  module ERBTemplates
3
3
 
4
4
  APACHE = <<CODE
5
- # <%= permanent? ? 301 : 302 %> <%= old %> -> <%= new %>
5
+ # <%= redirect_http_status_code %> <%= old %> -> <%= new %>
6
6
  <IfModule mod_rewrite.c>
7
7
  RewriteEngine On
8
- <% if default_port? && uri.scheme %>
9
- RewriteCond %{HTTPS} <% if uri.scheme == 'https'%>on<% else %>off<% end %>
8
+ <% if default_port? && old_uri.scheme %>
9
+ RewriteCond %{HTTPS} <% if old_uri.scheme == 'https'%>on<% else %>off<% end %>
10
10
  <% end %>
11
- <% if uri.host %>
12
- RewriteCond %{HTTP_HOST} ^<%= escape? ? escape(uri.host) : uri.host %>$
11
+ <% if old_uri.host %>
12
+ RewriteCond %{HTTP_HOST} ^<%= escape? ? escape(old_uri.host) : old_uri.host %>$
13
13
  <% end %>
14
- <% if !default_port? && uri.scheme %>
15
- RewriteCond %{SERVER_PORT} <%= uri.port %>
14
+ <% if !default_port? && old_uri.scheme %>
15
+ RewriteCond %{SERVER_PORT} <%= old_uri.port %>
16
16
  <% end %>
17
- <% if uri.query %>
18
- <% uri.query.split('&').each do |param| %>
17
+ <% if old_uri.query %>
18
+ <% old_uri.query.split('&').each do |param| %>
19
19
  RewriteCond %{QUERY_STRING} (^|&)<%= param %>($|&)
20
20
  <% end %>
21
21
  <% end %>
22
- RewriteRule ^<%= escape? ? escape(uri.path) : uri.path %>$ <%= new %>? [R=<%= permanent? ? 301 : 302 %>,L]
22
+ RewriteRule ^<%= rewrite_rule_source_path %>$ <%= new %>? [R=<%= redirect_http_status_code %>,L]
23
23
  </IfModule>
24
24
  CODE
25
25
 
@@ -1,8 +1,10 @@
1
1
  require "redirect_code_generator/generator/generator"
2
+ require "redirect_code_generator/apache_rewrite_normalize"
2
3
 
3
4
  module RedirectCodeGenerator
4
5
  module Generator
5
6
  class Apache < Generator
7
+ include ApacheRewriteNormalize
6
8
  attr_reader :old, :new
7
9
 
8
10
  def initialize(old, new, permanent = true, escape = true)
@@ -14,8 +16,12 @@ module RedirectCodeGenerator
14
16
  erb.result(binding)
15
17
  end
16
18
 
17
- def uri
18
- @uri ||= URI.parse(@old)
19
+ def old_uri
20
+ @old_uri ||= URI.parse(@old)
21
+ end
22
+
23
+ def new_uri
24
+ @new_uri ||= URI.parse(@new)
19
25
  end
20
26
 
21
27
  def permanent?
@@ -26,10 +32,28 @@ module RedirectCodeGenerator
26
32
  @escape
27
33
  end
28
34
 
35
+ def rewrite_rule_source_path
36
+ path = old_uri.path
37
+ if escape?
38
+ path = escape(path)
39
+ end
40
+
41
+ to_rewrite_rule_path(path)
42
+ end
43
+
44
+ def redirect_http_status_code
45
+ case permanent?
46
+ when true then
47
+ 301
48
+ when false then
49
+ 302
50
+ end
51
+ end
52
+
29
53
  def default_port?
30
- if uri.scheme == 'http' && uri.port == 80
54
+ if old_uri.scheme == 'http' && old_uri.port == 80
31
55
  true
32
- elsif uri.scheme == 'https' && uri.port == 443
56
+ elsif old_uri.scheme == 'https' && old_uri.port == 443
33
57
  true
34
58
  else
35
59
  false
@@ -1,11 +1,9 @@
1
1
  require "uri"
2
2
  require "redirect_code_generator/erb_factory"
3
- require "redirect_code_generator/sanitizer"
4
3
 
5
4
  module RedirectCodeGenerator
6
5
  module Generator
7
6
  class Generator
8
- include Sanitizer
9
7
 
10
8
  def initialize(options = {})
11
9
  end
@@ -1,3 +1,3 @@
1
1
  module RedirectCodeGenerator
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redirect_code_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - tsmsogn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-24 00:00:00.000000000 Z
11
+ date: 2019-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,12 +72,12 @@ files:
72
72
  - bin/setup
73
73
  - create_apache_redirect_code
74
74
  - lib/redirect_code_generator.rb
75
+ - lib/redirect_code_generator/apache_rewrite_normalize.rb
75
76
  - lib/redirect_code_generator/erb_factory.rb
76
77
  - lib/redirect_code_generator/erb_templates.rb
77
78
  - lib/redirect_code_generator/generator/apache.rb
78
79
  - lib/redirect_code_generator/generator/generator.rb
79
80
  - lib/redirect_code_generator/generator_factory.rb
80
- - lib/redirect_code_generator/sanitizer.rb
81
81
  - lib/redirect_code_generator/version.rb
82
82
  - redirect_code_generator.gemspec
83
83
  homepage: https://github.com/tsmsogn/redirect_code_generator
@@ -1,7 +0,0 @@
1
- module RedirectCodeGenerator
2
- module Sanitizer
3
- def escape(str)
4
- Regexp.escape(str)
5
- end
6
- end
7
- end