seojs 0.0.4 → 0.0.5

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: 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