Class: LinkOracle::Request
- Inherits:
-
Object
- Object
- LinkOracle::Request
- Defined in:
- lib/link_oracle/request.rb
Instance Attribute Summary collapse
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Instance Method Summary collapse
- #encode_url(url) ⇒ Object
- #error_class ⇒ Object
-
#initialize(url) ⇒ Request
constructor
A new instance of Request.
- #parsed_data ⇒ Object
- #parsed_url ⇒ Object
- #request ⇒ Object
- #response ⇒ Object
- #results ⇒ Object
- #validate_request ⇒ Object
- #validate_url ⇒ Object
Constructor Details
#initialize(url) ⇒ Request
Returns a new instance of Request.
5 6 7 |
# File 'lib/link_oracle/request.rb', line 5 def initialize(url) @url = url end |
Instance Attribute Details
#url ⇒ Object (readonly)
Returns the value of attribute url.
3 4 5 |
# File 'lib/link_oracle/request.rb', line 3 def url @url end |
Instance Method Details
#encode_url(url) ⇒ Object
33 34 35 36 |
# File 'lib/link_oracle/request.rb', line 33 def encode_url(url) return if url.nil? || url.empty? URI.encode(url) end |
#error_class ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/link_oracle/request.rb', line 60 def error_class return if response.response_code == 200 { 404 => PageNotFound, 403 => PermissionDenied }[response.response_code] || BadThingsHappened end |
#parsed_data ⇒ Object
68 69 70 71 72 |
# File 'lib/link_oracle/request.rb', line 68 def parsed_data ::Nokogiri::HTML.parse(response.body_str) rescue raise ParsingError end |
#parsed_url ⇒ Object
9 10 11 12 13 |
# File 'lib/link_oracle/request.rb', line 9 def parsed_url validate_url validate_request results end |
#request ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/link_oracle/request.rb', line 42 def request c = ::Curl::Easy.new(url) c.follow_location = true c.max_redirects = 100 #there will never ever be this many redirects unless it's looping. #sorrynotsorry c.headers["User-Agent"] = "link_oracle#{LinkOracle::VERSION}" begin c.perform rescue ::Curl::Err::SSLConnectError c.ssl_version = 3 c.perform end c rescue Curl::Err::HostResolutionError raise ServerNotFound rescue Curl::Err::SSLCACertificateError, Curl::Err::SSLPeerCertificateError raise BadSslCertificate end |
#response ⇒ Object
38 39 40 |
# File 'lib/link_oracle/request.rb', line 38 def response @response ||= request end |
#results ⇒ Object
15 16 17 18 19 20 |
# File 'lib/link_oracle/request.rb', line 15 def results { parsed_data: parsed_data, url: url } end |
#validate_request ⇒ Object
22 23 24 |
# File 'lib/link_oracle/request.rb', line 22 def validate_request raise error_class if error_class end |
#validate_url ⇒ Object
26 27 28 29 30 31 |
# File 'lib/link_oracle/request.rb', line 26 def validate_url encoded_url = encode_url(url) !!URI.parse(encoded_url) rescue URI::InvalidURIError raise InvalidUrl, url end |