fastspring-saasy 0.5.5 → 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.
- checksums.yaml +7 -0
- data/.gitignore +51 -0
- data/Gemfile +2 -4
- data/Gemfile.lock +4 -25
- data/README.rdoc +23 -2
- data/Rakefile +1 -13
- data/fastspring-saasy-0.5.5.gem +0 -0
- data/fastspring-saasy.gemspec +14 -74
- data/lib/fastspring-saasy.rb +1 -0
- data/lib/fastspring-saasy/order.rb +4 -0
- data/lib/fastspring-saasy/private_api_base.rb +14 -0
- data/lib/fastspring-saasy/subscription.rb +10 -3
- data/spec/fixtures/basic_order_search.xml +30 -0
- data/spec/fixtures/basic_updated_subscription.xml +25 -0
- data/spec/order_spec.rb +10 -0
- data/spec/spec_helper.rb +7 -4
- data/spec/subscription_spec.rb +16 -0
- metadata +42 -58
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 6ec611dbeb819d848bd29442ef1547625a07df04
|
|
4
|
+
data.tar.gz: 822563c9505e32c16f4247b47dc9db5771378f34
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b94e7269c9c5ffe2391b9ee21096d9e7e8ac8b1579a4d166095c7759f8101ee580a5b19d80e102ed8a81055c97284609693582e23ba4e0b9fa57566e2d1c4577
|
|
7
|
+
data.tar.gz: 6c411738518eedc937ec7fa56c69e237f49116710b0e5f4e0c8f28d58ca4adab5b7b8987094f79f10a5bd41f6c8d54e63b331439a0c66f43efb0321b61fb4f79
|
data/.gitignore
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# rcov generated
|
|
2
|
+
coverage
|
|
3
|
+
|
|
4
|
+
# rdoc generated
|
|
5
|
+
rdoc
|
|
6
|
+
|
|
7
|
+
# yard generated
|
|
8
|
+
doc
|
|
9
|
+
.yardoc
|
|
10
|
+
|
|
11
|
+
# bundler
|
|
12
|
+
.bundle
|
|
13
|
+
|
|
14
|
+
# jeweler generated
|
|
15
|
+
pkg
|
|
16
|
+
|
|
17
|
+
.rvmrc
|
|
18
|
+
.rbenv-version
|
|
19
|
+
|
|
20
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
|
21
|
+
#
|
|
22
|
+
# * Create a file at ~/.gitignore
|
|
23
|
+
# * Include files you want ignored
|
|
24
|
+
# * Run: git config --global core.excludesfile ~/.gitignore
|
|
25
|
+
#
|
|
26
|
+
# After doing this, these files will be ignored in all your git projects,
|
|
27
|
+
# saving you from having to 'pollute' every project you touch with them
|
|
28
|
+
#
|
|
29
|
+
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
|
30
|
+
#
|
|
31
|
+
# For MacOS:
|
|
32
|
+
#
|
|
33
|
+
.DS_Store
|
|
34
|
+
|
|
35
|
+
# For TextMate
|
|
36
|
+
#*.tmproj
|
|
37
|
+
#tmtags
|
|
38
|
+
|
|
39
|
+
# For emacs:
|
|
40
|
+
#*~
|
|
41
|
+
#\#*
|
|
42
|
+
#.\#*
|
|
43
|
+
|
|
44
|
+
# For vim:
|
|
45
|
+
#*.swp
|
|
46
|
+
|
|
47
|
+
# For redcar:
|
|
48
|
+
#.redcar
|
|
49
|
+
|
|
50
|
+
# For rubinius:
|
|
51
|
+
#*.rbc
|
data/Gemfile
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
source
|
|
1
|
+
source "http://rubygems.org"
|
|
2
2
|
|
|
3
3
|
gem 'httparty'
|
|
4
|
+
gem 'gyoku'
|
|
4
5
|
|
|
5
6
|
group :development do
|
|
6
7
|
gem 'rake'
|
|
7
8
|
gem 'bundler'
|
|
8
|
-
gem 'jeweler'
|
|
9
|
-
gem 'ruby-debug19', :require => 'ruby-debug'
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
group :test do
|
|
13
12
|
gem 'rspec'
|
|
14
13
|
gem 'webmock'
|
|
15
|
-
gem 'ruby-debug19', :require => 'ruby-debug'
|
|
16
14
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -2,27 +2,17 @@ GEM
|
|
|
2
2
|
remote: http://rubygems.org/
|
|
3
3
|
specs:
|
|
4
4
|
addressable (2.3.2)
|
|
5
|
-
|
|
6
|
-
columnize (0.3.6)
|
|
5
|
+
builder (3.2.2)
|
|
7
6
|
crack (0.3.2)
|
|
8
7
|
diff-lcs (1.1.3)
|
|
9
|
-
|
|
8
|
+
gyoku (1.0.0)
|
|
9
|
+
builder (>= 2.1.2)
|
|
10
10
|
httparty (0.10.0)
|
|
11
11
|
multi_json (~> 1.0)
|
|
12
12
|
multi_xml
|
|
13
|
-
jeweler (1.8.4)
|
|
14
|
-
bundler (~> 1.0)
|
|
15
|
-
git (>= 1.2.5)
|
|
16
|
-
rake
|
|
17
|
-
rdoc
|
|
18
|
-
json (1.7.6)
|
|
19
|
-
linecache19 (0.5.12)
|
|
20
|
-
ruby_core_source (>= 0.1.4)
|
|
21
13
|
multi_json (1.5.0)
|
|
22
14
|
multi_xml (0.5.2)
|
|
23
15
|
rake (10.0.3)
|
|
24
|
-
rdoc (3.12)
|
|
25
|
-
json (~> 1.4)
|
|
26
16
|
rspec (2.12.0)
|
|
27
17
|
rspec-core (~> 2.12.0)
|
|
28
18
|
rspec-expectations (~> 2.12.0)
|
|
@@ -31,16 +21,6 @@ GEM
|
|
|
31
21
|
rspec-expectations (2.12.1)
|
|
32
22
|
diff-lcs (~> 1.1.3)
|
|
33
23
|
rspec-mocks (2.12.1)
|
|
34
|
-
ruby-debug-base19 (0.11.25)
|
|
35
|
-
columnize (>= 0.3.1)
|
|
36
|
-
linecache19 (>= 0.5.11)
|
|
37
|
-
ruby_core_source (>= 0.1.4)
|
|
38
|
-
ruby-debug19 (0.11.6)
|
|
39
|
-
columnize (>= 0.3.1)
|
|
40
|
-
linecache19 (>= 0.5.11)
|
|
41
|
-
ruby-debug-base19 (>= 0.11.19)
|
|
42
|
-
ruby_core_source (0.1.5)
|
|
43
|
-
archive-tar-minitar (>= 0.5.2)
|
|
44
24
|
webmock (1.9.0)
|
|
45
25
|
addressable (>= 2.2.7)
|
|
46
26
|
crack (>= 0.1.7)
|
|
@@ -50,9 +30,8 @@ PLATFORMS
|
|
|
50
30
|
|
|
51
31
|
DEPENDENCIES
|
|
52
32
|
bundler
|
|
33
|
+
gyoku
|
|
53
34
|
httparty
|
|
54
|
-
jeweler
|
|
55
35
|
rake
|
|
56
36
|
rspec
|
|
57
|
-
ruby-debug19
|
|
58
37
|
webmock
|
data/README.rdoc
CHANGED
|
@@ -22,6 +22,21 @@ Get subscription
|
|
|
22
22
|
Renew subscription
|
|
23
23
|
sub.renew
|
|
24
24
|
|
|
25
|
+
Update subscription
|
|
26
|
+
attributes = {
|
|
27
|
+
first_name: 'John',
|
|
28
|
+
last_name: 'Doe',
|
|
29
|
+
company: 'Doe Inc.',
|
|
30
|
+
email: 'john.doe@example.com',
|
|
31
|
+
phone_number: '+1 123 456 789',
|
|
32
|
+
product_path: '/product',
|
|
33
|
+
quantity: 1,
|
|
34
|
+
tags: 'tag1, tag2, tag3',
|
|
35
|
+
coupon: 'code',
|
|
36
|
+
proration: true
|
|
37
|
+
}
|
|
38
|
+
sub.update!(attributes)
|
|
39
|
+
|
|
25
40
|
Cancel subscription
|
|
26
41
|
sub.cancel!
|
|
27
42
|
|
|
@@ -29,7 +44,13 @@ Create subscriptions url
|
|
|
29
44
|
FastSpring::Subscription.create_subscription_url('test_product', 'new_co')
|
|
30
45
|
=> http://sites.fastspring.com/acme/product/test_product?referrer=new_co
|
|
31
46
|
|
|
32
|
-
Orders
|
|
47
|
+
Search Orders
|
|
48
|
+
orders = FastSpring::Order.search('search-string')
|
|
49
|
+
orders.each do |order|
|
|
50
|
+
# order.inspect
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Find Order
|
|
33
54
|
order = FastSpring::Order.find('reference')
|
|
34
55
|
order.items.each do |item|
|
|
35
56
|
# item.inspect
|
|
@@ -53,4 +74,4 @@ FastSpring have their own gem at https://github.com/fastspring/fastspring-ruby
|
|
|
53
74
|
|
|
54
75
|
== Copyright
|
|
55
76
|
|
|
56
|
-
Copyright (c)
|
|
77
|
+
Copyright (c) 2014 Richard Patching. See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
|
@@ -11,20 +11,8 @@ rescue Bundler::BundlerError => e
|
|
|
11
11
|
end
|
|
12
12
|
require 'rake'
|
|
13
13
|
|
|
14
|
-
require 'jeweler'
|
|
15
|
-
Jeweler::Tasks.new do |gem|
|
|
16
|
-
gem.name = "fastspring-saasy"
|
|
17
|
-
gem.homepage = "http://github.com/patchfx/fastspring"
|
|
18
|
-
gem.license = "MIT"
|
|
19
|
-
gem.summary = %Q{Ruby lib for using the FastSpring (Saasy) API}
|
|
20
|
-
gem.description = %Q{Ruby lib for using the FastSpring (Saas) subscription management API}
|
|
21
|
-
gem.email = "richard@justaddpixels.com"
|
|
22
|
-
gem.authors = ["Richard Patching"]
|
|
23
|
-
gem.add_development_dependency 'httparty', '~> 0.8.1'
|
|
24
|
-
end
|
|
25
|
-
Jeweler::RubygemsDotOrgTasks.new
|
|
26
|
-
|
|
27
14
|
require 'rdoc/task'
|
|
15
|
+
|
|
28
16
|
Rake::RDocTask.new do |rdoc|
|
|
29
17
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
30
18
|
|
|
Binary file
|
data/fastspring-saasy.gemspec
CHANGED
|
@@ -1,87 +1,27 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
#coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |s|
|
|
7
6
|
s.name = "fastspring-saasy"
|
|
8
|
-
s.version = "0.
|
|
7
|
+
s.version = "0.6.0"
|
|
9
8
|
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
9
|
s.authors = ["Richard Patching"]
|
|
12
|
-
s.date = "2013-02-18"
|
|
13
|
-
s.description = "Ruby lib for using the FastSpring (Saas) subscription management API"
|
|
14
10
|
s.email = "richard@justaddpixels.com"
|
|
15
|
-
s.
|
|
16
|
-
|
|
17
|
-
"README.rdoc"
|
|
18
|
-
]
|
|
19
|
-
s.files = [
|
|
20
|
-
".document",
|
|
21
|
-
".rspec",
|
|
22
|
-
"Gemfile",
|
|
23
|
-
"Gemfile.lock",
|
|
24
|
-
"LICENSE.txt",
|
|
25
|
-
"README.rdoc",
|
|
26
|
-
"Rakefile",
|
|
27
|
-
"VERSION",
|
|
28
|
-
"fastspring-saasy.gemspec",
|
|
29
|
-
"lib/fastspring-saasy.rb",
|
|
30
|
-
"lib/fastspring-saasy/account.rb",
|
|
31
|
-
"lib/fastspring-saasy/address.rb",
|
|
32
|
-
"lib/fastspring-saasy/customer.rb",
|
|
33
|
-
"lib/fastspring-saasy/error.rb",
|
|
34
|
-
"lib/fastspring-saasy/fastspring.crt",
|
|
35
|
-
"lib/fastspring-saasy/item.rb",
|
|
36
|
-
"lib/fastspring-saasy/localized_store_pricing.rb",
|
|
37
|
-
"lib/fastspring-saasy/order.rb",
|
|
38
|
-
"lib/fastspring-saasy/payment.rb",
|
|
39
|
-
"lib/fastspring-saasy/private_api_base.rb",
|
|
40
|
-
"lib/fastspring-saasy/public_api_base.rb",
|
|
41
|
-
"lib/fastspring-saasy/subscription.rb",
|
|
42
|
-
"lib/httparty/txt_parser.rb",
|
|
43
|
-
"spec/account_spec.rb",
|
|
44
|
-
"spec/customer_spec.rb",
|
|
45
|
-
"spec/fixtures/basic_localized_store_pricing.txt",
|
|
46
|
-
"spec/fixtures/basic_localized_store_pricing_with_3_products.txt",
|
|
47
|
-
"spec/fixtures/basic_order.xml",
|
|
48
|
-
"spec/fixtures/basic_subscription.xml",
|
|
49
|
-
"spec/localized_store_pricing_spec.rb",
|
|
50
|
-
"spec/order_spec.rb",
|
|
51
|
-
"spec/spec_helper.rb",
|
|
52
|
-
"spec/subscription_spec.rb"
|
|
53
|
-
]
|
|
11
|
+
s.description = "Ruby lib for using the FastSpring (SaaSy) subscription management API"
|
|
12
|
+
s.summary = "Ruby lib for using the FastSpring (Saasy) API"
|
|
54
13
|
s.homepage = "http://github.com/patchfx/fastspring"
|
|
14
|
+
|
|
15
|
+
s.files = `git ls-files`.split($/)
|
|
55
16
|
s.licenses = ["MIT"]
|
|
56
17
|
s.require_paths = ["lib"]
|
|
57
|
-
s.
|
|
58
|
-
s.summary = "Ruby lib for using the FastSpring (Saasy) API"
|
|
18
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
|
59
19
|
|
|
60
|
-
|
|
61
|
-
|
|
20
|
+
s.add_dependency "httparty"
|
|
21
|
+
s.add_dependency "gyoku"
|
|
62
22
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
s.add_development_dependency(%q<bundler>, [">= 0"])
|
|
67
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
68
|
-
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
|
69
|
-
s.add_development_dependency(%q<httparty>, ["~> 0.8.1"])
|
|
70
|
-
else
|
|
71
|
-
s.add_dependency(%q<httparty>, [">= 0"])
|
|
72
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
|
73
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
|
74
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
75
|
-
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
|
76
|
-
s.add_dependency(%q<httparty>, ["~> 0.8.1"])
|
|
77
|
-
end
|
|
78
|
-
else
|
|
79
|
-
s.add_dependency(%q<httparty>, [">= 0"])
|
|
80
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
|
81
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
|
82
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
83
|
-
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
|
84
|
-
s.add_dependency(%q<httparty>, ["~> 0.8.1"])
|
|
85
|
-
end
|
|
23
|
+
s.add_development_dependency "rake"
|
|
24
|
+
s.add_development_dependency "rspec"
|
|
25
|
+
s.add_development_dependency "webmock"
|
|
86
26
|
end
|
|
87
27
|
|
data/lib/fastspring-saasy.rb
CHANGED
|
@@ -19,6 +19,20 @@ module FastSpring
|
|
|
19
19
|
self.new(reference).find
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def self.search(query="")
|
|
23
|
+
self.new("").search(query)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def search(query)
|
|
27
|
+
response = self.class.get("/company/#{@company}/orders/search?query=#{CGI::escape(query)}", :basic_auth => @auth, :ssl_ca_file => @ssl_ca_file)
|
|
28
|
+
order_response = response.parsed_response['orders']['order']
|
|
29
|
+
return [] if order_response.nil?
|
|
30
|
+
|
|
31
|
+
order_response.map do |order|
|
|
32
|
+
Order.new("").build_from(order)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
22
36
|
def reference
|
|
23
37
|
@reference
|
|
24
38
|
end
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
require 'date'
|
|
2
|
+
require 'gyoku'
|
|
2
3
|
|
|
3
4
|
module FastSpring
|
|
4
5
|
class Subscription < PrivateApiBase
|
|
5
6
|
def self.create_subscription_url(reference, referrer)
|
|
6
7
|
"#{SITE_URL}/#{FastSpring::Account.fetch(:company)}/product/#{reference}?referrer=#{referrer}"
|
|
7
8
|
end
|
|
9
|
+
|
|
8
10
|
# Get the subscription from Saasy
|
|
9
11
|
def find
|
|
10
12
|
@response = self.class.get(base_subscription_path, :basic_auth => @auth, :ssl_ca_file => @ssl_ca_file)
|
|
11
13
|
self
|
|
12
14
|
end
|
|
13
15
|
|
|
16
|
+
# Update the subscription from Saasy
|
|
17
|
+
def update!(options={})
|
|
18
|
+
@response = self.class.put(base_subscription_path, :body => Gyoku.xml(subscription: options), :headers => {'Content-Type' => 'application/xml'},:basic_auth => @auth)
|
|
19
|
+
self
|
|
20
|
+
end
|
|
21
|
+
|
|
14
22
|
# Returns the base path for a subscription
|
|
15
23
|
def base_subscription_path
|
|
16
24
|
"/company/#{@company}/subscription/#{@reference}"
|
|
@@ -53,12 +61,12 @@ module FastSpring
|
|
|
53
61
|
begin
|
|
54
62
|
fs_tags = value_for('tags')
|
|
55
63
|
result = {}
|
|
56
|
-
fs_tags.split(",").each do |t|
|
|
64
|
+
fs_tags.split(",").each do |t|
|
|
57
65
|
k,v = t.strip.split('=')
|
|
58
66
|
result[k.to_sym] = v
|
|
59
67
|
end
|
|
60
68
|
result
|
|
61
|
-
rescue
|
|
69
|
+
rescue
|
|
62
70
|
nil
|
|
63
71
|
end
|
|
64
72
|
end
|
|
@@ -87,7 +95,6 @@ module FastSpring
|
|
|
87
95
|
def parsed_response
|
|
88
96
|
@response.parsed_response['subscription']
|
|
89
97
|
end
|
|
90
|
-
|
|
91
98
|
end
|
|
92
99
|
end
|
|
93
100
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<orders>
|
|
2
|
+
<order>
|
|
3
|
+
<reference/>
|
|
4
|
+
<status>open</status>
|
|
5
|
+
<statusChanged>2010-08-15T00:00:00.000Z</statusChanged>
|
|
6
|
+
<test>true</test>
|
|
7
|
+
<returnStatus>none</returnStatus>
|
|
8
|
+
<customer>
|
|
9
|
+
<firstName/>
|
|
10
|
+
<lastName/>
|
|
11
|
+
<company/>
|
|
12
|
+
<email/>
|
|
13
|
+
<phoneNumber/>
|
|
14
|
+
</customer>
|
|
15
|
+
</order>
|
|
16
|
+
<order>
|
|
17
|
+
<reference/>
|
|
18
|
+
<status>closed</status>
|
|
19
|
+
<statusChanged>2010-08-15T00:00:00.000Z</statusChanged>
|
|
20
|
+
<test>true</test>
|
|
21
|
+
<returnStatus>none</returnStatus>
|
|
22
|
+
<customer>
|
|
23
|
+
<firstName/>
|
|
24
|
+
<lastName/>
|
|
25
|
+
<company/>
|
|
26
|
+
<email/>
|
|
27
|
+
<phoneNumber/>
|
|
28
|
+
</customer>
|
|
29
|
+
</order>
|
|
30
|
+
</orders>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<subscription>
|
|
2
|
+
<status>active</status>
|
|
3
|
+
<statusChanged>2010-08-15T00:00:00.000Z</statusChanged>
|
|
4
|
+
<statusReason>completed</statusReason>
|
|
5
|
+
<cancelable>true</cancelable>
|
|
6
|
+
<reference/>
|
|
7
|
+
<test>true</test>
|
|
8
|
+
<referrer>acme_app</referrer>
|
|
9
|
+
<sourceName>acme_source</sourceName>
|
|
10
|
+
<sourceKey>acme_source_key</sourceKey>
|
|
11
|
+
<sourceCampaign>acme_source_campaign</sourceCampaign>
|
|
12
|
+
<customer>
|
|
13
|
+
<firstName>John</firstName>
|
|
14
|
+
<lastName>Doe</lastName>
|
|
15
|
+
<company>Doe Inc</company>
|
|
16
|
+
<email>johndoe@example.com</email>
|
|
17
|
+
<phoneNumber>0123456789</phoneNumber>
|
|
18
|
+
</customer>
|
|
19
|
+
<customerUrl/>
|
|
20
|
+
<productName>Acme Inc Web</productName>
|
|
21
|
+
<tags>number1=1, number2=2</tags>
|
|
22
|
+
<quantity>12</quantity>
|
|
23
|
+
<nextPeriodDate>2010-08-15Z</nextPeriodDate>
|
|
24
|
+
<end>2010-08-15Z</end>
|
|
25
|
+
</subscription>
|
data/spec/order_spec.rb
CHANGED
|
@@ -10,6 +10,16 @@ describe FastSpring::Order do
|
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
context 'search' do
|
|
14
|
+
it 'searches for orders from a given query' do
|
|
15
|
+
stub_request(:get, "https://admin:test@api.fastspring.com/company/acme/orders/search?query=doe").
|
|
16
|
+
to_return(stub_http_response_with('basic_order_search.xml'))
|
|
17
|
+
|
|
18
|
+
orders = FastSpring::Order.search('doe')
|
|
19
|
+
orders.size.should be(2)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
13
23
|
context 'url for orders' do
|
|
14
24
|
subject { FastSpring::Order.find('test_ref') }
|
|
15
25
|
before do
|
data/spec/spec_helper.rb
CHANGED
|
@@ -7,21 +7,24 @@ def file_fixture(filename)
|
|
|
7
7
|
open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def stub_http_response_with(filename)
|
|
10
|
+
def stub_http_response_with(filename, type=:get)
|
|
11
11
|
format = filename.split('.').last.intern
|
|
12
12
|
data = file_fixture(filename)
|
|
13
13
|
|
|
14
14
|
response = Net::HTTPOK.new("1.1", 200, "Content for you")
|
|
15
15
|
response.stub!(:body).and_return(data)
|
|
16
16
|
|
|
17
|
+
request_type = Net::HTTP::Get if type == :get
|
|
18
|
+
request_type = Net::HTTP::Put if type == :put
|
|
19
|
+
|
|
17
20
|
if format == :txt
|
|
18
|
-
http_request = HTTParty::Request.new(
|
|
21
|
+
http_request = HTTParty::Request.new(request_type, 'http://localhost', :format => format, :parser => HTTParty::Parser::Txt)
|
|
19
22
|
else
|
|
20
|
-
http_request = HTTParty::Request.new(
|
|
23
|
+
http_request = HTTParty::Request.new(request_type, 'http://localhost', :format => format)
|
|
21
24
|
end
|
|
22
25
|
http_request.stub_chain(:http, :request).and_return(response)
|
|
23
26
|
|
|
24
|
-
HTTParty::Request.should_receive(:new).and_return(http_request)
|
|
27
|
+
HTTParty::Request.should_receive(:new).at_most(2).times.and_return(http_request)
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
def stub_response(body, code = 200)
|
data/spec/subscription_spec.rb
CHANGED
|
@@ -109,4 +109,20 @@ describe FastSpring::Subscription do
|
|
|
109
109
|
subject.renew_path.should == "/company/acme/subscription/test_ref/renew"
|
|
110
110
|
end
|
|
111
111
|
end
|
|
112
|
+
|
|
113
|
+
context 'update' do
|
|
114
|
+
subject { FastSpring::Subscription.find('test_ref') }
|
|
115
|
+
|
|
116
|
+
before do
|
|
117
|
+
stub_request(:get, "https://admin:test@api.fastspring.com/company/acme/subscription/test_ref").
|
|
118
|
+
to_return(stub_http_response_with('basic_subscription.xml'))
|
|
119
|
+
stub_request(:put, "https://admin:test@api.fastspring.com/company/acme/subscription/test_ref").
|
|
120
|
+
to_return(stub_http_response_with('basic_updated_subscription.xml', :put))
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "updates the subscription from given attributes" do
|
|
124
|
+
subject.update!(quantity: 12)
|
|
125
|
+
subject.quantity.should be(12)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
112
128
|
end
|
metadata
CHANGED
|
@@ -1,121 +1,93 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastspring-saasy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.6.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Richard Patching
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2014-04-13 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: httparty
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
|
-
- -
|
|
17
|
+
- - '>='
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
19
|
version: '0'
|
|
22
20
|
type: :runtime
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
23
|
requirements:
|
|
27
|
-
- -
|
|
24
|
+
- - '>='
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
26
|
version: '0'
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
|
31
|
-
name:
|
|
28
|
+
name: gyoku
|
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
30
|
requirements:
|
|
35
|
-
- -
|
|
31
|
+
- - '>='
|
|
36
32
|
- !ruby/object:Gem::Version
|
|
37
33
|
version: '0'
|
|
38
|
-
type: :
|
|
34
|
+
type: :runtime
|
|
39
35
|
prerelease: false
|
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
37
|
requirements:
|
|
43
|
-
- -
|
|
38
|
+
- - '>='
|
|
44
39
|
- !ruby/object:Gem::Version
|
|
45
40
|
version: '0'
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
name:
|
|
42
|
+
name: rake
|
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
44
|
requirements:
|
|
51
|
-
- -
|
|
45
|
+
- - '>='
|
|
52
46
|
- !ruby/object:Gem::Version
|
|
53
47
|
version: '0'
|
|
54
48
|
type: :development
|
|
55
49
|
prerelease: false
|
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
51
|
requirements:
|
|
59
|
-
- -
|
|
52
|
+
- - '>='
|
|
60
53
|
- !ruby/object:Gem::Version
|
|
61
54
|
version: '0'
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
|
63
|
-
name:
|
|
56
|
+
name: rspec
|
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
58
|
requirements:
|
|
67
|
-
- -
|
|
59
|
+
- - '>='
|
|
68
60
|
- !ruby/object:Gem::Version
|
|
69
61
|
version: '0'
|
|
70
62
|
type: :development
|
|
71
63
|
prerelease: false
|
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
65
|
requirements:
|
|
75
|
-
- -
|
|
66
|
+
- - '>='
|
|
76
67
|
- !ruby/object:Gem::Version
|
|
77
68
|
version: '0'
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
|
79
|
-
name:
|
|
70
|
+
name: webmock
|
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
72
|
requirements:
|
|
83
|
-
- -
|
|
73
|
+
- - '>='
|
|
84
74
|
- !ruby/object:Gem::Version
|
|
85
75
|
version: '0'
|
|
86
76
|
type: :development
|
|
87
77
|
prerelease: false
|
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
none: false
|
|
90
79
|
requirements:
|
|
91
|
-
- -
|
|
80
|
+
- - '>='
|
|
92
81
|
- !ruby/object:Gem::Version
|
|
93
82
|
version: '0'
|
|
94
|
-
|
|
95
|
-
name: httparty
|
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
|
97
|
-
none: false
|
|
98
|
-
requirements:
|
|
99
|
-
- - ~>
|
|
100
|
-
- !ruby/object:Gem::Version
|
|
101
|
-
version: 0.8.1
|
|
102
|
-
type: :development
|
|
103
|
-
prerelease: false
|
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
none: false
|
|
106
|
-
requirements:
|
|
107
|
-
- - ~>
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: 0.8.1
|
|
110
|
-
description: Ruby lib for using the FastSpring (Saas) subscription management API
|
|
83
|
+
description: Ruby lib for using the FastSpring (SaaSy) subscription management API
|
|
111
84
|
email: richard@justaddpixels.com
|
|
112
85
|
executables: []
|
|
113
86
|
extensions: []
|
|
114
|
-
extra_rdoc_files:
|
|
115
|
-
- LICENSE.txt
|
|
116
|
-
- README.rdoc
|
|
87
|
+
extra_rdoc_files: []
|
|
117
88
|
files:
|
|
118
89
|
- .document
|
|
90
|
+
- .gitignore
|
|
119
91
|
- .rspec
|
|
120
92
|
- Gemfile
|
|
121
93
|
- Gemfile.lock
|
|
@@ -123,6 +95,7 @@ files:
|
|
|
123
95
|
- README.rdoc
|
|
124
96
|
- Rakefile
|
|
125
97
|
- VERSION
|
|
98
|
+
- fastspring-saasy-0.5.5.gem
|
|
126
99
|
- fastspring-saasy.gemspec
|
|
127
100
|
- lib/fastspring-saasy.rb
|
|
128
101
|
- lib/fastspring-saasy/account.rb
|
|
@@ -143,7 +116,9 @@ files:
|
|
|
143
116
|
- spec/fixtures/basic_localized_store_pricing.txt
|
|
144
117
|
- spec/fixtures/basic_localized_store_pricing_with_3_products.txt
|
|
145
118
|
- spec/fixtures/basic_order.xml
|
|
119
|
+
- spec/fixtures/basic_order_search.xml
|
|
146
120
|
- spec/fixtures/basic_subscription.xml
|
|
121
|
+
- spec/fixtures/basic_updated_subscription.xml
|
|
147
122
|
- spec/localized_store_pricing_spec.rb
|
|
148
123
|
- spec/order_spec.rb
|
|
149
124
|
- spec/spec_helper.rb
|
|
@@ -151,29 +126,38 @@ files:
|
|
|
151
126
|
homepage: http://github.com/patchfx/fastspring
|
|
152
127
|
licenses:
|
|
153
128
|
- MIT
|
|
129
|
+
metadata: {}
|
|
154
130
|
post_install_message:
|
|
155
131
|
rdoc_options: []
|
|
156
132
|
require_paths:
|
|
157
133
|
- lib
|
|
158
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
|
-
none: false
|
|
160
135
|
requirements:
|
|
161
|
-
- -
|
|
136
|
+
- - '>='
|
|
162
137
|
- !ruby/object:Gem::Version
|
|
163
138
|
version: '0'
|
|
164
|
-
segments:
|
|
165
|
-
- 0
|
|
166
|
-
hash: -313030860356725140
|
|
167
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
|
-
none: false
|
|
169
140
|
requirements:
|
|
170
|
-
- -
|
|
141
|
+
- - '>='
|
|
171
142
|
- !ruby/object:Gem::Version
|
|
172
143
|
version: '0'
|
|
173
144
|
requirements: []
|
|
174
145
|
rubyforge_project:
|
|
175
|
-
rubygems_version:
|
|
146
|
+
rubygems_version: 2.0.3
|
|
176
147
|
signing_key:
|
|
177
|
-
specification_version:
|
|
148
|
+
specification_version: 4
|
|
178
149
|
summary: Ruby lib for using the FastSpring (Saasy) API
|
|
179
|
-
test_files:
|
|
150
|
+
test_files:
|
|
151
|
+
- spec/account_spec.rb
|
|
152
|
+
- spec/customer_spec.rb
|
|
153
|
+
- spec/fixtures/basic_localized_store_pricing.txt
|
|
154
|
+
- spec/fixtures/basic_localized_store_pricing_with_3_products.txt
|
|
155
|
+
- spec/fixtures/basic_order.xml
|
|
156
|
+
- spec/fixtures/basic_order_search.xml
|
|
157
|
+
- spec/fixtures/basic_subscription.xml
|
|
158
|
+
- spec/fixtures/basic_updated_subscription.xml
|
|
159
|
+
- spec/localized_store_pricing_spec.rb
|
|
160
|
+
- spec/order_spec.rb
|
|
161
|
+
- spec/spec_helper.rb
|
|
162
|
+
- spec/subscription_spec.rb
|
|
163
|
+
has_rdoc:
|