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  |