to_s method of HTTP::Response keeps blocking while it receives the whole content, no matter how it is big. This means it may waste time to receive unacceptably large files. It may also consume memory and disk in the process. This solves the inefficency by checking response length while receiving.
		
			
				
	
	
		
			20 lines
		
	
	
	
		
			530 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
	
		
			530 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module Mastodon
 | |
|   class Error < StandardError; end
 | |
|   class NotPermittedError < Error; end
 | |
|   class ValidationError < Error; end
 | |
|   class HostValidationError < ValidationError; end
 | |
|   class LengthValidationError < ValidationError; end
 | |
|   class RaceConditionError < Error; end
 | |
| 
 | |
|   class UnexpectedResponseError < Error
 | |
|     def initialize(response = nil)
 | |
|       if response.respond_to? :uri
 | |
|         super("#{response.uri} returned code #{response.code}")
 | |
|       else
 | |
|         super
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |