68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/b2.rb', line 68
def upload_file(bucket, key, io_or_string, mime_type: nil, info: {})
upload = get_upload_token(bucket)
uri = URI.parse(upload['uploadUrl'])
conn = Net::HTTP.new(uri.host, uri.port)
conn.use_ssl = uri.scheme == 'https'
chunker = B2::UploadChunker.new(io_or_string)
req = Net::HTTP::Post.new(uri.path)
req['Authorization'] = upload['authorizationToken']
req['X-Bz-File-Name'] = B2.encode(key)
req['Content-Type'] = mime_type || 'b2/x-auto'
req['X-Bz-Content-Sha1'] = 'hex_digits_at_end'
info.each do |key, value|
req["X-Bz-Info-#{key}"] = value
end
req['Content-Length'] = chunker.size
req.body_stream = chunker
resp = conn.start { |http| http.request(req) }
if resp.is_a?(Net::HTTPSuccess)
JSON.parse(resp.body)
else
raise "Error connecting to B2 API"
end
end
|