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 +4 -4
- data/lib/headless/ajax_crawler/middleware.rb +6 -3
- data/lib/headless/api_response.rb +4 -0
- data/lib/headless/rails/version.rb +1 -1
- data/spec/headless/ajax_crawler/middleware_spec.rb +3 -2
- data/spec/headless/{ap_response_spec.rb → api_response_spec.rb} +5 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/example_responses.rb +20 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9529dae34d957582b751cced37f5b41937aa750b
|
4
|
+
data.tar.gz: 9c165ed7ac35426f83619af477f805890521a639
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
14
|
+
api_response = ::Headless::APIClient.crawl(url)
|
15
15
|
|
16
|
-
if
|
17
|
-
|
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
|
|
@@ -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) {
|
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("
|
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
@@ -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
|
+
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
|