Class: RemotePartial::ResourceManager
- Inherits:
-
Object
- Object
- RemotePartial::ResourceManager
- Defined in:
- lib/remote_partial/resource_manager.rb
Instance Attribute Summary collapse
-
#criteria ⇒ Object
readonly
Returns the value of attribute criteria.
-
#output_modifier ⇒ Object
readonly
Returns the value of attribute output_modifier.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Class Method Summary collapse
- .connection_settings(uri) ⇒ Object
- .get_page(url) ⇒ Object
- .get_raw(url) ⇒ Object
- .get_response(url) ⇒ Object
Instance Method Summary collapse
- #html ⇒ Object
-
#initialize(url, criteria = nil, &output_modifier) ⇒ ResourceManager
constructor
A new instance of ResourceManager.
- #output_to(path) ⇒ Object
Constructor Details
#initialize(url, criteria = nil, &output_modifier) ⇒ ResourceManager
Returns a new instance of ResourceManager.
46 47 48 49 50 |
# File 'lib/remote_partial/resource_manager.rb', line 46 def initialize(url, criteria = nil, &output_modifier) @url = url @criteria = criteria @output_modifier = output_modifier end |
Instance Attribute Details
#criteria ⇒ Object (readonly)
Returns the value of attribute criteria.
7 8 9 |
# File 'lib/remote_partial/resource_manager.rb', line 7 def criteria @criteria end |
#output_modifier ⇒ Object (readonly)
Returns the value of attribute output_modifier.
7 8 9 |
# File 'lib/remote_partial/resource_manager.rb', line 7 def output_modifier @output_modifier end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
7 8 9 |
# File 'lib/remote_partial/resource_manager.rb', line 7 def url @url end |
Class Method Details
.connection_settings(uri) ⇒ Object
42 43 44 |
# File 'lib/remote_partial/resource_manager.rb', line 42 def self.connection_settings(uri) [uri.host, uri.port] + proxy_settings end |
.get_page(url) ⇒ Object
9 10 11 |
# File 'lib/remote_partial/resource_manager.rb', line 9 def self.get_page(url) Nokogiri::HTML(get_raw(url)) end |
.get_raw(url) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/remote_partial/resource_manager.rb', line 13 def self.get_raw(url) response = get_response(url) case response.code.to_i when ok_response_codes return response.body when redirect_response_codes get_raw(URI.parse(response['location'])) else raise response.inspect end rescue => exception # Do main exception raising outside of case statement so that SocketErrors are also handled raise RemotePartialRetrivalError.new(url, exception) end |
.get_response(url) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/remote_partial/resource_manager.rb', line 28 def self.get_response(url) uri = URI.parse(url) http = Net::HTTP.new(*connection_settings(uri)) if uri.port == 443 http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end request = Net::HTTP::Get.new(uri.request_uri) http.request(request) end |
Instance Method Details
#html ⇒ Object
58 59 60 61 |
# File 'lib/remote_partial/resource_manager.rb', line 58 def html text = criteria ? get_part_of_page : get_whole_page output_modifier ? output_modifier.call(text) : text end |
#output_to(path) ⇒ Object
52 53 54 55 56 |
# File 'lib/remote_partial/resource_manager.rb', line 52 def output_to(path) @path = path ensure_output_folder_exists File.write(path, html) end |