Class: HTTPX::Response::Body
- Inherits:
-
Object
- Object
- HTTPX::Response::Body
- Defined in:
- lib/httpx/response.rb
Instance Method Summary collapse
- #==(other) ⇒ Object
- #bytesize ⇒ Object
-
#close ⇒ Object
closes/cleans the buffer, resets everything.
- #copy_to(dest) ⇒ Object
- #each ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(response, threshold_size:, window_size: 1 << 14) ⇒ Body
constructor
A new instance of Body.
- #read(*args) ⇒ Object
- #to_s ⇒ Object (also: #to_str)
- #write(chunk) ⇒ Object
Constructor Details
#initialize(response, threshold_size:, window_size: 1 << 14) ⇒ Body
Returns a new instance of Body.
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/httpx/response.rb', line 80 def initialize(response, threshold_size:, window_size: 1 << 14) @response = response @headers = response.headers @threshold_size = threshold_size @window_size = window_size @encoding = response.content_type.charset || Encoding::BINARY @length = 0 @buffer = nil @state = :idle end |
Instance Method Details
#==(other) ⇒ Object
164 165 166 |
# File 'lib/httpx/response.rb', line 164 def ==(other) to_s == other.to_s end |
#bytesize ⇒ Object
103 104 105 |
# File 'lib/httpx/response.rb', line 103 def bytesize @length end |
#close ⇒ Object
closes/cleans the buffer, resets everything
154 155 156 157 158 159 160 161 162 |
# File 'lib/httpx/response.rb', line 154 def close return if @state == :idle @buffer.close @buffer.unlink if @buffer.respond_to?(:unlink) @buffer = nil @length = 0 @state = :idle end |
#copy_to(dest) ⇒ Object
142 143 144 145 146 147 148 149 150 151 |
# File 'lib/httpx/response.rb', line 142 def copy_to(dest) return unless @buffer if dest.respond_to?(:path) && @buffer.respond_to?(:path) FileUtils.mv(@buffer.path, dest.path) else @buffer.rewind ::IO.copy_stream(@buffer, dest) end end |
#each ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/httpx/response.rb', line 107 def each return enum_for(__method__) unless block_given? begin unless @state == :idle rewind while (chunk = @buffer.read(@window_size)) yield(chunk.force_encoding(@encoding)) end end ensure close end end |
#empty? ⇒ Boolean
138 139 140 |
# File 'lib/httpx/response.rb', line 138 def empty? @length.zero? end |
#read(*args) ⇒ Object
97 98 99 100 101 |
# File 'lib/httpx/response.rb', line 97 def read(*args) return unless @buffer @buffer.read(*args) end |
#to_s ⇒ Object Also known as: to_str
122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/httpx/response.rb', line 122 def to_s rewind if @buffer content = @buffer.read begin return content.force_encoding(@encoding) rescue ArgumentError # ex: unknown encoding name - utf return content end end "".b ensure close end |
#write(chunk) ⇒ Object
91 92 93 94 95 |
# File 'lib/httpx/response.rb', line 91 def write(chunk) @length += chunk.bytesize transition @buffer.write(chunk) end |