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