seojs 0.0.4 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb6bc5e152cbdeb05722abe53fbe14d57c3d3b34
4
- data.tar.gz: e156d998e963b51e3f744c53b0891361273393a3
3
+ metadata.gz: 1ff41c44815271af27f16d7419a59a8820f270f0
4
+ data.tar.gz: edeb8d13e24cf062cd5faa3b0294668e103ef68a
5
5
  SHA512:
6
- metadata.gz: e4390a2d80cdca1c301d78e88c95bbbf453e5b4027bdb248c29a3137dc47baecb9876d50f9c9e746241c92be7f166a6b7ff3246d0c058e91bdd610b0e79acd16
7
- data.tar.gz: 3f97266ee32222f2cf58e46a055fbe97803bd25d0dfd67e95f7f58b90469e5e904b84140e062561a0d7c7178d7b9a92862227ea19bc5bd62ffab5ee885632a70
6
+ metadata.gz: 31b473f7b05c647e43102021e76fc1bebc8f699571c319c243af46838c677c49279609db7d8c6cd8e18e052801cea9ff5913cdd4d0c798e7172be15e10915ece
7
+ data.tar.gz: 94290ae8623c1cf71847442f7964063ffc25014e1c0a0106dffb714087dbfd8f8db8fcf7e1672106c548f4a0477654770c6b83bac5dcc0b8baa137bf23e7e203
data/Gemfile CHANGED
@@ -6,7 +6,6 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
 
9
- gem 'rack-rewrite'
10
9
  gem 'rack-proxy'
11
10
 
12
11
  group :development do
data/Gemfile.lock CHANGED
@@ -51,7 +51,6 @@ GEM
51
51
  rack (1.5.2)
52
52
  rack-proxy (0.5.1)
53
53
  rack
54
- rack-rewrite (1.4.01)
55
54
  rake (10.1.0)
56
55
  rdoc (3.12.2)
57
56
  json (~> 1.4)
@@ -72,6 +71,5 @@ DEPENDENCIES
72
71
  bundler (~> 1.0)
73
72
  jeweler (~> 1.8.7)
74
73
  rack-proxy
75
- rack-rewrite
76
74
  rdoc (~> 3.12)
77
75
  shoulda
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
data/lib/seojs.rb CHANGED
@@ -1,20 +1,5 @@
1
1
  module Seojs
2
- @strategy = :forward
3
2
 
4
- def self.strategy=(value)
5
- allowed_values = [:forward, :redirect]
6
- unless allowed_values.map(&:to_s).include?(value.to_s)
7
- puts "Seojs.strategy must be one of the following values:\n\t#{allowed_values}"
8
- return
9
- else
10
- @strategy = value.to_sym
11
- end
12
- end
13
-
14
- def self.strategy
15
- @strategy
16
- end
17
-
18
3
  def self.token=(value)
19
4
  @url = "http://cdn.getseojs.com/snapshots/#{value}"
20
5
  end
@@ -26,10 +11,11 @@ module Seojs
26
11
  def self.url
27
12
  @url
28
13
  end
29
-
30
- self.token = ENV['SEOJS_TOKEN'] if ENV['SEOJS_TOKEN']
31
- self.url = ENV['SEOJS_URL'] if ENV['SEOJS_URL']
14
+
32
15
  end
33
16
 
17
+ Seojs.token = ENV['SEOJS_TOKEN'] if ENV['SEOJS_TOKEN']
18
+ Seojs.url = ENV['SEOJS_URL'] if ENV['SEOJS_URL']
19
+
34
20
  require 'seojs/middleware'
35
21
  require 'seojs/railtie' if defined?(Rails::Railtie)
@@ -6,18 +6,9 @@ module Seojs
6
6
 
7
7
  def initialize(app)
8
8
  @app = app
9
-
10
- backend = "#{Seojs.url}/v3"
11
-
12
- @rack_rewrite = ::Rack::Rewrite.new(app) do |env|
13
- r301 %r{(.*_escaped_fragment_.*)}, lambda { |match, rack_env|
14
- "#{backend}/#{rack_env['rack.url_scheme']}://#{rack_env['SERVER_NAME']}:#{rack_env['SERVER_PORT']}#{match[0]}"
15
- }
16
- end
17
-
18
- proxy_app = Rack::Proxy.new(backend: backend, streaming: false)
19
-
9
+ proxy_app = Rack::Proxy.new(backend: "#{Seojs.url}/v3", streaming: false)
20
10
  @rack_proxy = Rack::Cascade.new([proxy_app, app], [200, 301, 302, 304])
11
+ puts "init"
21
12
  end
22
13
 
23
14
  def call(env)
@@ -25,9 +16,7 @@ module Seojs
25
16
 
26
17
  if test?
27
18
  [ 200, {"Content-Type" => "text/html"}, self ]
28
- elsif Seojs.strategy == :redirect && Seojs.token && escaped_fragment_query?
29
- @rack_rewrite.call(env)
30
- elsif Seojs.strategy == :forward && Seojs.token && escaped_fragment_query?
19
+ elsif Seojs.url && escaped_fragment_query?
31
20
  @rack_proxy.call(env)
32
21
  else
33
22
  @app.call(env)
@@ -13,17 +13,72 @@ module Seojs
13
13
  end
14
14
  end
15
15
 
16
+ # TODO: Submit PR to rack-proxy for target_response.to_hash
16
17
  def perform_request(env)
17
- super(env)
18
+ source_request = ::Rack::Request.new(env)
19
+
20
+ # Initialize request
21
+ if source_request.fullpath == ""
22
+ full_path = URI.parse(env['REQUEST_URI']).request_uri
23
+ else
24
+ full_path = source_request.fullpath
25
+ end
26
+
27
+ target_request = Net::HTTP.const_get(source_request.request_method.capitalize).new(full_path)
28
+
29
+ # Setup headers
30
+ target_request.initialize_http_header(extract_http_request_headers(source_request.env))
31
+
32
+ # Setup body
33
+ if target_request.request_body_permitted? && source_request.body
34
+ target_request.body_stream = source_request.body
35
+ target_request.content_length = source_request.content_length.to_i
36
+ target_request.content_type = source_request.content_type if source_request.content_type
37
+ end
38
+
39
+
40
+ # Create a streaming response (the actual network communication is deferred, a.k.a. streamed)
41
+ if @streaming
42
+ if @backend
43
+ target_response = HttpStreamingResponse.new(target_request, @backend.host, @backend.port)
44
+
45
+ target_response.use_ssl = "https" == @backend.scheme
46
+ else
47
+ target_response = HttpStreamingResponse.new(target_request, source_request.host, source_request.port)
48
+
49
+ target_response.use_ssl = "https" == source_request.scheme
50
+ end
51
+
52
+ triplet = [target_response.status, target_response.headers, target_response.body]
53
+ else
54
+ host = (@backend && @backend.host) || source_request.host
55
+ port = (@backend && @backend.port) || source_request.port
56
+ target_response = Net::HTTP.start(host, port) do |http|
57
+ http.request(target_request)
58
+ end
59
+
60
+ if target_response.respond_to?(:headers)
61
+ headers = target_response.headers
62
+ elsif target_response.respond_to?(:to_hash)
63
+ headers = target_response.to_hash
64
+ else
65
+ headers = {}
66
+ end
67
+
68
+ body = target_response.body
69
+ body = [body] unless body.respond_to?(:each)
70
+
71
+ triplet = [target_response.code, headers, body]
72
+ end
73
+
74
+ triplet
18
75
  end
76
+
19
77
 
20
78
  def call(env)
21
- Timeout.timeout(20) do
22
- code, headers, body = super(env)
23
- body = [body] unless body.respond_to?(:each)
24
- return [code, headers, body]
79
+ Timeout.timeout(10) do
80
+ return super(env)
25
81
  end
26
- [500, {}, ["Request timed out"]]
27
82
  rescue Exception => e
28
83
  [500, {}, [e.to_s]]
29
84
  end
data/lib/seojs/railtie.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'rack/rewrite'
2
-
3
1
  module Seojs
4
2
  class Railtie < ::Rails::Railtie
5
3
  initializer "seojs.add_middleware" do |app|
data/seojs.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "seojs"
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["getseojs.com"]
12
- s.date = "2013-09-30"
12
+ s.date = "2013-10-01"
13
13
  s.description = "SEO.js makes your BackboneJS, AngularJS or EmberJS apps crawlable by Google to make them appear in search results."
14
14
  s.email = "hello@getseojs.com"
15
15
  s.extra_rdoc_files = [
@@ -43,14 +43,12 @@ Gem::Specification.new do |s|
43
43
  s.specification_version = 4
44
44
 
45
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_runtime_dependency(%q<rack-rewrite>, [">= 0"])
47
46
  s.add_runtime_dependency(%q<rack-proxy>, [">= 0"])
48
47
  s.add_development_dependency(%q<shoulda>, [">= 0"])
49
48
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
50
49
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
51
50
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
52
51
  else
53
- s.add_dependency(%q<rack-rewrite>, [">= 0"])
54
52
  s.add_dependency(%q<rack-proxy>, [">= 0"])
55
53
  s.add_dependency(%q<shoulda>, [">= 0"])
56
54
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
@@ -58,7 +56,6 @@ Gem::Specification.new do |s|
58
56
  s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
59
57
  end
60
58
  else
61
- s.add_dependency(%q<rack-rewrite>, [">= 0"])
62
59
  s.add_dependency(%q<rack-proxy>, [">= 0"])
63
60
  s.add_dependency(%q<shoulda>, [">= 0"])
64
61
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seojs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - getseojs.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-30 00:00:00.000000000 Z
11
+ date: 2013-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rack-rewrite
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rack-proxy
29
15
  requirement: !ruby/object:Gem::Requirement