patronage 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
@@ -0,0 +1,64 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ def version
5
+ if File.exist?('VERSION')
6
+ File.read('VERSION')
7
+ end
8
+ end
9
+
10
+ begin
11
+ require 'jeweler'
12
+ Jeweler::Tasks.new do |gem|
13
+ gem.name = "patronage"
14
+ gem.summary = %Q{Generic and simple webservice client library built on top of Patron, which uses libcurl}
15
+ gem.description = %Q{Generic and simple webservice client library built on top of Patron, which uses libcurl}
16
+ gem.email = "divoxx@gmail.com"
17
+ gem.homepage = "http://github.com/divoxx/patronage"
18
+ gem.authors = ["Rodrigo Kochenburger"]
19
+ gem.version = version
20
+
21
+ gem.add_dependency 'addressable', '>= 2.1.0'
22
+ gem.add_dependency 'patron', '>= 0.4.2'
23
+ gem.add_development_dependency "rspec"
24
+ gem.add_development_dependency "cucumber"
25
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
26
+ end
27
+ rescue LoadError
28
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
29
+ end
30
+
31
+ require 'spec/rake/spectask'
32
+ Spec::Rake::SpecTask.new(:spec) do |spec|
33
+ spec.libs << 'lib' << 'spec'
34
+ spec.spec_files = FileList['spec/**/*_spec.rb']
35
+ end
36
+
37
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
38
+ spec.libs << 'lib' << 'spec'
39
+ spec.pattern = 'spec/**/*_spec.rb'
40
+ spec.rcov = true
41
+ end
42
+
43
+ task :spec => :check_dependencies
44
+
45
+ begin
46
+ require 'cucumber/rake/task'
47
+ Cucumber::Rake::Task.new(:features)
48
+
49
+ task :features => :check_dependencies
50
+ rescue LoadError
51
+ task :features do
52
+ abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
53
+ end
54
+ end
55
+
56
+ task :default => :spec
57
+
58
+ require 'rake/rdoctask'
59
+ Rake::RDocTask.new do |rdoc|
60
+ rdoc.rdoc_dir = 'rdoc'
61
+ rdoc.title = "patronage #{version}"
62
+ rdoc.rdoc_files.include('README*')
63
+ rdoc.rdoc_files.include('lib/**/*.rb')
64
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.7
@@ -0,0 +1,9 @@
1
+ Feature: something something
2
+ In order to something something
3
+ A user something something
4
+ something something something
5
+
6
+ Scenario: something something
7
+ Given inspiration
8
+ When I create a sweet new gem
9
+ Then everyone should see how awesome I am
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
2
+ require 'patronage'
3
+
4
+ require 'spec/expectations'
@@ -0,0 +1,8 @@
1
+ # Dependencies
2
+ require 'patron'
3
+ require 'addressable/uri'
4
+
5
+ # Patronage
6
+ require 'patronage/api'
7
+ require 'patronage/service'
8
+ require 'patronage/response'
@@ -0,0 +1,25 @@
1
+ module Patronage
2
+ class API
3
+ def initialize(base_url, options = {})
4
+ @session = ::Patron::Session.new
5
+ @session.base_url = base_url
6
+ @default_params = options.delete(:params) || {}
7
+
8
+ options.each do |key, value|
9
+ if @session.public_methods.include?("#{key}=")
10
+ send("#{key}=", value)
11
+ end
12
+ end
13
+ end
14
+
15
+ def get(url, headers = {})
16
+ url = ::Addressable::URI.parse(url)
17
+ url.query_values = url.query_values.merge(@default_params)
18
+ @session.get(url.to_s, headers)
19
+ end
20
+
21
+ def service(service_name, opts = {})
22
+ Service.new(self, service_name, opts)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ module Patronage
2
+ class Response
3
+ Parsers = {
4
+ /^application\/xml/ => lambda { |body| Hash.from_xml(body) },
5
+ /^text\/xml/ => lambda { |body| Hash.from_xml(body) },
6
+ }
7
+
8
+ def initialize(response)
9
+ @response = response
10
+ end
11
+
12
+ def method_missing(meth_name, *args)
13
+ if @response.public_methods.include?(meth_name.to_s)
14
+ @response.send(meth_name, *args)
15
+ else
16
+ super
17
+ end
18
+ end
19
+
20
+ def data
21
+ unless @data
22
+ mime_type = @response.headers["Content-Type"] || @response.headers["Content-type"] || @response.headers["content-Type"]
23
+ parser = Parsers.keys.find { |matcher| matcher === mime_type }
24
+
25
+ if parser
26
+ @data = Parsers[parser].call(@response.body)
27
+ else
28
+ raise ArgumentError, "unknown parser for #{mime_type}"
29
+ end
30
+ end
31
+ @data
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,23 @@
1
+ module Patronage
2
+ class Service
3
+ attr_reader :name
4
+
5
+ def initialize(api, name, opts = {})
6
+ @api = api
7
+ @name = name.to_s
8
+ @opts = opts
9
+ end
10
+
11
+ def service_location
12
+ location = "/#{name}"
13
+ location << ".#{@opts[:format]}" if @opts[:format]
14
+ location
15
+ end
16
+
17
+ def get(params)
18
+ uri = Addressable::URI.parse(service_location)
19
+ uri.query_values = params
20
+ Response.new(@api.get(uri.to_s))
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,69 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{patronage}
8
+ s.version = "0.0.7"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Rodrigo Kochenburger"]
12
+ s.date = %q{2010-02-18}
13
+ s.description = %q{Generic and simple webservice client library built on top of Patron, which uses libcurl}
14
+ s.email = %q{divoxx@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "features/patronage.feature",
27
+ "features/step_definitions/patronage_steps.rb",
28
+ "features/support/env.rb",
29
+ "lib/patronage.rb",
30
+ "lib/patronage/api.rb",
31
+ "lib/patronage/response.rb",
32
+ "lib/patronage/service.rb",
33
+ "patronage.gemspec",
34
+ "spec/patronage_spec.rb",
35
+ "spec/spec_helper.rb"
36
+ ]
37
+ s.homepage = %q{http://github.com/divoxx/patronage}
38
+ s.rdoc_options = ["--charset=UTF-8"]
39
+ s.require_paths = ["lib"]
40
+ s.rubygems_version = %q{1.3.5}
41
+ s.summary = %q{Generic and simple webservice client library built on top of Patron, which uses libcurl}
42
+ s.test_files = [
43
+ "spec/patronage_spec.rb",
44
+ "spec/spec_helper.rb"
45
+ ]
46
+
47
+ if s.respond_to? :specification_version then
48
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
49
+ s.specification_version = 3
50
+
51
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
52
+ s.add_runtime_dependency(%q<addressable>, [">= 2.1.0"])
53
+ s.add_runtime_dependency(%q<patron>, [">= 0.4.2"])
54
+ s.add_development_dependency(%q<rspec>, [">= 0"])
55
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
56
+ else
57
+ s.add_dependency(%q<addressable>, [">= 2.1.0"])
58
+ s.add_dependency(%q<patron>, [">= 0.4.2"])
59
+ s.add_dependency(%q<rspec>, [">= 0"])
60
+ s.add_dependency(%q<cucumber>, [">= 0"])
61
+ end
62
+ else
63
+ s.add_dependency(%q<addressable>, [">= 2.1.0"])
64
+ s.add_dependency(%q<patron>, [">= 0.4.2"])
65
+ s.add_dependency(%q<rspec>, [">= 0"])
66
+ s.add_dependency(%q<cucumber>, [">= 0"])
67
+ end
68
+ end
69
+
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Patronage" do
4
+ it "fails" do
5
+ fail "hey buddy, you should probably rename this file and start specing for real"
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'patronage'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patronage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Kochenburger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-03 00:00:00 -08:00
12
+ date: 2010-02-18 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,7 +52,7 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: "0"
54
54
  version:
55
- description: ""
55
+ description: Generic and simple webservice client library built on top of Patron, which uses libcurl
56
56
  email: divoxx@gmail.com
57
57
  executables: []
58
58
 
@@ -62,8 +62,22 @@ extra_rdoc_files:
62
62
  - LICENSE
63
63
  - README.rdoc
64
64
  files:
65
+ - .document
66
+ - .gitignore
65
67
  - LICENSE
66
68
  - README.rdoc
69
+ - Rakefile
70
+ - VERSION
71
+ - features/patronage.feature
72
+ - features/step_definitions/patronage_steps.rb
73
+ - features/support/env.rb
74
+ - lib/patronage.rb
75
+ - lib/patronage/api.rb
76
+ - lib/patronage/response.rb
77
+ - lib/patronage/service.rb
78
+ - patronage.gemspec
79
+ - spec/patronage_spec.rb
80
+ - spec/spec_helper.rb
67
81
  has_rdoc: true
68
82
  homepage: http://github.com/divoxx/patronage
69
83
  licenses: []
@@ -92,5 +106,6 @@ rubygems_version: 1.3.5
92
106
  signing_key:
93
107
  specification_version: 3
94
108
  summary: Generic and simple webservice client library built on top of Patron, which uses libcurl
95
- test_files: []
96
-
109
+ test_files:
110
+ - spec/patronage_spec.rb
111
+ - spec/spec_helper.rb