class VCloudSdk::Connection::FileUploader
Public Class Methods
upload(href, file, vcloud_auth_header, http_method = :Put)
click to toggle source
# File lib/ruby_vcloud_sdk/connection/file_uploader.rb, line 6 def upload(href, file, vcloud_auth_header, http_method = :Put) request = create_request(href, file, vcloud_auth_header, http_method) net = create_connection(href) net.start do |http| response = http.request(request) { |http_response| http_response.read_body } raise ApiRequestError "Error Response: #{response.code}" if response.code.to_i >= 400 response end end
Private Class Methods
create_connection(href)
click to toggle source
# File lib/ruby_vcloud_sdk/connection/file_uploader.rb, line 32 def create_connection(href) uri = URI::parse(href) net = Net::HTTP.new(uri.host, uri.port) net.use_ssl = uri.is_a?(URI::HTTPS) net.verify_mode = OpenSSL::SSL::VERIFY_NONE if net.use_ssl? net end
create_request(href, file, vcloud_auth_header, http_method = :Put)
click to toggle source
# File lib/ruby_vcloud_sdk/connection/file_uploader.rb, line 20 def create_request(href, file, vcloud_auth_header, http_method = :Put) headers = {} headers["x-vcloud-authorization"] = vcloud_auth_header # Ruby 1.8 does not have size on the file object headers["Content-Length"] = File.size(file.path).to_s headers["Transfer-Encoding"] = "chunked" request_type = Net::HTTP.const_get(http_method) request = request_type.new(href, headers) request.body_stream = file request end