Class: OpenGraphReader::Fetcher Private
- Inherits:
-
Object
- Object
- OpenGraphReader::Fetcher
- Defined in:
- lib/open_graph_reader/fetcher.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Fetch an URI to retrieve its HTML body, if available.
Constant Summary collapse
- HEADERS =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
{ 'Accept' => 'text/html', 'User-Agent' => "OpenGraphReader/#{OpenGraphReader::VERSION} (+https://github.com/jhass/open_graph_reader)" }.freeze
Instance Method Summary collapse
-
#body ⇒ String
private
Retrieve the body.
-
#fetch ⇒ Faraday::Response?
(also: #fetch_body)
private
Fetch the full page.
-
#fetch_headers ⇒ Faraday::Response?
private
Fetch just the headers.
-
#fetched? ⇒ Bool
(also: #fetched_body?)
private
Whether the target URI was fetched.
-
#fetched_headers? ⇒ Bool
private
Whether the headers of the target URI were fetched.
-
#html? ⇒ Bool
private
Whether the target URI seems to return HTML.
-
#initialize(uri) ⇒ Fetcher
constructor
private
Create a new fetcher.
-
#url ⇒ String
private
The URL to fetch.
Constructor Details
#initialize(uri) ⇒ Fetcher
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Create a new fetcher.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/open_graph_reader/fetcher.rb', line 26 def initialize uri raise ArgumentError, "url needs to be an instance of URI" unless uri.is_a? URI @uri = uri @connection = Faraday.default_connection.dup @connection.headers.replace(HEADERS) if defined? Faraday::CookieJar prepend_middleware Faraday::CookieJar end if defined? FaradayMiddleware prepend_middleware FaradayMiddleware::FollowRedirects end end |
Instance Method Details
#body ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Custom error class
Retrieve the body
70 71 72 73 74 |
# File 'lib/open_graph_reader/fetcher.rb', line 70 def body fetch_body unless fetched? raise ArgumentError, "Did not receive a HTML site at #{@uri}" unless html? @get_response.body end |
#fetch ⇒ Faraday::Response? Also known as: fetch_body
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Fetch the full page.
51 52 53 54 |
# File 'lib/open_graph_reader/fetcher.rb', line 51 def fetch @get_response = @connection.get(@uri) rescue Faraday::Error end |
#fetch_headers ⇒ Faraday::Response?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Fetch just the headers
60 61 62 63 |
# File 'lib/open_graph_reader/fetcher.rb', line 60 def fetch_headers @head_response = @connection.head(@uri) rescue Faraday::Error end |
#fetched? ⇒ Bool Also known as: fetched_body?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Whether the target URI was fetched.
91 92 93 |
# File 'lib/open_graph_reader/fetcher.rb', line 91 def fetched? !@get_response.nil? end |
#fetched_headers? ⇒ Bool
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Whether the headers of the target URI were fetched.
99 100 101 |
# File 'lib/open_graph_reader/fetcher.rb', line 99 def fetched_headers? !@get_response.nil? || !@head_response.nil? end |
#html? ⇒ Bool
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Whether the target URI seems to return HTML
79 80 81 82 83 84 85 86 |
# File 'lib/open_graph_reader/fetcher.rb', line 79 def html? fetch_headers unless fetched_headers? response = @get_response || @head_response return false unless response return false unless response.success? return false unless response['content-type'] response['content-type'].include? 'text/html' end |
#url ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The URL to fetch
44 45 46 |
# File 'lib/open_graph_reader/fetcher.rb', line 44 def url @uri.to_s end |