Method: Wpxf::Net::HttpClient#download_file

Defined in:
lib/wpxf/net/http_client.rb

#download_file(opts) ⇒ HttpResponse?

Stream a response directly to a file (leaves the body attribute empty).



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/wpxf/net/http_client.rb', line 138

def download_file(opts)
  target_file = File.open(opts[:local_filename], 'wb')
  req = create_typhoeus_request(opts)

  req.on_headers do |response|
    return Wpxf::Net::HttpResponse.new(response) if response.code != 200
  end

  req.on_body do |chunk|
    target_file.write(chunk)
  end

  req.on_complete do |response|
    target_file.close
    resp = Wpxf::Net::HttpResponse.new(response)
    resp.body = File.read(opts[:local_filename])
    return resp
  end

  req.run
end