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 gem is included, it will be used for retrieving resources allowing for sophisticated HTTP caching using REST Client Components allowing the use of Rack::Cache
to avoid network access.
Class Method Summary collapse
- .open_url(base_uri, proxy: nil, headers: {}, verify_none: false, **options) ⇒ RemoteDocument, Object abstract
Methods inherited from HttpAdapter
default_accept_header, default_user_agent, headers
Class Method Details
.open_url(base_uri, proxy: nil, headers: {}, verify_none: false, **options) ⇒ RemoteDocument, Object
This method is abstract.
Returns A RDF::Util::File::RemoteDocument. If a block is given, the result of evaluating the block is returned.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/rdf/util/file.rb', line 83 def self.open_url(base_uri, proxy: nil, headers: {}, verify_none: false, **) 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(headers: 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 } 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(&blk) else raise IOError, "<#{base_uri}>: #{response.code}" end end end |