From: marios <[email protected]>

Signed-off-by: marios <[email protected]>
---
 .../drivers/rackspace/rackspace_driver.rb          |   28 ++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb 
b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
index d09e0de..c8bf0b2 100644
--- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
+++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
@@ -318,6 +318,34 @@ class RackspaceDriver < Deltacloud::BaseDriver
     end
   end
 
+  #params: 
{:user,:password,:bucket,:blob,:content_type,:content_length,:metadata}
+  def blob_stream_connection(params)
+    #create a cloudfiles connection object to get the authtoken
+    cf, cf_host, cf_path, cf_authtoken = nil
+    safely do
+      cf = CloudFiles::Connection.new(:username => params[:user],
+                                :api_key => params[:password])
+      cf_authtoken = cf.authtoken
+      cf_host = cf.storagehost
+      cf_path = cf.storagepath
+    end
+    provider = "https://#{cf_host}";
+    uri = URI.parse(provider)
+    http = Net::HTTP.new(uri.host, uri.port )
+    http.use_ssl = true
+    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+    request = 
Net::HTTP::Put.new("#{cf_path}/#{params[:bucket]}/#{params[:blob]}")
+    request['Host'] = "#{cf_host}"
+    request['X-Auth-Token'] = "#{cf_authtoken}"
+    request['Content-Type'] = params[:content_type]
+    request['Content-Length'] = params[:content_length]
+    request['Expect'] = "100-continue"
+    metadata = params[:metadata] || {}
+    BlobHelper::rename_metadata_headers(metadata, 'X-Object-Meta-')
+    metadata.each{|k,v| request[k] = v}
+    return http, request
+  end
+
 private
 
 
-- 
1.7.3.4

Reply via email to