fastspring-saasy 0.6.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ec611dbeb819d848bd29442ef1547625a07df04
4
- data.tar.gz: 822563c9505e32c16f4247b47dc9db5771378f34
3
+ metadata.gz: 4d81462dd519e9b4c7b723bf387fcf6ab6dfe131
4
+ data.tar.gz: 67d4331d3218b673fcb84c04355b558d3c352fb6
5
5
  SHA512:
6
- metadata.gz: b94e7269c9c5ffe2391b9ee21096d9e7e8ac8b1579a4d166095c7759f8101ee580a5b19d80e102ed8a81055c97284609693582e23ba4e0b9fa57566e2d1c4577
7
- data.tar.gz: 6c411738518eedc937ec7fa56c69e237f49116710b0e5f4e0c8f28d58ca4adab5b7b8987094f79f10a5bd41f6c8d54e63b331439a0c66f43efb0321b61fb4f79
6
+ metadata.gz: ce14e45cef89b9865a4a267beec2030bef72f55962a957def6c9fd7413674202908749814baf81e966502a986388ecba7ff61207eacd1d3d4dac5dbdcaba5196
7
+ data.tar.gz: 9858db198a5e2cd5b0643d12fd062f65b31d6b961dc0d8caf5c91527fbb6beaf65ff81cf3e7c9f1cb4d88f0de6a6c27ed3ee167df114df89dd29067a63248692
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
+ # generated gems
2
+ *.gem
1
3
  # rcov generated
2
4
  coverage
3
5
 
@@ -35,3 +35,6 @@ DEPENDENCIES
35
35
  rake
36
36
  rspec
37
37
  webmock
38
+
39
+ BUNDLED WITH
40
+ 1.11.2
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Richard Patching
1
+ Copyright (c) 2016 Richard Patching
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -0,0 +1,92 @@
1
+ # fastspring-saasy
2
+
3
+ Ruby library to access the FastSpring Saasy API.
4
+
5
+ ## Installation
6
+
7
+ ```ruby
8
+ gem install fastspring-saasy
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Setup account credentials
14
+ ```ruby
15
+ FastSpring::Account.setup do |config|
16
+ config[:username] = 'user'
17
+ config[:password] = 'password'
18
+ config[:company] = 'company'
19
+ end
20
+ ```
21
+
22
+ ## Get subscription
23
+ ```ruby
24
+ sub = FastSpring::Subscription.find('reference')
25
+ ```
26
+
27
+ ### Renew subscription
28
+ ```ruby
29
+ sub.renew
30
+ ```
31
+
32
+ ### Update subscription
33
+ ```ruby
34
+ attributes = {
35
+ first_name: 'John',
36
+ last_name: 'Doe',
37
+ company: 'Doe Inc.',
38
+ email: 'john.doe@example.com',
39
+ phone_number: '+1 123 456 789',
40
+ product_path: '/product',
41
+ quantity: 1,
42
+ tags: 'tag1, tag2, tag3',
43
+ coupon: 'code',
44
+ proration: true
45
+ }
46
+ sub.update!(attributes)
47
+ ```
48
+
49
+ ### Cancel subscription
50
+ ```ruby
51
+ sub.cancel!
52
+ ```
53
+
54
+ ### Create subscriptions url
55
+ ```ruby
56
+ FastSpring::Subscription.create_subscription_url('test_product', 'new_co')
57
+ => http://sites.fastspring.com/acme/product/test_product?referrer=new_co
58
+ ```
59
+
60
+ ### Search Orders
61
+ ```ruby
62
+ orders = FastSpring::Order.search('search-string')
63
+ orders.each do |order|
64
+ puts order.inspect
65
+ end
66
+ ```
67
+
68
+ ### Find Order
69
+ ```ruby
70
+ order = FastSpring::Order.find('reference')
71
+ order.items.each do |item|
72
+ puts item.inspect
73
+ end
74
+
75
+ order.payments.each do |payment|
76
+ puts payment.inspect
77
+ end
78
+
79
+ #customer details
80
+ order.purchaser.inspect
81
+ ```
82
+
83
+ ### Localized Store Pricing
84
+ ```ruby
85
+ store_pricing = FastSpring::LocalizedStorePricing.find(['/standard'], http_request)
86
+
87
+ puts store_pricing.inspect
88
+ ```
89
+
90
+ ## Copyright
91
+
92
+ Copyright (c) 2016 Richard Patching. See LICENSE.txt for further details.
@@ -4,24 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "fastspring-saasy"
7
- s.version = "0.6.0"
7
+ s.version = "0.6.2"
8
8
 
9
9
  s.authors = ["Richard Patching"]
10
10
  s.email = "richard@justaddpixels.com"
11
11
  s.description = "Ruby lib for using the FastSpring (SaaSy) subscription management API"
12
12
  s.summary = "Ruby lib for using the FastSpring (Saasy) API"
13
- s.homepage = "http://github.com/patchfx/fastspring"
13
+ s.homepage = "http://github.com/patchfx/fastspring-saasy"
14
14
 
15
15
  s.files = `git ls-files`.split($/)
16
16
  s.licenses = ["MIT"]
17
17
  s.require_paths = ["lib"]
18
18
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
 
20
- s.add_dependency "httparty"
21
- s.add_dependency "gyoku"
20
+ s.add_dependency "httparty", "~> 0.10.0", ">= 0.10.0"
21
+ s.add_dependency "gyoku", "~> 1.0.0", ">= 1.0.0"
22
22
 
23
- s.add_development_dependency "rake"
24
- s.add_development_dependency "rspec"
25
- s.add_development_dependency "webmock"
23
+ s.add_development_dependency "rake", "~> 10.0.3", ">= 10.0.3"
24
+ s.add_development_dependency "rspec", "~> 2.12.0", ">= 2.12.0"
25
+ s.add_development_dependency "webmock", "~> 1.9.0", ">= 1.9.0"
26
26
  end
27
-
@@ -1,8 +1,8 @@
1
1
  require 'httparty'
2
2
 
3
- require_relative 'httparty/txt_parser'
4
-
5
3
  require_relative 'fastspring-saasy/private_api_base'
4
+ require_relative 'fastspring-saasy/public_api_base'
5
+
6
6
  require_relative 'fastspring-saasy/account'
7
7
  require_relative 'fastspring-saasy/subscription'
8
8
  require_relative 'fastspring-saasy/customer'
@@ -11,7 +11,8 @@ require_relative 'fastspring-saasy/item'
11
11
  require_relative 'fastspring-saasy/payment'
12
12
  require_relative 'fastspring-saasy/address'
13
13
 
14
- require_relative 'fastspring-saasy/public_api_base'
14
+ require_relative 'fastspring-saasy/build/localized_store_prices'
15
+ require_relative 'fastspring-saasy/localized_store_price'
15
16
  require_relative 'fastspring-saasy/localized_store_pricing'
16
17
 
17
18
  require_relative 'fastspring-saasy/error'
@@ -19,5 +20,5 @@ require_relative 'fastspring-saasy/error'
19
20
  module FastSpring
20
21
  SITE_URL = 'http://sites.fastspring.com'
21
22
  API_URL = 'https://api.fastspring.com'
22
- VERSION = "0.6"
23
+ VERSION = "0.6.2"
23
24
  end
@@ -0,0 +1,39 @@
1
+ module FastSpring
2
+ module Build
3
+ class LocalizedStorePrices
4
+ attr_reader :localized_pricing, :products
5
+
6
+ def initialize(pricing)
7
+ @pricing = pricing || []
8
+ @products = []
9
+ @localized_pricing = {}
10
+ end
11
+
12
+ def build
13
+ return if @pricing.empty?
14
+ parsed = @pricing.split("\n").map { |f| f.split("=") }
15
+ @localized_pricing = Hash[parsed]
16
+ build_products
17
+ self
18
+ end
19
+
20
+ private
21
+
22
+ def build_products
23
+ product_names = []
24
+ @localized_pricing.keys.each do |key|
25
+ product = /product_[0-9]/.match(key)
26
+ product_names << product.to_s unless product.nil?
27
+ end
28
+ create_localized_products_for(product_names.uniq)
29
+ end
30
+
31
+ def create_localized_products_for(product_names)
32
+ product_names.each do |product|
33
+ keys = @localized_pricing.select { |key, value| key.to_s.match(/#{product}/) }
34
+ @products << LocalizedStorePrice.new(product, keys)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,38 @@
1
+ module FastSpring
2
+ class LocalizedStorePrice
3
+ attr_reader :product
4
+
5
+ def initialize(product, params)
6
+ @product = product
7
+ @params = params
8
+ end
9
+
10
+ def path
11
+ fetch('path')
12
+ end
13
+
14
+ def quantity
15
+ fetch('quantity')
16
+ end
17
+
18
+ def unit_value
19
+ fetch('unit_value')
20
+ end
21
+
22
+ def unit_currency
23
+ fetch('unit_currency')
24
+ end
25
+
26
+ def unit_display
27
+ fetch('unit_display')
28
+ end
29
+
30
+ def unit_html
31
+ fetch('unit_html')
32
+ end
33
+
34
+ def fetch(key)
35
+ @params["#{product}_#{key}"]
36
+ end
37
+ end
38
+ end
@@ -4,86 +4,59 @@ module FastSpring
4
4
  def find
5
5
  # For some reason the implicit determination of the Txt parser does not work.
6
6
  # So we'll just blatently pass it in right now.
7
- @response = self.class.get(base_localized_store_pricing_path, :query => query, :parser => Parser::Txt)
7
+ @response = self.class.get(base_localized_store_pricing_path, :query => query)
8
+ @builder = Build::LocalizedStorePrices.new(@response.parsed_response).build
8
9
  self
9
10
  end
10
-
11
+
11
12
  def base_localized_store_pricing_path
12
13
  "/#{@company}/api/price"
13
14
  end
14
-
15
+
15
16
  def query
16
17
  query_hash = Hash.new
17
18
  @product_paths.each_index{ |index| query_hash["product_#{(index + 1)}_path".to_sym] = @product_paths[index] }
18
- query_hash.merge({
19
+ query_hash.merge({
19
20
  :user_remote_addr => @remote_ip,
20
21
  :user_accept_language => @http_accept_language,
21
22
  :user_x_forwarded_for => @http_x_forwarded_for
22
23
  })
23
24
  end
24
-
25
+
25
26
  def user_country
26
- parsed_response['user_country']
27
+ @builder.localized_pricing['user_country']
27
28
  end
28
-
29
+
29
30
  def user_language
30
- parsed_response['user_language']
31
+ @builder.localized_pricing['user_language']
31
32
  end
32
-
33
+
33
34
  def user_currency
34
- parsed_response['user_currency']
35
+ @builder.localized_pricing['user_currency']
35
36
  end
36
-
37
+
37
38
  def product_quantity(product_path)
38
- parsed_response[product_path]["quantity"]
39
+ product(product_path).quantity
39
40
  end
40
-
41
+
41
42
  def product_unit_value(product_path)
42
- parsed_response[product_path]["unit_value"]
43
+ product(product_path).unit_value
43
44
  end
44
-
45
+
45
46
  def product_unit_currency(product_path)
46
- parsed_response[product_path]["unit_currency"]
47
+ product(product_path).unit_currency
47
48
  end
48
-
49
+
49
50
  def product_unit_display(product_path)
50
- parsed_response[product_path]["unit_display"]
51
- end
52
-
53
- def product_unit_html(product_path)
54
- parsed_response[product_path]["unit_html"]
51
+ product(product_path).unit_display
55
52
  end
56
53
 
57
-
58
- protected
59
-
60
- def parsed_response
61
- @parsed_response ||= parse_response
54
+ def product_unit_html(product_path)
55
+ product(product_path).unit_html
62
56
  end
63
-
64
- def parse_response
65
- response = Hash.new
66
-
67
- index = 1
68
- more_products = true
69
- while more_products
70
- product_path = @response.parsed_response["product_#{index}_path"]
71
- if product_path
72
- @response.parsed_response.each do |key, value|
73
- if key.match("product_#{index}") && key != "product_#{index}_path" then
74
- response[product_path] ||= Hash.new
75
- response[product_path][key.match(/\d+_(.*)/)[1]] = value
76
- end
77
- end
78
- index += 1
79
- else
80
- more_products = false
81
- end
82
- end
83
57
 
84
- response.merge(
85
- @response.parsed_response.reject{ |key, value| key.match(/^product_/) }
86
- )
58
+ def product(product_path)
59
+ @builder.products.select { |product| product.path == product_path }.first
87
60
  end
88
61
  end
89
62
  end
@@ -25,7 +25,7 @@ describe FastSpring::LocalizedStorePricing do
25
25
  config[:username] = 'admin'
26
26
  config[:password] = 'test'
27
27
  config[:company] = 'acme'
28
- end
28
+ end
29
29
  end
30
30
 
31
31
  context 'url for localized store pricing' do
@@ -35,24 +35,24 @@ describe FastSpring::LocalizedStorePricing do
35
35
  stub_request(:get, "http://sites.fastspring.com/acme/api/price?product_1_path=/standard&user_accept_language=nl&user_remote_addr=192.168.1.1&user_x_forwarded_for=192.168.1.2").
36
36
  to_return(:status => 200, :body => "", :headers => {})
37
37
  end
38
-
38
+
39
39
  it 'returns the path for the company' do
40
40
  subject.base_localized_store_pricing_path.should == "/acme/api/price"
41
41
  end
42
42
  end
43
-
43
+
44
44
  context "with invalid http request" do
45
45
  subject { FastSpring::LocalizedStorePricing.find(['/standard'], invalid_http_request) }
46
46
  before do
47
47
  stub_request(:get, "http://sites.fastspring.com/acme/api/price?product_1_path=/standard&user_accept_language=en&user_remote_addr=127.0.0.1&user_x_forwarded_for=").
48
48
  to_return(:status => 200, :body => "", :headers => {})
49
49
  end
50
-
50
+
51
51
  it 'returns the path for the company' do
52
52
  subject.base_localized_store_pricing_path.should == "/acme/api/price"
53
53
  end
54
54
  end
55
-
55
+
56
56
  context "with partial http request" do
57
57
  subject { FastSpring::LocalizedStorePricing.find(['/standard'], partial_http_request) }
58
58
  before do
@@ -65,86 +65,86 @@ describe FastSpring::LocalizedStorePricing do
65
65
  end
66
66
  end
67
67
  end
68
-
68
+
69
69
  context "parsed response for 1 product" do
70
70
  subject { FastSpring::LocalizedStorePricing.find(['/standard'], valid_http_request) }
71
71
  before do
72
72
  stub_request(:get, "https://api.fastspring.com/bizplay/api/price?product_1_path=/standard&user_accept_language=nl&user_remote_addr=192.168.1.1&user_x_forwarded_for=192.168.1.2").
73
73
  to_return(stub_http_response_with('basic_localized_store_pricing.txt'))
74
74
  end
75
-
75
+
76
76
  it 'returns "US" as the user country' do
77
77
  subject.user_country.should == "US"
78
78
  end
79
-
79
+
80
80
  it 'returns "en" as the user language' do
81
81
  subject.user_language.should == "en"
82
82
  end
83
-
83
+
84
84
  it 'returns "USD" as the user currency' do
85
85
  subject.user_currency.should == "USD"
86
86
  end
87
-
87
+
88
88
  it 'returns "1" as the quantity of product 1' do
89
89
  subject.product_quantity("/standard").should == "1"
90
90
  end
91
-
91
+
92
92
  it 'returns "35.00" as unit value of product 1' do
93
93
  subject.product_unit_value("/standard").should == "35.00"
94
94
  end
95
-
95
+
96
96
  it 'returns "USD" as the unit currency of product 1' do
97
97
  subject.product_unit_currency("/standard").should == "USD"
98
98
  end
99
-
99
+
100
100
  it 'returns "$35.00" as the unit display of product 1' do
101
101
  subject.product_unit_display("/standard").should == "$35.00"
102
102
  end
103
-
103
+
104
104
  it 'returns "$35.00" as the unit html of product 1' do
105
105
  subject.product_unit_html("/standard").should == "$35.00"
106
106
  end
107
107
  end
108
-
108
+
109
109
  context "localized pricing details specifically for 3 product" do
110
110
  subject { FastSpring::LocalizedStorePricing.find(['/basic','/standard','/plus'], valid_http_request) }
111
111
  before do
112
112
  stub_request(:get, "http://sites.fastspring.com/acme/api/price?product_1_path=/basic&product_2_path=/standard&product_3_path=/plus&user_accept_language=nl&user_remote_addr=192.168.1.1&user_x_forwarded_for=192.168.1.2").
113
113
  to_return(stub_http_response_with('basic_localized_store_pricing_with_3_products.txt'))
114
114
  end
115
-
115
+
116
116
  it 'it sends "/basic" as the product_1_path' do
117
117
  subject.query[:product_1_path].should == "/basic"
118
118
  end
119
-
119
+
120
120
  it 'it sends "/standard" as the product_2_path' do
121
121
  subject.query[:product_2_path].should == "/standard"
122
122
  end
123
-
123
+
124
124
  it 'it sends "/plus" as the product_3_path' do
125
125
  subject.query[:product_3_path].should == "/plus"
126
126
  end
127
-
127
+
128
128
  it 'returns "US" as the user country' do
129
129
  subject.user_country.should == "US"
130
130
  end
131
-
131
+
132
132
  it 'returns "en" as the user language' do
133
133
  subject.user_language.should == "en"
134
134
  end
135
-
135
+
136
136
  it 'returns "USD" as the user currency' do
137
137
  subject.user_currency.should == "USD"
138
138
  end
139
-
139
+
140
140
  it 'returns "$19.00" as the unit display of product 1' do
141
141
  subject.product_unit_display("/basic").should == "$19.00"
142
142
  end
143
-
143
+
144
144
  it 'returns "$35.00" as the unit display of product 2' do
145
145
  subject.product_unit_display("/standard").should == "$35.00"
146
146
  end
147
-
147
+
148
148
  it 'returns "$59.00" as the unit display of product 3' do
149
149
  subject.product_unit_display("/plus").should == "$59.00"
150
150
  end
@@ -17,11 +17,7 @@ def stub_http_response_with(filename, type=:get)
17
17
  request_type = Net::HTTP::Get if type == :get
18
18
  request_type = Net::HTTP::Put if type == :put
19
19
 
20
- if format == :txt
21
- http_request = HTTParty::Request.new(request_type, 'http://localhost', :format => format, :parser => HTTParty::Parser::Txt)
22
- else
23
- http_request = HTTParty::Request.new(request_type, 'http://localhost', :format => format)
24
- end
20
+ http_request = HTTParty::Request.new(request_type, 'http://localhost', :format => format)
25
21
  http_request.stub_chain(:http, :request).and_return(response)
26
22
 
27
23
  HTTParty::Request.should_receive(:new).at_most(2).times.and_return(http_request)
metadata CHANGED
@@ -1,116 +1,143 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastspring-saasy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Patching
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-13 00:00:00.000000000 Z
11
+ date: 2016-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.10.0
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.10.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '>='
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.10.0
30
+ - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: 0.10.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: gyoku
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - '>='
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.0.0
40
+ - - ">="
32
41
  - !ruby/object:Gem::Version
33
- version: '0'
42
+ version: 1.0.0
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - '>='
47
+ - - "~>"
39
48
  - !ruby/object:Gem::Version
40
- version: '0'
49
+ version: 1.0.0
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.0
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: rake
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
- - - '>='
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 10.0.3
60
+ - - ">="
46
61
  - !ruby/object:Gem::Version
47
- version: '0'
62
+ version: 10.0.3
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
- - - '>='
67
+ - - "~>"
53
68
  - !ruby/object:Gem::Version
54
- version: '0'
69
+ version: 10.0.3
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 10.0.3
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: rspec
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
59
- - - '>='
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: 2.12.0
80
+ - - ">="
60
81
  - !ruby/object:Gem::Version
61
- version: '0'
82
+ version: 2.12.0
62
83
  type: :development
63
84
  prerelease: false
64
85
  version_requirements: !ruby/object:Gem::Requirement
65
86
  requirements:
66
- - - '>='
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.12.0
90
+ - - ">="
67
91
  - !ruby/object:Gem::Version
68
- version: '0'
92
+ version: 2.12.0
69
93
  - !ruby/object:Gem::Dependency
70
94
  name: webmock
71
95
  requirement: !ruby/object:Gem::Requirement
72
96
  requirements:
73
- - - '>='
97
+ - - "~>"
74
98
  - !ruby/object:Gem::Version
75
- version: '0'
99
+ version: 1.9.0
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.9.0
76
103
  type: :development
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
80
- - - '>='
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.9.0
110
+ - - ">="
81
111
  - !ruby/object:Gem::Version
82
- version: '0'
112
+ version: 1.9.0
83
113
  description: Ruby lib for using the FastSpring (SaaSy) subscription management API
84
114
  email: richard@justaddpixels.com
85
115
  executables: []
86
116
  extensions: []
87
117
  extra_rdoc_files: []
88
118
  files:
89
- - .document
90
- - .gitignore
91
- - .rspec
119
+ - ".gitignore"
92
120
  - Gemfile
93
121
  - Gemfile.lock
94
122
  - LICENSE.txt
95
- - README.rdoc
123
+ - README.md
96
124
  - Rakefile
97
- - VERSION
98
- - fastspring-saasy-0.5.5.gem
99
125
  - fastspring-saasy.gemspec
100
126
  - lib/fastspring-saasy.rb
101
127
  - lib/fastspring-saasy/account.rb
102
128
  - lib/fastspring-saasy/address.rb
129
+ - lib/fastspring-saasy/build/localized_store_prices.rb
103
130
  - lib/fastspring-saasy/customer.rb
104
131
  - lib/fastspring-saasy/error.rb
105
132
  - lib/fastspring-saasy/fastspring.crt
106
133
  - lib/fastspring-saasy/item.rb
134
+ - lib/fastspring-saasy/localized_store_price.rb
107
135
  - lib/fastspring-saasy/localized_store_pricing.rb
108
136
  - lib/fastspring-saasy/order.rb
109
137
  - lib/fastspring-saasy/payment.rb
110
138
  - lib/fastspring-saasy/private_api_base.rb
111
139
  - lib/fastspring-saasy/public_api_base.rb
112
140
  - lib/fastspring-saasy/subscription.rb
113
- - lib/httparty/txt_parser.rb
114
141
  - spec/account_spec.rb
115
142
  - spec/customer_spec.rb
116
143
  - spec/fixtures/basic_localized_store_pricing.txt
@@ -123,7 +150,7 @@ files:
123
150
  - spec/order_spec.rb
124
151
  - spec/spec_helper.rb
125
152
  - spec/subscription_spec.rb
126
- homepage: http://github.com/patchfx/fastspring
153
+ homepage: http://github.com/patchfx/fastspring-saasy
127
154
  licenses:
128
155
  - MIT
129
156
  metadata: {}
@@ -133,17 +160,17 @@ require_paths:
133
160
  - lib
134
161
  required_ruby_version: !ruby/object:Gem::Requirement
135
162
  requirements:
136
- - - '>='
163
+ - - ">="
137
164
  - !ruby/object:Gem::Version
138
165
  version: '0'
139
166
  required_rubygems_version: !ruby/object:Gem::Requirement
140
167
  requirements:
141
- - - '>='
168
+ - - ">="
142
169
  - !ruby/object:Gem::Version
143
170
  version: '0'
144
171
  requirements: []
145
172
  rubyforge_project:
146
- rubygems_version: 2.0.3
173
+ rubygems_version: 2.5.1
147
174
  signing_key:
148
175
  specification_version: 4
149
176
  summary: Ruby lib for using the FastSpring (Saasy) API
@@ -160,4 +187,3 @@ test_files:
160
187
  - spec/order_spec.rb
161
188
  - spec/spec_helper.rb
162
189
  - spec/subscription_spec.rb
163
- has_rdoc:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
@@ -1,77 +0,0 @@
1
- = fastspring-saasy
2
-
3
- Ruby library to access the FastSpring Saasy API.
4
-
5
- == Installation
6
-
7
- gem install fastspring-saasy
8
-
9
- == Usage
10
-
11
- Setup account credentials
12
-
13
- FastSpring::Account.setup do |config|
14
- config[:username] = 'user'
15
- config[:password] = 'password'
16
- config[:company] = 'company'
17
- end
18
-
19
- Get subscription
20
- sub = FastSpring::Subscription.find('reference')
21
-
22
- Renew subscription
23
- sub.renew
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
-
40
- Cancel subscription
41
- sub.cancel!
42
-
43
- Create subscriptions url
44
- FastSpring::Subscription.create_subscription_url('test_product', 'new_co')
45
- => http://sites.fastspring.com/acme/product/test_product?referrer=new_co
46
-
47
- Search Orders
48
- orders = FastSpring::Order.search('search-string')
49
- orders.each do |order|
50
- # order.inspect
51
- end
52
-
53
- Find Order
54
- order = FastSpring::Order.find('reference')
55
- order.items.each do |item|
56
- # item.inspect
57
- end
58
-
59
- order.payments.each do |payment|
60
- # payment.inspect
61
- end
62
-
63
- #customer details
64
- order.purchaser.inspect
65
-
66
- Localized Store Pricing
67
- store_pricing = FastSpring::LocalizedStorePricing.find(['/standard'], http_request)
68
-
69
- puts store_pricing.inspect
70
-
71
-
72
- == FastSpring
73
- FastSpring have their own gem at https://github.com/fastspring/fastspring-ruby
74
-
75
- == Copyright
76
-
77
- Copyright (c) 2014 Richard Patching. See LICENSE.txt for further details.
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.5.5
Binary file
@@ -1,20 +0,0 @@
1
- class ParseTxt
2
- include HTTParty
3
-
4
- # Replace the :plain parser with this text parser
5
- class Parser::Txt < HTTParty::Parser
6
- SupportedFormats["text/plain"] = :txt
7
-
8
- # perform text parsing on body
9
- def txt
10
- parsed_response = Hash.new
11
- body.each_line do |line|
12
- name_value = line.split("=")
13
- parsed_response[name_value[0].strip] = name_value[1].strip if name_value.count == 2
14
- end
15
- parsed_response
16
- end
17
- end
18
-
19
- parser Parser::Txt
20
- end