Class: HTTPX::Request::Body
- Inherits:
-
Object
- Object
- HTTPX::Request::Body
- Defined in:
- lib/httpx/request.rb
Overview
:nocov:
Class Method Summary collapse
Instance Method Summary collapse
- #bytesize ⇒ Object
- #chunk! ⇒ Object
- #chunked? ⇒ Boolean
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(headers, options) ⇒ Body
constructor
A new instance of Body.
-
#inspect ⇒ Object
:nocov:.
- #stream(body) ⇒ Object
- #unbounded_body? ⇒ Boolean
Constructor Details
#initialize(headers, options) ⇒ Body
Returns a new instance of Body.
150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/httpx/request.rb', line 150 def initialize(headers, ) @headers = headers @body = if .body Transcoder.registry("body").encode(.body) elsif .form Transcoder.registry("form").encode(.form) elsif .json Transcoder.registry("json").encode(.json) end return if @body.nil? @headers["content-type"] ||= @body.content_type @headers["content-length"] = @body.bytesize unless unbounded_body? end |
Class Method Details
.new(options) ⇒ Object
143 144 145 146 147 |
# File 'lib/httpx/request.rb', line 143 def new(*, ) return .body if .body.is_a?(self) super end |
Instance Method Details
#bytesize ⇒ Object
186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/httpx/request.rb', line 186 def bytesize return 0 if @body.nil? if @body.respond_to?(:bytesize) @body.bytesize elsif @body.respond_to?(:size) @body.size else raise Error, "cannot determine size of body: #{@body.inspect}" end end |
#chunk! ⇒ Object
212 213 214 |
# File 'lib/httpx/request.rb', line 212 def chunk! @headers.add("transfer-encoding", "chunked") end |
#chunked? ⇒ Boolean
208 209 210 |
# File 'lib/httpx/request.rb', line 208 def chunked? @headers["transfer-encoding"] == "chunked" end |
#each(&block) ⇒ Object
165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/httpx/request.rb', line 165 def each(&block) return enum_for(__method__) unless block_given? return if @body.nil? body = stream(@body) if body.respond_to?(:read) ::IO.copy_stream(body, ProcIO.new(block)) elsif body.respond_to?(:each) body.each(&block) else block[body.to_s] end end |
#empty? ⇒ Boolean
179 180 181 182 183 184 |
# File 'lib/httpx/request.rb', line 179 def empty? return true if @body.nil? return false if chunked? bytesize.zero? end |
#inspect ⇒ Object
:nocov:
217 218 219 220 |
# File 'lib/httpx/request.rb', line 217 def inspect "#<HTTPX::Request::Body:#{object_id} " \ "#{unbounded_body? ? "stream" : "@bytesize=#{bytesize}"}>" end |
#stream(body) ⇒ Object
198 199 200 201 202 |
# File 'lib/httpx/request.rb', line 198 def stream(body) encoded = body encoded = Transcoder.registry("chunker").encode(body) if chunked? encoded end |
#unbounded_body? ⇒ Boolean
204 205 206 |
# File 'lib/httpx/request.rb', line 204 def unbounded_body? chunked? || @body.bytesize == Float::INFINITY end |