chargify_api_ares 0.5.4 → 0.6.0

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.
data/.gitignore CHANGED
@@ -2,3 +2,6 @@ config/remote.yml
2
2
  spec/remote/remote.yml
3
3
  pkg
4
4
  .rvmrc
5
+ .ruby-version
6
+ .bundle/
7
+ bin/
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chargify_api_ares (0.5.4)
5
- activeresource (>= 2.3.5)
4
+ chargify_api_ares (0.6.0)
5
+ activeresource (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
@@ -19,8 +19,8 @@ GEM
19
19
  builder (3.0.4)
20
20
  coderay (1.0.8)
21
21
  diff-lcs (1.1.3)
22
- factory_girl (2.1.2)
23
- activesupport
22
+ factory_girl (2.6.4)
23
+ activesupport (>= 2.3.9)
24
24
  faker (1.1.2)
25
25
  i18n (~> 0.5)
26
26
  fakeweb (1.3.0)
@@ -31,8 +31,9 @@ GEM
31
31
  pry (>= 0.9.10)
32
32
  terminal-table (>= 1.4.3)
33
33
  thor (>= 0.14.6)
34
- guard-rspec (0.5.11)
35
- guard (>= 0.8.4)
34
+ guard-rspec (2.4.0)
35
+ guard (>= 1.1)
36
+ rspec (~> 2.11)
36
37
  i18n (0.6.1)
37
38
  listen (0.7.2)
38
39
  lumberjack (1.0.2)
@@ -42,16 +43,16 @@ GEM
42
43
  coderay (~> 1.0.5)
43
44
  method_source (~> 0.8)
44
45
  slop (~> 3.4)
45
- rake (0.9.6)
46
+ rake (10.0.3)
46
47
  rb-fsevent (0.9.3)
47
- rspec (2.7.0)
48
- rspec-core (~> 2.7.0)
49
- rspec-expectations (~> 2.7.0)
50
- rspec-mocks (~> 2.7.0)
51
- rspec-core (2.7.1)
52
- rspec-expectations (2.7.0)
53
- diff-lcs (~> 1.1.2)
54
- rspec-mocks (2.7.0)
48
+ rspec (2.12.0)
49
+ rspec-core (~> 2.12.0)
50
+ rspec-expectations (~> 2.12.0)
51
+ rspec-mocks (~> 2.12.0)
52
+ rspec-core (2.12.2)
53
+ rspec-expectations (2.12.1)
54
+ diff-lcs (~> 1.1.3)
55
+ rspec-mocks (2.12.2)
55
56
  slop (3.4.3)
56
57
  terminal-table (1.4.5)
57
58
  thor (0.17.0)
@@ -61,11 +62,11 @@ PLATFORMS
61
62
 
62
63
  DEPENDENCIES
63
64
  chargify_api_ares!
64
- factory_girl (~> 2.1.0)
65
+ factory_girl (~> 2.6)
65
66
  faker (~> 1.1.2)
66
67
  fakeweb (~> 1.3.0)
67
68
  growl (~> 1.0.3)
68
- guard-rspec (~> 0.5.0)
69
- rake (~> 0.9.2)
69
+ guard-rspec (~> 2.4.0)
70
+ rake (~> 10.0.3)
70
71
  rb-fsevent (~> 0.9.2)
71
- rspec (~> 2.7.0)
72
+ rspec (~> 2.12.0)
data/README.md CHANGED
@@ -2,9 +2,9 @@ Chargify API wrapper for Ruby (using ActiveResource)
2
2
  ====================================================
3
3
  [![build status](https://secure.travis-ci.org/chargify/chargify_api_ares.png)](http://travis-ci.org/chargify/chargify_api_ares)
4
4
 
5
- This is a Ruby wrapper for the [Chargify](http://chargify.com) API that leverages ActiveResource.
5
+ **Please see important compatibility information at the bottom of this file.**
6
6
 
7
- ActiveResource versions 3.0.0 to 3.0.19 are not compatible and will throw an exception. Please use at least version 3.0.20 if on 3.0. For more information see the [relevant rails pull request](https://github.com/rails/rails/pull/8853/files).
7
+ This is a Ruby wrapper for the [Chargify](http://chargify.com) API that leverages ActiveResource.
8
8
 
9
9
  It allows you to interface with the Chargify API using simple ActiveRecord-like syntax, i.e.:
10
10
 
@@ -66,3 +66,44 @@ Now you'll have access to classes the interact with the Chargify API, such as:
66
66
  * `Chargify::Subscription`
67
67
 
68
68
  Check out the examples in the `examples` directory. If you're not familiar with how ActiveResource works, you may be interested in some [ActiveResource Documentation](http://apidock.com/rails/ActiveResource/Base)
69
+
70
+ ### Compatibility
71
+
72
+ * Rails/ActiveResource 2.3.x, use 0.5.x
73
+ * Rails/ActiveResource 3.x, use 0.6 and up
74
+
75
+ | chargify_api_ares | Rails 2.3.x | Rails 3.0.0 - 3.0.19 | Rails 3.0.20 and up |
76
+ | ----------------- | ----------- | -------------------- | ------------------- |
77
+ | 0.5.x | OK | Incompatible | OK |
78
+ | 0.6.x | Incompatible | OK (Monkey-patched) | OK |
79
+
80
+ #### The problem with Rails/ActiveResource/ActiveModel 3.0.0 - 3.0.19
81
+
82
+ Prior to Feb 12, 2013, Chargify would silently refuse to parse XML which
83
+ contained data specified as YAML, such as:
84
+
85
+ ```xml
86
+ <?xml version="1.0" encoding="UTF-8"?>
87
+ <person>
88
+ <name>John</name>
89
+ <email type="yaml" nil="true"/></email>
90
+ </person>
91
+ ```
92
+
93
+ After Feb 12, 2013, Chargify returns a `400 Bad Request` response if
94
+ your XML contains any `type="yaml"` attribute, since there is no valid
95
+ reason to send YAML serialized data to Chargify and doing so smells
96
+ strongly of an attempt to exploit
97
+ [CVE-2013-0156](https://groups.google.com/forum/?fromgroups=#!topic/rubyonrails-security/61bkgvnSGTQ).
98
+
99
+ However, Rails/ActiveModel versions 3.0.0 to 3.0.19 had a bug (see
100
+ <https://github.com/rails/rails/pull/8853>) where any nil attribute
101
+ would have a `type="yaml"` attribute added during XML serialization.
102
+
103
+ Using ActiveResource 3.0.0 - 3.0.19 along with 0.5.x or lower of this
104
+ gem may result in your sending `type="yaml"` XML to Chargify. Thus, your
105
+ requests will be rejected.
106
+
107
+ Version 0.6.x of this gem will attempt to patch your ActiveModel if you
108
+ have an incompatible version. To avoid this patch, you should use
109
+ 3.0.20 or higher of ActiveResource.
data/Rakefile CHANGED
@@ -1,5 +1,4 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
1
+ require 'bundler/gem_tasks'
3
2
  require 'rspec/core/rake_task'
4
3
 
5
4
  RSpec::Core::RakeTask.new(:spec) do |t|
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.7'
5
5
 
6
6
  s.name = 'chargify_api_ares'
7
- s.version = '0.5.4'
8
- s.date = '2013-02-14'
7
+ s.version = '0.6.0'
8
+ s.date = '2013-02-16'
9
9
  s.summary = 'A Chargify API wrapper for Ruby using ActiveResource'
10
10
  s.description = ''
11
11
  s.authors = ["Michael Klett", "Nathan Verni", "Graham McIntire", "Rodrigo Franco", "Shay Frendt"]
@@ -17,15 +17,15 @@ Gem::Specification.new do |s|
17
17
  s.require_paths = %w[lib]
18
18
 
19
19
  # Runtime Dependencies
20
- s.add_runtime_dependency('activeresource', '>= 2.3.5')
20
+ s.add_runtime_dependency('activeresource', '>= 3.0.0')
21
21
 
22
22
  # Development Dependencies
23
- s.add_development_dependency('rake', '~> 0.9.2')
24
- s.add_development_dependency('rspec', '~> 2.7.0')
25
- s.add_development_dependency('factory_girl', '~> 2.1.0')
23
+ s.add_development_dependency('rake', '~> 10.0.3')
24
+ s.add_development_dependency('rspec', '~> 2.12.0')
25
+ s.add_development_dependency('factory_girl', '~> 2.6')
26
26
  s.add_development_dependency('fakeweb', '~> 1.3.0')
27
27
  s.add_development_dependency('faker', '~> 1.1.2')
28
- s.add_development_dependency('guard-rspec', '~> 0.5.0')
28
+ s.add_development_dependency('guard-rspec', '~> 2.4.0')
29
29
  s.add_development_dependency('growl', '~> 1.0.3')
30
30
  s.add_development_dependency('rb-fsevent', '~> 0.9.2')
31
31
  end
@@ -15,9 +15,10 @@ require 'chargify_api_ares/resources/transaction'
15
15
  require 'chargify_api_ares/resources/usage'
16
16
  require 'chargify_api_ares/resources/webhook'
17
17
 
18
+ require 'active_resource/version'
18
19
  if defined?(::ActiveResource::VERSION::MAJOR) &&
19
20
  ::ActiveResource::VERSION::MAJOR == 3 &&
20
21
  ::ActiveResource::VERSION::MINOR == 0 &&
21
22
  ::ActiveResource::VERSION::TINY < 20
22
- raise RuntimeError, 'This gem is not compatible with ActiveResource versions 3.0.0 to 3.0.19, please upgrade to at least 3.0.20'
23
- end
23
+ require 'patches/activemodel_3_0_patch.rb'
24
+ end
@@ -0,0 +1,23 @@
1
+ ActiveSupport::Deprecation.warn("The Chargify gem is patching your ActiveModel because it is less than version 3.0.20! (https://github.com/chargify/chargify_api_ares/blob/master/README.md)")
2
+
3
+ module ActiveModel
4
+ module Serializers
5
+ module Xml
6
+ class Serializer
7
+ class Attribute
8
+ protected
9
+
10
+ # Patch `compute_type` to avoid adding `type="yaml"` to
11
+ # nil attributes in < 3.0.20 ActiveModel
12
+ #
13
+ # See https://github.com/rails/rails/pull/8853
14
+ alias_method :compute_type_orig, :compute_type
15
+ def compute_type
16
+ return if value.nil?
17
+ compute_type_orig
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,9 +1,6 @@
1
- require 'rubygems'
2
- require 'rspec'
3
- $LOAD_PATH.unshift(File.dirname(__FILE__))
4
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
1
+ require 'spec_helper'
5
2
 
6
- require 'chargify_api_ares'
3
+ FakeWeb.allow_net_connect = true
7
4
 
8
5
  unless File.exists?(File.join(File.dirname(__FILE__), 'remote.yml'))
9
6
  STDERR.puts "\nERROR: Make sure a remote.yml file exists at ./spec/remote/remote.yml\n\n"
@@ -11,10 +8,6 @@ unless File.exists?(File.join(File.dirname(__FILE__), 'remote.yml'))
11
8
  end
12
9
 
13
10
  RSpec.configure do |config|
14
- config.filter_run :focused => true
15
- config.run_all_when_everything_filtered = true
16
- config.alias_example_to :fit, :focused => true
17
- config.color_enabled = true
18
11
  config.before(:all) do
19
12
  Chargify.configure do |c|
20
13
  c.api_key = remote_configuration['api_key']
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require 'remote/remote_helper'
2
2
 
3
3
  describe "Remote" do
4
4
 
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::Coupon do
3
+ describe Chargify::Coupon, :fake_resource do
4
4
  context '.find_by_product_family_id_and_code' do
5
- let(:existing_coupon) { Factory.build(:coupon, :code => '20OFF') }
5
+ let(:existing_coupon) { build(:coupon, :code => '20OFF') }
6
6
 
7
7
  before(:each) do
8
8
  FakeWeb.register_uri(:get, "#{test_domain}/coupons/lookup.xml?code=#{existing_coupon.code}&product_family_id=10", :body => existing_coupon.attributes.to_xml)
@@ -24,8 +24,8 @@ describe Chargify::Coupon do
24
24
  end
25
25
 
26
26
  context '.find_all_by_product_family_id' do
27
- let(:coupon_1) { Factory.build(:coupon, :product_family_id => 5) }
28
- let(:coupon_2) { Factory.build(:coupon, :product_family_id => 5) }
27
+ let(:coupon_1) { build(:coupon, :product_family_id => 5) }
28
+ let(:coupon_2) { build(:coupon, :product_family_id => 5) }
29
29
 
30
30
  before do
31
31
  FakeWeb.register_uri(:get, "#{test_domain}/coupons.xml?product_family_id=5", :body => [coupon_1.attributes, coupon_2.attributes].to_xml)
@@ -39,7 +39,7 @@ describe Chargify::Coupon do
39
39
  end
40
40
 
41
41
  context '.validate' do
42
- let(:coupon_1) { Factory.build(:coupon, :product_family_id => 6) }
42
+ let(:coupon_1) { build(:coupon, :product_family_id => 6) }
43
43
 
44
44
  before do
45
45
  FakeWeb.register_uri(:get, "#{test_domain}/coupons/validate.xml?product_family_id=6&coupon_code=foobar123", :body => coupon_1.attributes.to_xml)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::Customer do
3
+ describe Chargify::Customer, :fake_resource do
4
4
  context '.find_by_reference' do
5
5
  let(:existing_customer) { Chargify::Customer.create(:id => 5, :reference => 'sigma') }
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::ProductFamily do
3
+ describe Chargify::ProductFamily, :fake_resource do
4
4
  context ".find_by_handle" do
5
5
  let(:product_family) { Chargify::ProductFamily.create(:id => 1, :handle => 'farming') }
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::Product do
3
+ describe Chargify::Product, :fake_resource do
4
4
 
5
5
  context '.find_by_handle' do
6
6
  let(:existing_product) { Chargify::Product.create(:id => 2, :handle => 'green-money') }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::Subscription::Component do
3
+ describe Chargify::Subscription::Component, :fake_resource do
4
4
  before(:each) do
5
5
  @subscription = Chargify::Subscription.new(:id => 1)
6
6
  @sc1 = Chargify::Subscription::Component.new(
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::Subscription do
3
+ describe Chargify::Subscription, :fake_resource do
4
4
 
5
5
  context 'strips nested association attributes before saving' do
6
6
  before do
7
- @subscription = FactoryGirl.build(:subscription_with_extra_attrs)
7
+ @subscription = build(:subscription_with_extra_attrs)
8
8
  end
9
9
 
10
10
  it 'strips customer' do
@@ -26,15 +26,15 @@ describe Chargify::Subscription do
26
26
  end
27
27
 
28
28
  it "doesn't strip other attrs" do
29
- subscription = FactoryGirl.build(:subscription)
29
+ subscription = build(:subscription)
30
30
 
31
31
  lambda { subscription.save! }.should_not change(subscription, :attributes)
32
32
  end
33
33
  end
34
34
 
35
35
  it 'creates a one-time charge' do
36
- id = FactoryGirl.generate(:subscription_id)
37
- subscription = Factory(:subscription, :id => id)
36
+ id = generate(:subscription_id)
37
+ subscription = build(:subscription, :id => id)
38
38
  subscription.stub!(:persisted?).and_return(true)
39
39
  expected_response = {:charge => {:amount_in_cents => 1000, :memo => "one-time charge", :success => true}}.to_xml
40
40
  FakeWeb.register_uri(:post, "#{test_domain}/subscriptions/#{id}/charges.xml", :status => 201, :body => expected_response)
@@ -46,8 +46,8 @@ describe Chargify::Subscription do
46
46
  end
47
47
 
48
48
  it 'finds by customer reference' do
49
- customer = Factory(:customer, :reference => 'roger', :id => 10)
50
- subscription = Factory(:subscription, :id => 11, :customer_id => customer.id, :product => Factory(:product))
49
+ customer = build(:customer, :reference => 'roger', :id => 10)
50
+ subscription = build(:subscription, :id => 11, :customer_id => customer.id, :product => build(:product))
51
51
 
52
52
  expected_response = [subscription.attributes].to_xml(:root => 'subscriptions')
53
53
  FakeWeb.register_uri(:get, "#{test_domain}/subscriptions.xml?customer_id=#{customer.id}", :status => 200, :body => expected_response)
@@ -57,7 +57,7 @@ describe Chargify::Subscription do
57
57
  end
58
58
 
59
59
  it 'cancels the subscription' do
60
- @subscription = Factory(:subscription, :id => 1)
60
+ @subscription = build(:subscription, :id => 1)
61
61
  find_subscription = lambda { Chargify::Subscription.find(1) }
62
62
 
63
63
  FakeWeb.register_uri(:get, "#{test_domain}/subscriptions/1.xml", :body => @subscription.attributes.to_xml)
@@ -68,8 +68,8 @@ describe Chargify::Subscription do
68
68
  end
69
69
 
70
70
  it 'migrates the subscription' do
71
- id = FactoryGirl.generate(:subscription_id)
72
- subscription = Factory(:subscription, :id => id)
71
+ id = generate(:subscription_id)
72
+ subscription = build(:subscription, :id => id)
73
73
  subscription.stub!(:persisted?).and_return(true)
74
74
  expected_response = [subscription.attributes].to_xml(:root => 'subscription')
75
75
  FakeWeb.register_uri(:post, "#{test_domain}/subscriptions/#{id}/migrations.xml?migration%5Bproduct_handle%5D=upgraded-plan", :status => 201, :body => expected_response)
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Chargify::Usage do
3
+ describe Chargify::Usage, :fake_resource do
4
4
  context "create" do
5
5
  before do
6
- @subscription = Factory(:subscription)
7
- @component = Factory(:component)
6
+ @subscription = build(:subscription)
7
+ @component = build(:component)
8
8
  @now = DateTime.now.to_s
9
9
  end
10
10
 
@@ -24,8 +24,8 @@ describe Chargify::Usage do
24
24
 
25
25
  context "find" do
26
26
  before do
27
- @subscription = Factory(:subscription)
28
- @component = Factory(:component)
27
+ @subscription = build(:subscription)
28
+ @component = build(:component)
29
29
  @now = DateTime.now.to_s
30
30
  end
31
31
 
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,11 @@
1
1
  $:.unshift File.expand_path('../lib', File.dirname(__FILE__))
2
2
 
3
- require 'chargify_api_ares'
4
- require 'rspec'
5
- require 'fakeweb'
3
+ require 'bundler'
4
+ Bundler.require(:default, :development)
5
+
6
6
  require 'support/fake_resource'
7
- require 'factory_girl'
8
- require 'faker'
9
- require 'factories'
10
7
 
8
+ FactoryGirl.find_definitions
11
9
  ActiveResource::Base.send :include, ActiveResource::FakeResource
12
10
  FakeWeb.allow_net_connect = false
13
11
 
@@ -19,11 +17,18 @@ end
19
17
  RSpec.configure do |config|
20
18
  config.filter_run :focused => true
21
19
  config.run_all_when_everything_filtered = true
20
+ config.treat_symbols_as_metadata_keys_with_true_values = true
22
21
  config.alias_example_to :fit, :focused => true
23
22
  config.color_enabled = true
24
-
25
- config.after(:each) do
26
- ActiveResource::FakeResource.clean
23
+
24
+ config.include FactoryGirl::Syntax::Methods
25
+
26
+ config.before(:each, :fake_resource) do
27
+ ActiveResource::FakeResource.enable
28
+ end
29
+
30
+ config.after(:each, :fake_resource) do
31
+ ActiveResource::FakeResource.disable
27
32
  end
28
33
  end
29
34
 
@@ -1,6 +1,6 @@
1
1
  # Taken from https://gist.github.com/238158/487a411c392e1fb2a0c00347e32444320f5cdd49
2
2
  module ActiveResource
3
-
3
+
4
4
  #
5
5
  # The FakeResource fakes ActiveResources so that no real resources are transferred. It catches the creation methods
6
6
  # and stores the resources internally instead of sending to a remote service and responds these resources back on
@@ -10,71 +10,95 @@ module ActiveResource
10
10
  # fake a back end service in the BDD cycle
11
11
  #
12
12
  module FakeResource
13
-
13
+ extend ActiveSupport::Concern
14
+
14
15
  @@fake_resources = []
15
-
16
+ @@enabled = false
17
+
18
+ def self.enable
19
+ @@enabled = true
20
+ end
21
+
22
+ def self.disable
23
+ @@enabled = false
24
+ self.clean
25
+ end
26
+
16
27
  def self.clean
17
28
  FakeWeb.clean_registry
18
29
  @@fake_resources = []
19
30
  end
20
-
21
- def self.included(base)
22
- base.class_eval do
23
-
24
- def save
31
+
32
+ included do
33
+ def save_with_fake_resource
34
+ if @@enabled
25
35
  @@fake_resources << self
26
36
  update_fake_responses
37
+ else
38
+ save_without_fake_resource
27
39
  end
28
-
29
- def destroy
40
+ end
41
+ alias_method_chain :save, :fake_resource
42
+
43
+ def destroy_with_fake_resource
44
+ if @@enabled
30
45
  @@fake_resources.delete(self)
31
46
  update_fake_responses
47
+ else
48
+ destroy_without_fake_resource
32
49
  end
33
-
34
- def self.delete(id, options = {})
35
- puts "delete"
50
+ end
51
+ alias_method_chain :destroy, :fake_resource
52
+
53
+ def self.delete(id, options = {})
54
+ if @@enabled
36
55
  @@fake_resources.delete_if {|r| r.id == id }
37
56
  #update_fake_responses
57
+ else
58
+ super
38
59
  end
39
-
40
- def self.exists?(id, options = {})
60
+ end
61
+
62
+ def self.exists?(id, options = {})
63
+ if @@enabled
41
64
  not @@fake_resources.select {|r| r.id == id}.blank?
65
+ else
66
+ super
42
67
  end
43
-
44
68
  end
45
69
  end
46
-
70
+
47
71
  def save!
48
- save
49
- end
50
-
51
- def save
52
- super
72
+ if @@enabled
73
+ save
74
+ else
75
+ super
76
+ end
53
77
  end
54
-
78
+
55
79
  private
56
-
57
- def update_fake_responses
58
- FakeWeb.clean_registry
59
-
60
- @@fake_resources.each do |r|
61
- FakeWeb.register_uri(:get, element_uri, :body => r.to_xml)
62
- end
63
-
64
- FakeWeb.register_uri(:get, collection_uri, :body => @@fake_resources.to_xml)
65
- end
66
-
67
- def element_uri
68
- "#{base_uri}#{element_path}"
69
- end
70
-
71
- def collection_uri
72
- "#{base_uri}#{collection_path}"
73
- end
74
-
75
- def base_uri
76
- "#{connection.site.scheme}://#{connection.user}:#{connection.password}@#{connection.site.host}:#{connection.site.port}"
80
+
81
+ def update_fake_responses
82
+ FakeWeb.clean_registry
83
+
84
+ @@fake_resources.each do |r|
85
+ FakeWeb.register_uri(:get, element_uri, :body => r.to_xml)
77
86
  end
78
-
87
+
88
+ FakeWeb.register_uri(:get, collection_uri, :body => @@fake_resources.to_xml)
89
+ end
90
+
91
+ def element_uri
92
+ "#{base_uri}#{element_path}"
93
+ end
94
+
95
+ def collection_uri
96
+ "#{base_uri}#{collection_path}"
97
+ end
98
+
99
+ def base_uri
100
+ "#{connection.site.scheme}://#{connection.user}:#{connection.password}@#{connection.site.host}:#{connection.site.port}"
79
101
  end
102
+
103
+ end
80
104
  end
metadata CHANGED
@@ -1,15 +1,10 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: chargify_api_ares
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 4
10
- version: 0.5.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Michael Klett
14
9
  - Nathan Verni
15
10
  - Graham McIntire
@@ -18,162 +13,158 @@ authors:
18
13
  autorequire:
19
14
  bindir: bin
20
15
  cert_chain: []
21
-
22
- date: 2013-02-14 00:00:00 Z
23
- dependencies:
24
- - !ruby/object:Gem::Dependency
25
- type: :runtime
16
+ date: 2013-02-16 00:00:00.000000000 Z
17
+ dependencies:
18
+ - !ruby/object:Gem::Dependency
26
19
  name: activeresource
27
- version_requirements: &id001 !ruby/object:Gem::Requirement
20
+ requirement: !ruby/object:Gem::Requirement
28
21
  none: false
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- hash: 9
33
- segments:
34
- - 2
35
- - 3
36
- - 5
37
- version: 2.3.5
38
- requirement: *id001
22
+ requirements:
23
+ - - ! '>='
24
+ - !ruby/object:Gem::Version
25
+ version: 3.0.0
26
+ type: :runtime
39
27
  prerelease: false
40
- - !ruby/object:Gem::Dependency
41
- type: :development
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ - !ruby/object:Gem::Dependency
42
35
  name: rake
43
- version_requirements: &id002 !ruby/object:Gem::Requirement
36
+ requirement: !ruby/object:Gem::Requirement
44
37
  none: false
45
- requirements:
38
+ requirements:
46
39
  - - ~>
47
- - !ruby/object:Gem::Version
48
- hash: 63
49
- segments:
50
- - 0
51
- - 9
52
- - 2
53
- version: 0.9.2
54
- requirement: *id002
55
- prerelease: false
56
- - !ruby/object:Gem::Dependency
40
+ - !ruby/object:Gem::Version
41
+ version: 10.0.3
57
42
  type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: 10.0.3
50
+ - !ruby/object:Gem::Dependency
58
51
  name: rspec
59
- version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ requirement: !ruby/object:Gem::Requirement
60
53
  none: false
61
- requirements:
54
+ requirements:
62
55
  - - ~>
63
- - !ruby/object:Gem::Version
64
- hash: 19
65
- segments:
66
- - 2
67
- - 7
68
- - 0
69
- version: 2.7.0
70
- requirement: *id003
71
- prerelease: false
72
- - !ruby/object:Gem::Dependency
56
+ - !ruby/object:Gem::Version
57
+ version: 2.12.0
73
58
  type: :development
59
+ prerelease: false
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 2.12.0
66
+ - !ruby/object:Gem::Dependency
74
67
  name: factory_girl
75
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ requirement: !ruby/object:Gem::Requirement
76
69
  none: false
77
- requirements:
70
+ requirements:
78
71
  - - ~>
79
- - !ruby/object:Gem::Version
80
- hash: 11
81
- segments:
82
- - 2
83
- - 1
84
- - 0
85
- version: 2.1.0
86
- requirement: *id004
87
- prerelease: false
88
- - !ruby/object:Gem::Dependency
72
+ - !ruby/object:Gem::Version
73
+ version: '2.6'
89
74
  type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: '2.6'
82
+ - !ruby/object:Gem::Dependency
90
83
  name: fakeweb
91
- version_requirements: &id005 !ruby/object:Gem::Requirement
84
+ requirement: !ruby/object:Gem::Requirement
92
85
  none: false
93
- requirements:
86
+ requirements:
94
87
  - - ~>
95
- - !ruby/object:Gem::Version
96
- hash: 27
97
- segments:
98
- - 1
99
- - 3
100
- - 0
88
+ - !ruby/object:Gem::Version
101
89
  version: 1.3.0
102
- requirement: *id005
103
- prerelease: false
104
- - !ruby/object:Gem::Dependency
105
90
  type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: 1.3.0
98
+ - !ruby/object:Gem::Dependency
106
99
  name: faker
107
- version_requirements: &id006 !ruby/object:Gem::Requirement
100
+ requirement: !ruby/object:Gem::Requirement
108
101
  none: false
109
- requirements:
102
+ requirements:
110
103
  - - ~>
111
- - !ruby/object:Gem::Version
112
- hash: 23
113
- segments:
114
- - 1
115
- - 1
116
- - 2
104
+ - !ruby/object:Gem::Version
117
105
  version: 1.1.2
118
- requirement: *id006
119
- prerelease: false
120
- - !ruby/object:Gem::Dependency
121
106
  type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ~>
112
+ - !ruby/object:Gem::Version
113
+ version: 1.1.2
114
+ - !ruby/object:Gem::Dependency
122
115
  name: guard-rspec
123
- version_requirements: &id007 !ruby/object:Gem::Requirement
116
+ requirement: !ruby/object:Gem::Requirement
124
117
  none: false
125
- requirements:
118
+ requirements:
126
119
  - - ~>
127
- - !ruby/object:Gem::Version
128
- hash: 11
129
- segments:
130
- - 0
131
- - 5
132
- - 0
133
- version: 0.5.0
134
- requirement: *id007
135
- prerelease: false
136
- - !ruby/object:Gem::Dependency
120
+ - !ruby/object:Gem::Version
121
+ version: 2.4.0
137
122
  type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ~>
128
+ - !ruby/object:Gem::Version
129
+ version: 2.4.0
130
+ - !ruby/object:Gem::Dependency
138
131
  name: growl
139
- version_requirements: &id008 !ruby/object:Gem::Requirement
132
+ requirement: !ruby/object:Gem::Requirement
140
133
  none: false
141
- requirements:
134
+ requirements:
142
135
  - - ~>
143
- - !ruby/object:Gem::Version
144
- hash: 17
145
- segments:
146
- - 1
147
- - 0
148
- - 3
136
+ - !ruby/object:Gem::Version
149
137
  version: 1.0.3
150
- requirement: *id008
151
- prerelease: false
152
- - !ruby/object:Gem::Dependency
153
138
  type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: 1.0.3
146
+ - !ruby/object:Gem::Dependency
154
147
  name: rb-fsevent
155
- version_requirements: &id009 !ruby/object:Gem::Requirement
148
+ requirement: !ruby/object:Gem::Requirement
156
149
  none: false
157
- requirements:
150
+ requirements:
158
151
  - - ~>
159
- - !ruby/object:Gem::Version
160
- hash: 63
161
- segments:
162
- - 0
163
- - 9
164
- - 2
152
+ - !ruby/object:Gem::Version
165
153
  version: 0.9.2
166
- requirement: *id009
154
+ type: :development
167
155
  prerelease: false
168
- description: ""
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ~>
160
+ - !ruby/object:Gem::Version
161
+ version: 0.9.2
162
+ description: ''
169
163
  email: support@chargify.com
170
164
  executables: []
171
-
172
165
  extensions: []
173
-
174
166
  extra_rdoc_files: []
175
-
176
- files:
167
+ files:
177
168
  - .gitignore
178
169
  - .travis.yml
179
170
  - Gemfile
@@ -205,10 +196,11 @@ files:
205
196
  - lib/chargify_api_ares/resources/transaction.rb
206
197
  - lib/chargify_api_ares/resources/usage.rb
207
198
  - lib/chargify_api_ares/resources/webhook.rb
199
+ - lib/patches/activemodel_3_0_patch.rb
208
200
  - spec/factories.rb
209
201
  - spec/remote/remote.example.yml
202
+ - spec/remote/remote_helper.rb
210
203
  - spec/remote/remote_spec.rb
211
- - spec/remote/spec_helper.rb
212
204
  - spec/resources/base_spec.rb
213
205
  - spec/resources/coupon_spec.rb
214
206
  - spec/resources/customer_spec.rb
@@ -223,42 +215,33 @@ files:
223
215
  - spec/support/fake_resource.rb
224
216
  homepage: http://github.com/chargify/chargify_api_ares
225
217
  licenses: []
226
-
227
218
  post_install_message:
228
219
  rdoc_options: []
229
-
230
- require_paths:
220
+ require_paths:
231
221
  - lib
232
- required_ruby_version: !ruby/object:Gem::Requirement
222
+ required_ruby_version: !ruby/object:Gem::Requirement
233
223
  none: false
234
- requirements:
235
- - - ">="
236
- - !ruby/object:Gem::Version
237
- hash: 3
238
- segments:
239
- - 0
240
- version: "0"
241
- required_rubygems_version: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ! '>='
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
229
  none: false
243
- requirements:
244
- - - ">="
245
- - !ruby/object:Gem::Version
246
- hash: 3
247
- segments:
248
- - 0
249
- version: "0"
230
+ requirements:
231
+ - - ! '>='
232
+ - !ruby/object:Gem::Version
233
+ version: '0'
250
234
  requirements: []
251
-
252
235
  rubyforge_project:
253
- rubygems_version: 1.8.25
236
+ rubygems_version: 1.8.23
254
237
  signing_key:
255
238
  specification_version: 3
256
239
  summary: A Chargify API wrapper for Ruby using ActiveResource
257
- test_files:
240
+ test_files:
258
241
  - spec/factories.rb
259
242
  - spec/remote/remote.example.yml
243
+ - spec/remote/remote_helper.rb
260
244
  - spec/remote/remote_spec.rb
261
- - spec/remote/spec_helper.rb
262
245
  - spec/resources/base_spec.rb
263
246
  - spec/resources/coupon_spec.rb
264
247
  - spec/resources/customer_spec.rb