Skip to content

Commit

Permalink
# enabling gem redist
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnny Halife committed Oct 5, 2009
1 parent 8b75ed7 commit 365822b
Show file tree
Hide file tree
Showing 12 changed files with 82 additions and 41 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
test/exclude.*
coverage
coverage
pkg
19 changes: 19 additions & 0 deletions lib/waz-blobs.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
require 'time'
require 'cgi'
require 'base64'
require 'rexml/document'
require 'rexml/xpath'

require 'restclient'
require 'hmac-sha2'

$:.unshift(File.dirname(__FILE__))

require 'waz/blobs/base'
require 'waz/blobs/blob_object'
require 'waz/blobs/container'
require 'waz/blobs/exceptions'
require 'waz/blobs/service'
require 'waz/blobs/version'


7 changes: 0 additions & 7 deletions lib/waz/blobs.rb

This file was deleted.

2 changes: 0 additions & 2 deletions lib/waz/blobs/container.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'restclient'

module WAZ
module Blobs
class Container
Expand Down
17 changes: 4 additions & 13 deletions lib/waz/blobs/service.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
require 'restclient'
require 'time'
require 'hmac-sha2'
require 'base64'
require 'cgi'
require 'rexml/document'
require 'rexml/xpath'

module WAZ
module Blobs
class Service
Expand Down Expand Up @@ -99,8 +91,8 @@ def delete_blob(path)
end

def get_blob_properties(path)
url = generate_request_uri("metadata", path)
request = generate_request("GET", url)
url = generate_request_uri(nil, path)
request = generate_request("HEAD", url)
request.execute().headers
end

Expand All @@ -113,7 +105,7 @@ def set_blob_properties(path, properties ={})
def generate_request(verb, url, headers = {}, payload = nil)
http_headers = {}
headers.each{ |k, v| http_headers[k.to_s.gsub(/_/, '-')] = v}
request = RestClient::Request.new(:method => verb, :url => url, :headers => http_headers, :payload => payload)
request = RestClient::Request.new(:method => verb.downcase.to_sym, :url => url, :headers => http_headers, :payload => payload)
request.headers["x-ms-Date"] = Time.new.httpdate
request.headers["Content-Length"] = (request.payload or "").length
request.headers["Authorization"] = "SharedKey #{account_name}:#{generate_signature(request)}"
Expand All @@ -123,7 +115,6 @@ def generate_request(verb, url, headers = {}, payload = nil)
def generate_request_uri(operation = nil, path = nil, options = {})
protocol = use_ssl ? "https" : "http"
query_params = options.keys.sort{ |a, b| a.to_s <=> b.to_s}.map{ |k| "#{k.to_s.gsub(/_/, '')}=#{options[k]}"}.join("&") unless options.empty?
puts path
uri = "#{protocol}://#{account_name}.#{base_url}#{(path or "").start_with?("/") ? "" : "/"}#{(path or "")}#{operation ? "?comp=" + operation : ""}"
uri << "#{operation ? "&" : "?"}#{query_params}" if query_params
return uri
Expand All @@ -140,7 +131,7 @@ def canonicalize_message(url)
end

def generate_signature(request)
signature = request.method + "\x0A" +
signature = request.method.to_s.upcase + "\x0A" +
(request.headers["Content-MD5"] or "") + "\x0A" +
(request.headers["Content-Type"] or "") + "\x0A" +
(request.headers["Date"] or "")+ "\x0A" +
Expand Down
11 changes: 11 additions & 0 deletions lib/waz/blobs/version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module WAZ
module Blobs
module VERSION #:nodoc:
MAJOR = '0'
MINOR = '1'
TINY = '0'
end

Version = [VERSION::MAJOR, VERSION::MINOR, VERSION::TINY].compact * '.'
end
end
44 changes: 36 additions & 8 deletions rakefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,40 @@
require 'rake'
require 'spec/rake/spectask'
require 'rubygems'
require 'dm-core'
require 'spec/rake/spectask'
require 'rake/gempackagetask'
require 'lib/waz-blobs'


namespace :test do
Spec::Rake::SpecTask.new('run_with_rcov') do |t|
puts "running tests and code coverage"
t.spec_files = FileList['tests/waz/*.rb']
t.rcov = true
t.rcov_opts = ['--text-report', '--exclude', ".gem,test,Library,#{ENV['GEM_HOME']}", '--sort', 'coverage' ]
t.spec_opts = ['-cfn']
end
end

Spec::Rake::SpecTask.new('tests_with_rcov') do |t|
puts "running tests and code coverage"
t.spec_files = FileList['tests/waz/*.rb']
t.rcov = true
t.rcov_opts = ['--text-report', '--exclude', ".gem,test,Library,#{ENV['GEM_HOME']}", '--sort', 'coverage' ]
t.spec_opts = ['-cfn']
namespace :dist do
spec = Gem::Specification.new do |s|
s.name = 'waz-blobs'
s.version = Gem::Version.new(WAZ::Blobs::Version)
s.summary = "Client library for Windows Azure's Blob Storage Service's REST API"
s.description = s.summary
s.email = 'johnny.halife@me.com'
s.author = 'Johnny G. Halife'
s.homepage = 'http://github.com/johnnyhalife/waz-blobs'
s.require_paths = ["lib"]
s.files = FileList['rakefile', 'lib/**/*.rb']
s.test_files = Dir['test/**/*']
s.has_rdoc = false

# Dependencies
s.add_runtime_dependency 'rest-client', '>= 1.0.3'
s.add_dependency 'ruby-hmac'
end

Rake::GemPackageTask.new(spec) do |pkg|
pkg.need_tar = true
end
end
2 changes: 1 addition & 1 deletion tests/waz/base_tests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
require 'spec'
require 'mocha'
require 'restclient'
require 'lib/waz/blobs'
require 'lib/waz-blobs'

describe "Base class for connection management" do
it "establish connection and set it as default connection" do
Expand Down
2 changes: 1 addition & 1 deletion tests/waz/blob_object_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
require 'mocha'
require 'restclient'
require 'tests/configuration'
require 'lib/waz/blobs'
require 'lib/waz-blobs'

describe "Windows Azure Blobs interface API" do
it "should return blob path from url" do
Expand Down
2 changes: 1 addition & 1 deletion tests/waz/container_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
require 'mocha'
require 'restclient'
require 'tests/configuration'
require 'lib/waz/blobs'
require 'lib/waz-blobs'

describe "Windows Azure Containers interface API" do
it "should be able to create a container" do
Expand Down
8 changes: 4 additions & 4 deletions tests/waz/functional.exclude/container_functional_tests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
require 'rubygems'
require 'spec'
require 'mocha'
require 'restclient'
require 'lib/waz/blobs'
require 'waz-blobs'

describe "blobs service behavior" do

Expand All @@ -18,7 +17,8 @@
container = WAZ::Blobs::Container.find('momo-container')
container.put_properties(:x_ms_meta_owner => "Ezequiel Morito")
container.public_access = true
container.store("hello.txt", "Hola Don Julio Morito!", "plain/text")
puts container["hello.txt"]
container.store("hello.txt", "Hola Don Julio Morito y Jedib!", "plain/text")
blob = container["hello.txt"]
blob.put_properties(:x_ms_meta_owner => "Johnny Halife")
end
end
6 changes: 3 additions & 3 deletions tests/waz/service_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
require 'mocha'
require 'restclient'
require 'tests/configuration'
require 'lib/waz/blobs'
require 'lib/waz-blobs'


describe "blobs service behavior" do
Expand Down Expand Up @@ -150,8 +150,8 @@
response = mock()
response.stubs(:headers).returns(RestClient::Response.beautify_headers({"x-ms-meta-Name" => "customName"}))
RestClient::Request.any_instance.expects(:execute).returns(response)
service.expects(:generate_request_uri).with("metadata", "container/blob").returns("mock-uri")
service.expects(:generate_request).with("GET", "mock-uri").returns(RestClient::Request.new(:method => "GET", :url => "http://localhost"))
service.expects(:generate_request_uri).with(nil, "container/blob").returns("mock-uri")
service.expects(:generate_request).with("HEAD", "mock-uri").returns(RestClient::Request.new(:method => "GET", :url => "http://localhost"))
service.get_blob_properties("container/blob").should == response.headers
end

Expand Down

0 comments on commit 365822b

Please sign in to comment.