Class: ActiveFedora::File::Streaming::FileBody
- Inherits:
-
Object
- Object
- ActiveFedora::File::Streaming::FileBody
- Defined in:
- lib/active_fedora/file/streaming.rb
Instance Attribute Summary collapse
-
#headers ⇒ Object
readonly
Returns the value of attribute headers.
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Instance Method Summary collapse
- #each(no_of_requests_limit = 3, &block) ⇒ Object
-
#initialize(uri, headers) ⇒ FileBody
constructor
A new instance of FileBody.
Constructor Details
#initialize(uri, headers) ⇒ FileBody
Returns a new instance of FileBody.
20 21 22 23 |
# File 'lib/active_fedora/file/streaming.rb', line 20 def initialize(uri, headers) @uri = uri @headers = headers end |
Instance Attribute Details
#headers ⇒ Object (readonly)
Returns the value of attribute headers.
19 20 21 |
# File 'lib/active_fedora/file/streaming.rb', line 19 def headers @headers end |
#uri ⇒ Object (readonly)
Returns the value of attribute uri.
19 20 21 |
# File 'lib/active_fedora/file/streaming.rb', line 19 def uri @uri end |
Instance Method Details
#each(no_of_requests_limit = 3, &block) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/active_fedora/file/streaming.rb', line 25 def each(no_of_requests_limit = 3, &block) raise ArgumentError, 'HTTP redirect too deep' if no_of_requests_limit.zero? Net::HTTP.start(uri.host, uri.port, use_ssl: (uri.scheme == 'https')) do |http| request = Net::HTTP::Get.new uri, headers http.request request do |response| case response when Net::HTTPSuccess response.read_body do |chunk| yield chunk end when Net::HTTPRedirection no_of_requests_limit -= 1 @uri = URI(response["location"]) each(no_of_requests_limit, &block) else raise "Couldn't get data from Fedora (#{uri}). Response: #{response.code}" end end end end |