infusionsoft 1.3.6 → 1.3.8
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 +4 -4
- data/.travis.yml +1 -5
- data/README.md +3 -1
- data/lib/infusionsoft/client/order.rb +39 -0
- data/lib/infusionsoft/client.rb +2 -0
- data/lib/infusionsoft/request.rb +18 -15
- data/lib/infusionsoft/version.rb +1 -1
- data/test/client/order_test.rb +11 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea35395f1dd718a10887faf5fde10986bb658cc3c28dd3aec7fbbbf3ff4e1058
|
4
|
+
data.tar.gz: 541264f30104fd6f03efd6f43c493b4f38c1c770bdadcf95a1991aefc1371d47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25352e66189393eb9b4f80e19d300b6800217fd66278be8cb47cce79ec5680d0e57f787d3d4d2c7da56a8673be75d9a37561ffa12a668aa00c11537100ee0ebb
|
7
|
+
data.tar.gz: 4067b6d54ac04cff0dcecc40227a13831c1af7cdbebcff1158073b5c8d056fd6ac66b3988a56ff22043a69f523526408061e8091a22c2cf402a1d72d17d8d06a
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
A Ruby wrapper for the Infusionsoft API
|
7
7
|
|
8
8
|
**update notes**
|
9
|
+
* v1.3.6 - Ruby v3 compatibility
|
9
10
|
* v1.3.5 - Rest API is now supported (documentation incoming)
|
10
11
|
* v1.2.2 - Catching Infusionsoft API SSL handshake issues
|
11
12
|
* v1.2.1 - Added OAuth support
|
@@ -17,7 +18,8 @@ A Ruby wrapper for the Infusionsoft API
|
|
17
18
|
* v1.1.5 - Added a custom logger option. This will allow you to track all api calls/results in a separate log file. Defaults to $stdout if none is specified. To add logger specify `api_logger` in your [config block](#setup--configuration).
|
18
19
|
|
19
20
|
## <a name="installation">Installation</a>
|
20
|
-
gem install infusionsoft
|
21
|
+
ruby 3.* gem install infusionsoft
|
22
|
+
ruby 2.* gem install infusionsoft -v 1.3.5
|
21
23
|
|
22
24
|
## <a name="documentation">Documentation</a>
|
23
25
|
[http://rubydoc.info/gems/infusionsoft](http://rubydoc.info/gems/infusionsoft)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Infusionsoft
|
2
|
+
class Client
|
3
|
+
# The Order service allows you to create a new Order.
|
4
|
+
module Order
|
5
|
+
# Creates a new order.
|
6
|
+
#
|
7
|
+
# @param [Integer] contact_id
|
8
|
+
# ID of the order's Contact (0 is not a valid ID).
|
9
|
+
# @param [Integer] card_id
|
10
|
+
# ID of the card to charge. To skip charging a card, set to "0".
|
11
|
+
# @param [Integer] plan_id
|
12
|
+
# ID of the payment plan to use when creating the order. If not
|
13
|
+
# specified, the default plan is used.
|
14
|
+
# @param [Array<Integer>] product_ids
|
15
|
+
# A list of integers representing the products to add to the order.
|
16
|
+
# This cannot be emtpy if a subscription is not specified.
|
17
|
+
# @param [Array<Integer>] subscription_ids
|
18
|
+
# A list of integers representing the subscription(s) to add to the
|
19
|
+
# order. This cannot be empty if a product ID is not specified.
|
20
|
+
# @param [Boolean] process_specials
|
21
|
+
# Whether or not the order should consider discounts that would normally
|
22
|
+
# be applied if this order was placed through the shopping cart.
|
23
|
+
# @param [Array<String>] promo_codes
|
24
|
+
# Promo codes to add to the cart; only used if processing of specials
|
25
|
+
# is turned on.
|
26
|
+
# @param [Integer] lead_affiliate_id
|
27
|
+
# ID of the lead affiliate (0 should be used if none).
|
28
|
+
# @param [Integer] sale_affiliate_id
|
29
|
+
# ID of the sale affiliate (0 should be used if none).
|
30
|
+
# @return [Hash] The result of order placement with IDs of the order and
|
31
|
+
# invoice that were created and the status of a credit card charge
|
32
|
+
# (if applicable).
|
33
|
+
# {'Successful' => [Boolean], 'Message' => [String], 'RefNum' => [String], 'OrderId' => [String], 'InvoiceId' => [String], 'Code' => [String]}
|
34
|
+
def place_order(contact_id, card_id, plan_id, product_ids, subscription_ids, process_specials, promo_codes, lead_affiliate_id, sale_affiliate_id)
|
35
|
+
response = xmlrpc('OrderService.placeOrder', contact_id, card_id, plan_id, product_ids, subscription_ids, process_specials, promo_codes, lead_affiliate_id, sale_affiliate_id)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/infusionsoft/client.rb
CHANGED
@@ -8,6 +8,7 @@ module Infusionsoft
|
|
8
8
|
# Client-namespaced.
|
9
9
|
require 'infusionsoft/client/contact'
|
10
10
|
require 'infusionsoft/client/email'
|
11
|
+
require 'infusionsoft/client/order'
|
11
12
|
require 'infusionsoft/client/invoice'
|
12
13
|
require 'infusionsoft/client/data'
|
13
14
|
require 'infusionsoft/client/affiliate'
|
@@ -19,6 +20,7 @@ module Infusionsoft
|
|
19
20
|
|
20
21
|
include Infusionsoft::Client::Contact
|
21
22
|
include Infusionsoft::Client::Email
|
23
|
+
include Infusionsoft::Client::Order
|
22
24
|
include Infusionsoft::Client::Invoice
|
23
25
|
include Infusionsoft::Client::Data
|
24
26
|
include Infusionsoft::Client::Affiliate
|
data/lib/infusionsoft/request.rb
CHANGED
@@ -8,33 +8,33 @@ module Infusionsoft
|
|
8
8
|
end
|
9
9
|
|
10
10
|
# Perform an GET request
|
11
|
-
def get(path, token, query: {})
|
12
|
-
request(:get, path, token, query: query
|
11
|
+
def get(path, token, query: {}, version: 'v1')
|
12
|
+
request(:get, path, token, version, query: query)
|
13
13
|
end
|
14
14
|
|
15
|
-
def post(path, token, query: {}, payload: {})
|
16
|
-
request(:post, path, token, query, payload)
|
15
|
+
def post(path, token, query: {}, payload: {}, version: 'v1')
|
16
|
+
request(:post, path, token, version, query, payload)
|
17
17
|
end
|
18
18
|
|
19
19
|
# Perform an HTTP PUT request
|
20
|
-
def put(path, token, query: {}, payload: {})
|
21
|
-
request(:put, path, token, query, payload)
|
20
|
+
def put(path, token, query: {}, payload: {}, version: 'v1')
|
21
|
+
request(:put, path, token, version, query, payload)
|
22
22
|
end
|
23
23
|
|
24
24
|
# Perform an HTTP PATCH request
|
25
|
-
def patch(path, token, query: {}, payload: {})
|
26
|
-
request(:patch, path, token, query, payload)
|
25
|
+
def patch(path, token, query: {}, payload: {}, version: 'v1')
|
26
|
+
request(:patch, path, token, version, query, payload)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Perform an HTTP DELETE request
|
30
|
-
def delete(path, token, query: {})
|
31
|
-
request(:delete, path, token, query)
|
30
|
+
def delete(path, token, query: {}, version: 'v1')
|
31
|
+
request(:delete, path, token, version, query)
|
32
32
|
end
|
33
33
|
|
34
34
|
private
|
35
35
|
|
36
36
|
# Perform request
|
37
|
-
def request(method, path, token, query={}, payload={})
|
37
|
+
def request(method, path, token, version, query={}, payload={})
|
38
38
|
path = "/#{path}" unless path.start_with?('/')
|
39
39
|
header = {
|
40
40
|
authorization: "Bearer #{token.access_token}",
|
@@ -44,15 +44,18 @@ module Infusionsoft
|
|
44
44
|
}
|
45
45
|
opts = {
|
46
46
|
method: method,
|
47
|
-
url: "https://api.infusionsoft.com/crm/rest
|
47
|
+
url: "https://api.infusionsoft.com/crm/rest/#{version}" + path,
|
48
48
|
headers: header
|
49
49
|
}
|
50
50
|
opts.merge!( { payload: payload.to_json }) unless payload.empty?
|
51
51
|
resp = RestClient::Request.execute(opts)
|
52
|
-
rescue RestClient::ExceptionWithResponse => err
|
53
|
-
# log error?
|
54
|
-
else
|
55
52
|
return JSON.parse(resp.body) if resp.body # Some calls respond w nothing
|
53
|
+
rescue RestClient::ExceptionWithResponse => err
|
54
|
+
api_logger.error "[ERROR]: #{err}"
|
55
|
+
rescue => err
|
56
|
+
# RestClient::Unauthorized & SocketError
|
57
|
+
api_logger.error "[ERROR]: #{err}"
|
58
|
+
raise
|
56
59
|
end
|
57
60
|
end
|
58
61
|
end
|
data/lib/infusionsoft/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative('../test_helper')
|
2
|
+
|
3
|
+
class OrderTest < Test::Unit::TestCase
|
4
|
+
def test_create_new_order
|
5
|
+
# VCR.use_cassette('order_create') do
|
6
|
+
# result = Infusionsoft.place_order(4095, 0, nil, [1], nil, false, [], 0, 0)
|
7
|
+
|
8
|
+
# assert_instance_of Hash, result
|
9
|
+
# end
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infusionsoft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Leavitt
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- lib/infusionsoft/client/file.rb
|
79
79
|
- lib/infusionsoft/client/funnel.rb
|
80
80
|
- lib/infusionsoft/client/invoice.rb
|
81
|
+
- lib/infusionsoft/client/order.rb
|
81
82
|
- lib/infusionsoft/client/search.rb
|
82
83
|
- lib/infusionsoft/client/ticket.rb
|
83
84
|
- lib/infusionsoft/client/version.rb
|
@@ -92,6 +93,7 @@ files:
|
|
92
93
|
- test/client/data_test.rb
|
93
94
|
- test/client/email_test.rb
|
94
95
|
- test/client/invoice_test.rb
|
96
|
+
- test/client/order_test.rb
|
95
97
|
- test/exceptions_test.rb
|
96
98
|
- test/test_helper.rb
|
97
99
|
- test/vcr_cassettes/add_to_group.yml
|
@@ -131,7 +133,7 @@ files:
|
|
131
133
|
homepage: https://github.com/nateleavitt/infusionsoft
|
132
134
|
licenses: []
|
133
135
|
metadata: {}
|
134
|
-
post_install_message:
|
136
|
+
post_install_message:
|
135
137
|
rdoc_options: []
|
136
138
|
require_paths:
|
137
139
|
- lib
|
@@ -146,8 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
148
|
- !ruby/object:Gem::Version
|
147
149
|
version: 1.3.6
|
148
150
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
150
|
-
signing_key:
|
151
|
+
rubygems_version: 3.5.17
|
152
|
+
signing_key:
|
151
153
|
specification_version: 4
|
152
154
|
summary: Ruby wrapper for the Infusionsoft API
|
153
155
|
test_files: []
|