Method: DocuSign_Maestro::ApiClient#download_file

Defined in:
lib/docusign_maestro/client/api_client.rb

#download_file(response) ⇒ Tempfile

Save response body into a file in (the defined) temporary folder, using the filename from the “Content-Disposition” header if provided, otherwise a random filename.

Returns:

  • (Tempfile)

    the file downloaded

See Also:

[View source]

228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/docusign_maestro/client/api_client.rb', line 228

def download_file(response)
  content_disposition = response.headers['Content-Disposition']
  if content_disposition and content_disposition =~ /filename=/i
    filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
    prefix = sanitize_filename(filename)
  else
    prefix = 'download-'
  end
  prefix = prefix + '-' unless prefix.end_with?('-')

  tempfile = nil
  encoding = response.body.encoding
  Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) do |file|
    file.write(response.body)
    tempfile = file
  end
  @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
                      "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
                      "will be deleted automatically with GC. It's also recommended to delete the temp file "\
                      "explicitly with `tempfile.delete`"
  tempfile
end