headless-rails 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: 3e99bfee5683052e01dcd3ff6064f12ba84f1ebc
4
- data.tar.gz: a799666cdfc2a8ae4b61b315697611ab3fda75ad
3
+ metadata.gz: 9529dae34d957582b751cced37f5b41937aa750b
4
+ data.tar.gz: 9c165ed7ac35426f83619af477f805890521a639
5
5
  SHA512:
6
- metadata.gz: 79b18dbb88c26be4af7898e4703758f61ab9b301ad0ffd964c9e99a1954474e202b8f7c2ae8c7b0cabcc5e068652ae87c817fce5a5f993a9002bd31fc9921668
7
- data.tar.gz: d1ba0c21be9b57b08678ea49924f6266867d6a34bbf1b7c7d255c708a59a726c01bd779ef50d512dca4b1ffe1d87ce52999844094f1ffbdc0f39a407435c7061
6
+ metadata.gz: bee4335b7c5d7c9ccbdc99b5d5cbd482d61d8fb62dd64ea43d89e3195a346306b991652e4f8d4bace7310f5854a28777766ab350031f60ba4542b4263cb671fd
7
+ data.tar.gz: a96540a9e8d0a19b69c0949d41bc6065f45ec4f97ed3adfec529652ce4a8593e6a95a9a7ea9ed9fb16b6503f75a382ac0142bbee1c7d82aa2ce38028e77a3c89
@@ -11,10 +11,13 @@ module Headless
11
11
 
12
12
  if ::Headless::AjaxCrawler::RequestMatcher.call(request)
13
13
  url = ::Headless::AjaxCrawler::UrlExtractor.call(request)
14
- crawled = ::Headless::APIClient.crawl(url)
14
+ api_response = ::Headless::APIClient.crawl(url)
15
15
 
16
- if crawled.success?
17
- return [200, { 'Content-Type' => "text/html" }, [crawled.content]]
16
+ if api_response.success?
17
+ http_status = api_response.http_status_code || 200
18
+ return [http_status, { 'Content-Type' => "text/html" }, [api_response.content]]
19
+ else
20
+ raise "headless request for #{url} failed: #{crawled}"
18
21
  end
19
22
  end
20
23
 
@@ -11,6 +11,10 @@ module Headless
11
11
  parsed_response["content"]
12
12
  end
13
13
 
14
+ def http_status_code
15
+ parsed_response["http_status_code"]
16
+ end
17
+
14
18
  private
15
19
 
16
20
  def parsed_response
@@ -1,5 +1,5 @@
1
1
  module Headless
2
2
  module Rails
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
@@ -4,6 +4,7 @@ require 'rack/test'
4
4
  RSpec.describe Headless::AjaxCrawler::Middleware do
5
5
 
6
6
  include Rack::Test::Methods
7
+ include ExampleResponses
7
8
 
8
9
  def app
9
10
  hello_world = lambda { |env|
@@ -13,7 +14,7 @@ RSpec.describe Headless::AjaxCrawler::Middleware do
13
14
  Headless::AjaxCrawler::Middleware.new(hello_world)
14
15
  end
15
16
 
16
- let(:headless_response) { double(:headless_response, :success? => true, :content => :headless_content) }
17
+ let(:headless_response) { api_response }
17
18
 
18
19
  context "regular url" do
19
20
  it "renders hello world" do
@@ -26,7 +27,7 @@ RSpec.describe Headless::AjaxCrawler::Middleware do
26
27
  it "call headless and renders it" do
27
28
  expect(Headless::APIClient).to receive(:crawl).and_return(headless_response)
28
29
  get "/?_escaped_fragment_="
29
- expect(last_response.body).to include("headless_content")
30
+ expect(last_response.body).to include("HeadlessApp")
30
31
  end
31
32
 
32
33
  context "a POST" do
@@ -9,6 +9,7 @@ RSpec.describe Headless::APIResponse do
9
9
  "url" => "http://example.com",
10
10
  "title" => "Title",
11
11
  "content" => "<h1>Title</h1>",
12
+ "http_status_code" => 200
12
13
  }
13
14
  end
14
15
 
@@ -28,6 +29,10 @@ RSpec.describe Headless::APIResponse do
28
29
  it "returns true for success?" do
29
30
  expect(subject.success?).to be_true
30
31
  end
32
+
33
+ it "returns the http status code" do
34
+ expect(subject.http_status_code).to be(200)
35
+ end
31
36
  end
32
37
 
33
38
  context "failure" do
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
2
  require 'headless/rails'
3
3
  require 'support/example_requests'
4
+ require 'support/example_responses'
4
5
 
5
6
  RSpec.configure do |c|
6
7
  c.include ExampleRequests
@@ -0,0 +1,20 @@
1
+ require 'headless/api_response'
2
+
3
+ module ExampleResponses
4
+ def json_response
5
+ <<-JSON
6
+ {
7
+ "success":true,
8
+ "url":"http://www.headlessapp.com/",
9
+ "title":"HeadlessApp.com : Headless Browsing as-a-service",
10
+ "status_message":"success",
11
+ "http_status_code":200,
12
+ "content":"<h1>HeadlessApp</h1>"
13
+ }
14
+ JSON
15
+ end
16
+
17
+ def api_response
18
+ Headless::APIResponse.new(json_response)
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: headless-rails
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
  - Matthew Rudy Jacobs
@@ -134,11 +134,12 @@ files:
134
134
  - spec/headless/ajax_crawler/middleware_spec.rb
135
135
  - spec/headless/ajax_crawler/request_matcher_spec.rb
136
136
  - spec/headless/ajax_crawler/url_extractor_spec.rb
137
- - spec/headless/ap_response_spec.rb
138
137
  - spec/headless/api_client_spec.rb
138
+ - spec/headless/api_response_spec.rb
139
139
  - spec/headless/rails_spec.rb
140
140
  - spec/spec_helper.rb
141
141
  - spec/support/example_requests.rb
142
+ - spec/support/example_responses.rb
142
143
  homepage: http://www.headlessapp.com
143
144
  licenses:
144
145
  - MIT
@@ -167,8 +168,9 @@ test_files:
167
168
  - spec/headless/ajax_crawler/middleware_spec.rb
168
169
  - spec/headless/ajax_crawler/request_matcher_spec.rb
169
170
  - spec/headless/ajax_crawler/url_extractor_spec.rb
170
- - spec/headless/ap_response_spec.rb
171
171
  - spec/headless/api_client_spec.rb
172
+ - spec/headless/api_response_spec.rb
172
173
  - spec/headless/rails_spec.rb
173
174
  - spec/spec_helper.rb
174
175
  - spec/support/example_requests.rb
176
+ - spec/support/example_responses.rb