Class: RDF::Util::File::RestClientAdapter
- Inherits:
-
HttpAdapter
- Object
- HttpAdapter
- RDF::Util::File::RestClientAdapter
- Defined in:
- lib/rdf/util/file.rb
Overview
If the [Rest Client](rubygems.org/gems/rest-client) gem is included, it will be used for retrieving resources allowing for sophisticated HTTP caching using [REST Client Components](rubygems.org/gems/rest-client-components) allowing the use of ‘Rack::Cache` to avoid network access.
Class Method Summary collapse
Methods inherited from HttpAdapter
default_accept_header, headers
Class Method Details
.open_url(base_uri, options) ⇒ RemoteDocument, Object
Returns A RDF::Util::File::RemoteDocument. If a block is given, the result of evaluating the block is returned.
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/rdf/util/file.rb', line 89 def self.open_url(base_uri, ) ssl_verify = [:verify_none] ? OpenSSL::SSL::VERIFY_NONE : OpenSSL::SSL::VERIFY_PEER # If RestClient is loaded, prefer it RestClient.proxy = [:proxy].to_s if [:proxy] client = RestClient::Resource.new(base_uri, verify_ssl: ssl_verify) client.get(headers()) do |response, request, res, &blk| case response.code when 200..299 # found object # If a Location is returned, it defines the base resource for this file, not it's actual ending location = { base_uri: RDF::URI(response.headers.fetch(:location, base_uri)), code: response.code.to_i, headers: response.headers } remote_document = RemoteDocument.new(response.body, ) when 300..399 # Document base is redirected location # Location may be relative base_uri = ::URI.join(base_uri, response.headers[:location].to_s).to_s response.follow_redirection(request, res, &blk) else raise IOError, "<#{base_uri}>: #{response.code}" end end end |