32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/docmago_client.rb', line 32
def self.create(options = {})
raise ArgumentError, 'please pass in an options hash' unless options.is_a? Hash
if options[:content].nil? || options[:content].empty?
raise DocmagoClient::Error::NoContentError.new, 'must supply :content'
end
default_options = {
name: 'default',
type: 'pdf',
integrity_check: true
}
options = default_options.merge(options)
if options[:zip_resources]
tmp_dir = Dir.mktmpdir
begin
resource_archiver = HTMLResourceArchiver.new(options)
options[:content] = File.new(resource_archiver.create_zip("#{tmp_dir}/document.zip"))
options.delete :assets
response = Typhoeus.post "#{base_uri}/documents", body: {
auth_token: api_key,
document: options.slice(:content, :name, :type, :test_mode)
}
ensure
FileUtils.remove_entry_secure tmp_dir
end
else
response = Typhoeus.post "#{base_uri}/documents", body: {
auth_token: api_key,
document: options.slice(:content, :name, :type, :test_mode)
}
end
if options[:integrity_check] && response.['X-Docmago-Checksum'] != Digest::MD5.hexdigest(response.body)
raise DocmagoClient::Error::IntegrityCheckError.new, 'File corrupt (invalid MD5 checksum)'
end
response
end
|