ruby-pardot 1.3.2 → 1.4.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 +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +9 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +5 -5
- data/README.rdoc +19 -17
- data/Rakefile +2 -3
- data/lib/pardot/authentication.rb +23 -12
- data/lib/pardot/client.rb +17 -6
- data/lib/pardot/error.rb +6 -2
- data/lib/pardot/http.rb +47 -44
- data/lib/pardot/objects/custom_fields.rb +13 -17
- data/lib/pardot/objects/emails.rb +9 -14
- data/lib/pardot/objects/list_memberships.rb +8 -12
- data/lib/pardot/objects/lists.rb +20 -25
- data/lib/pardot/objects/opportunities.rb +21 -26
- data/lib/pardot/objects/prospect_accounts.rb +6 -7
- data/lib/pardot/objects/prospects.rb +26 -30
- data/lib/pardot/objects/users.rb +17 -21
- data/lib/pardot/objects/visitor_activities.rb +15 -19
- data/lib/pardot/objects/visitors.rb +17 -21
- data/lib/pardot/objects/visits.rb +15 -19
- data/lib/pardot/version.rb +1 -1
- data/ruby-pardot.gemspec +14 -12
- data/spec/pardot/authentication_spec.rb +78 -44
- data/spec/pardot/client_spec.rb +50 -15
- data/spec/pardot/error_spec.rb +6 -4
- data/spec/pardot/http_spec.rb +83 -92
- data/spec/pardot/objects/custom_fields_spec.rb +48 -53
- data/spec/pardot/objects/emails_spec.rb +34 -36
- data/spec/pardot/objects/lists_spec.rb +34 -38
- data/spec/pardot/objects/opportunities_spec.rb +58 -61
- data/spec/pardot/objects/prospect_accounts_spec.rb +72 -75
- data/spec/pardot/objects/prospects_spec.rb +56 -56
- data/spec/pardot/objects/users_spec.rb +58 -61
- data/spec/pardot/objects/visitor_activities_spec.rb +57 -61
- data/spec/pardot/objects/visitors_spec.rb +56 -61
- data/spec/pardot/objects/visits_spec.rb +56 -61
- data/spec/spec_helper.rb +2 -0
- data/spec/support/client_support.rb +40 -4
- data/spec/support/fakeweb.rb +13 -8
- metadata +8 -7
@@ -1,41 +1,37 @@
|
|
1
1
|
module Pardot
|
2
2
|
module Objects
|
3
3
|
module VisitorActivities
|
4
|
-
|
5
4
|
def visitor_activities
|
6
5
|
@visitor_activities ||= VisitorActivities.new self
|
7
6
|
end
|
8
|
-
|
7
|
+
|
9
8
|
class VisitorActivities
|
10
|
-
|
11
|
-
def initialize client
|
9
|
+
def initialize(client)
|
12
10
|
@client = client
|
13
11
|
end
|
14
|
-
|
15
|
-
def query
|
16
|
-
result = get
|
17
|
-
result[
|
12
|
+
|
13
|
+
def query(params)
|
14
|
+
result = get '/do/query', params, 'result'
|
15
|
+
result['total_results'] = result['total_results'].to_i if result['total_results']
|
18
16
|
result
|
19
17
|
end
|
20
|
-
|
21
|
-
def read
|
18
|
+
|
19
|
+
def read(id, params = {})
|
22
20
|
post "/do/read/id/#{id}", params
|
23
21
|
end
|
24
|
-
|
22
|
+
|
25
23
|
protected
|
26
|
-
|
27
|
-
def get
|
28
|
-
response = @client.get
|
24
|
+
|
25
|
+
def get(path, params = {}, result = 'visitorActivity')
|
26
|
+
response = @client.get 'visitorActivity', path, params
|
29
27
|
result ? response[result] : response
|
30
28
|
end
|
31
|
-
|
32
|
-
def post
|
33
|
-
response = @client.post
|
29
|
+
|
30
|
+
def post(path, params = {}, result = 'visitorActivity')
|
31
|
+
response = @client.post 'visitorActivity', path, params
|
34
32
|
result ? response[result] : response
|
35
33
|
end
|
36
|
-
|
37
34
|
end
|
38
|
-
|
39
35
|
end
|
40
36
|
end
|
41
37
|
end
|
@@ -1,45 +1,41 @@
|
|
1
1
|
module Pardot
|
2
2
|
module Objects
|
3
3
|
module Visitors
|
4
|
-
|
5
4
|
def visitors
|
6
5
|
@visitors ||= Visitors.new self
|
7
6
|
end
|
8
|
-
|
7
|
+
|
9
8
|
class Visitors
|
10
|
-
|
11
|
-
def initialize client
|
9
|
+
def initialize(client)
|
12
10
|
@client = client
|
13
11
|
end
|
14
|
-
|
15
|
-
def query
|
16
|
-
result = get
|
17
|
-
result[
|
12
|
+
|
13
|
+
def query(params)
|
14
|
+
result = get '/do/query', params, 'result'
|
15
|
+
result['total_results'] = result['total_results'].to_i if result['total_results']
|
18
16
|
result
|
19
17
|
end
|
20
|
-
|
21
|
-
def assign
|
18
|
+
|
19
|
+
def assign(id, params = {})
|
22
20
|
post "/do/assign/id/#{id}", params
|
23
21
|
end
|
24
|
-
|
25
|
-
def read
|
22
|
+
|
23
|
+
def read(id, params = {})
|
26
24
|
post "/do/read/id/#{id}", params
|
27
25
|
end
|
28
|
-
|
26
|
+
|
29
27
|
protected
|
30
|
-
|
31
|
-
def get
|
32
|
-
response = @client.get
|
28
|
+
|
29
|
+
def get(path, params = {}, result = 'visitor')
|
30
|
+
response = @client.get 'visitor', path, params
|
33
31
|
result ? response[result] : response
|
34
32
|
end
|
35
|
-
|
36
|
-
def post
|
37
|
-
response = @client.post
|
33
|
+
|
34
|
+
def post(path, params = {}, result = 'visitor')
|
35
|
+
response = @client.post 'visitor', path, params
|
38
36
|
result ? response[result] : response
|
39
37
|
end
|
40
|
-
|
41
38
|
end
|
42
|
-
|
43
39
|
end
|
44
40
|
end
|
45
41
|
end
|
@@ -1,41 +1,37 @@
|
|
1
1
|
module Pardot
|
2
2
|
module Objects
|
3
3
|
module Visits
|
4
|
-
|
5
4
|
def visits
|
6
5
|
@visits ||= Visits.new self
|
7
6
|
end
|
8
|
-
|
7
|
+
|
9
8
|
class Visits
|
10
|
-
|
11
|
-
def initialize client
|
9
|
+
def initialize(client)
|
12
10
|
@client = client
|
13
11
|
end
|
14
|
-
|
15
|
-
def query
|
16
|
-
result = get
|
17
|
-
result[
|
12
|
+
|
13
|
+
def query(params)
|
14
|
+
result = get '/do/query', params, 'result'
|
15
|
+
result['total_results'] = result['total_results'].to_i if result['total_results']
|
18
16
|
result
|
19
17
|
end
|
20
|
-
|
21
|
-
def read
|
18
|
+
|
19
|
+
def read(id, params = {})
|
22
20
|
post "/do/read/id/#{id}", params
|
23
21
|
end
|
24
|
-
|
22
|
+
|
25
23
|
protected
|
26
|
-
|
27
|
-
def get
|
28
|
-
response = @client.get
|
24
|
+
|
25
|
+
def get(path, params = {}, result = 'visit')
|
26
|
+
response = @client.get 'visit', path, params
|
29
27
|
result ? response[result] : response
|
30
28
|
end
|
31
|
-
|
32
|
-
def post
|
33
|
-
response = @client.post
|
29
|
+
|
30
|
+
def post(path, params = {}, result = 'visit')
|
31
|
+
response = @client.post 'visit', path, params
|
34
32
|
result ? response[result] : response
|
35
33
|
end
|
36
|
-
|
37
34
|
end
|
38
|
-
|
39
35
|
end
|
40
36
|
end
|
41
37
|
end
|
data/lib/pardot/version.rb
CHANGED
data/ruby-pardot.gemspec
CHANGED
@@ -1,27 +1,29 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('lib/pardot/version', __dir__)
|
3
4
|
|
4
5
|
Gem::Specification.new do |s|
|
5
|
-
s.name =
|
6
|
+
s.name = 'ruby-pardot'
|
6
7
|
s.version = Pardot::VERSION
|
7
8
|
s.platform = Gem::Platform::RUBY
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
9
|
+
s.authors = ['Dan Cunning']
|
10
|
+
s.email = ['support@pardot.com']
|
11
|
+
s.homepage = 'http://github.com/pardot/ruby-pardot'
|
12
|
+
s.summary = 'Library for interacting with the Pardot API'
|
13
|
+
s.description = 'Library for interacting with the Pardot API'
|
13
14
|
|
15
|
+
s.required_ruby_version = '>= 2.6'
|
14
16
|
s.required_rubygems_version = ">= 1.3.6"
|
15
17
|
s.rubyforge_project = "ruby-pardot"
|
16
18
|
|
17
|
-
s.add_dependency
|
18
|
-
s.add_dependency
|
19
|
+
s.add_dependency 'crack', '0.4.3'
|
20
|
+
s.add_dependency 'httparty', '0.18.1'
|
19
21
|
|
20
22
|
s.add_development_dependency "bundler", ">= 1.10"
|
21
23
|
s.add_development_dependency "rspec", "3.5.0"
|
22
|
-
s.add_development_dependency "fakeweb"
|
24
|
+
s.add_development_dependency "fakeweb", "1.3.0"
|
23
25
|
|
24
26
|
s.files = `git ls-files`.split("\n")
|
25
|
-
s.executables = `git ls-files`.split("\n").map{|f| f =~
|
27
|
+
s.executables = `git ls-files`.split("\n").map { |f| f =~ %r{^bin/(.*)} ? Regexp.last_match(1) : nil }.compact
|
26
28
|
s.require_path = 'lib'
|
27
29
|
end
|
@@ -1,91 +1,125 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
|
2
4
|
|
3
5
|
describe Pardot::Authentication do
|
4
|
-
|
5
6
|
def create_client
|
6
|
-
@client = Pardot::Client.new
|
7
|
+
@client = Pardot::Client.new 'user@test.com', 'foo', 'bar'
|
8
|
+
end
|
9
|
+
|
10
|
+
def create_client_using_salesforce_access_token
|
11
|
+
@client = Pardot::Client.new nil, nil, nil, 3, 'access_token_value', '0Uv000000000001CAA'
|
7
12
|
end
|
8
|
-
|
9
|
-
describe
|
10
|
-
|
13
|
+
|
14
|
+
describe 'authenticate with Salesforce access_token' do
|
15
|
+
before do
|
16
|
+
@client = create_client_using_salesforce_access_token
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'raises error when calling authenticate' do
|
20
|
+
expect do
|
21
|
+
@client.authenticate
|
22
|
+
end.to raise_error.with_message(/Authentication not available when using Salesforce access token/)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'raises error when calling reauthenticate' do
|
26
|
+
expect do
|
27
|
+
@client.reauthenticate
|
28
|
+
end.to raise_error.with_message(/Reauthentication not available when using Salesforce access token/)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'returns true for authenticated' do
|
32
|
+
expect(@client.authenticated?).to eq(true)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'returns true for using_salesforce_access_token' do
|
36
|
+
expect(@client.using_salesforce_access_token?).to eq(true)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'authenticate' do
|
11
41
|
before do
|
12
42
|
@client = create_client
|
13
|
-
|
14
|
-
fake_post
|
43
|
+
|
44
|
+
fake_post '/api/login/version/3',
|
15
45
|
%(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">\n <api_key>my_api_key</api_key>\n</rsp>\n)
|
16
46
|
end
|
17
|
-
|
47
|
+
|
18
48
|
def authenticate
|
19
49
|
@client.authenticate
|
20
50
|
end
|
21
51
|
|
22
|
-
def
|
52
|
+
def verify_body
|
23
53
|
expect(FakeWeb.last_request.body).to eq('email=user%40test.com&password=foo&user_key=bar')
|
24
54
|
end
|
25
|
-
|
26
|
-
it
|
27
|
-
expect(authenticate).to eq(
|
55
|
+
|
56
|
+
it 'should return the api key' do
|
57
|
+
expect(authenticate).to eq('my_api_key')
|
28
58
|
end
|
29
|
-
|
30
|
-
it
|
59
|
+
|
60
|
+
it 'should set the api key' do
|
31
61
|
authenticate
|
32
|
-
expect(@client.api_key).to eq(
|
33
|
-
|
62
|
+
expect(@client.api_key).to eq('my_api_key')
|
63
|
+
verify_body
|
34
64
|
end
|
35
|
-
|
36
|
-
it
|
65
|
+
|
66
|
+
it 'should make authenticated? true' do
|
37
67
|
authenticate
|
38
68
|
expect(@client.authenticated?).to eq(true)
|
39
|
-
|
69
|
+
verify_body
|
40
70
|
end
|
41
71
|
|
42
|
-
it
|
72
|
+
it 'should use version 3' do
|
43
73
|
authenticate
|
44
74
|
expect(@client.version.to_i).to eq(3)
|
45
|
-
|
75
|
+
verify_body
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns false for using_salesforce_access_token' do
|
79
|
+
expect(@client.using_salesforce_access_token?).to eq(false)
|
80
|
+
|
81
|
+
authenticate
|
82
|
+
expect(@client.using_salesforce_access_token?).to eq(false)
|
83
|
+
verify_body
|
46
84
|
end
|
47
|
-
|
48
85
|
end
|
49
86
|
|
50
|
-
describe
|
51
|
-
|
87
|
+
describe 'authenticateV4' do
|
52
88
|
before do
|
53
89
|
@client = create_client
|
54
|
-
|
55
|
-
fake_post
|
90
|
+
|
91
|
+
fake_post '/api/login/version/3',
|
56
92
|
%(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">\n <api_key>my_api_key</api_key>\n<version>4</version>\n</rsp>\n)
|
57
93
|
end
|
58
|
-
|
94
|
+
|
59
95
|
def authenticate
|
60
96
|
@client.authenticate
|
61
97
|
end
|
62
98
|
|
63
|
-
def
|
99
|
+
def verify_body
|
64
100
|
expect(FakeWeb.last_request.body).to eq('email=user%40test.com&password=foo&user_key=bar')
|
65
101
|
end
|
66
|
-
|
67
|
-
it
|
68
|
-
expect(authenticate).to eq(
|
102
|
+
|
103
|
+
it 'should return the api key' do
|
104
|
+
expect(authenticate).to eq('my_api_key')
|
69
105
|
end
|
70
|
-
|
71
|
-
it
|
106
|
+
|
107
|
+
it 'should set the api key' do
|
72
108
|
authenticate
|
73
|
-
expect(@client.api_key).to eq(
|
74
|
-
|
109
|
+
expect(@client.api_key).to eq('my_api_key')
|
110
|
+
verify_body
|
75
111
|
end
|
76
|
-
|
77
|
-
it
|
112
|
+
|
113
|
+
it 'should make authenticated? true' do
|
78
114
|
authenticate
|
79
115
|
expect(@client.authenticated?).to eq(true)
|
80
|
-
|
116
|
+
verify_body
|
81
117
|
end
|
82
118
|
|
83
|
-
it
|
119
|
+
it 'should use version 4' do
|
84
120
|
authenticate
|
85
121
|
expect(@client.version.to_i).to eq(4)
|
86
|
-
|
122
|
+
verify_body
|
87
123
|
end
|
88
|
-
|
89
124
|
end
|
90
|
-
|
91
|
-
end
|
125
|
+
end
|
data/spec/pardot/client_spec.rb
CHANGED
@@ -1,28 +1,63 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
|
2
4
|
|
3
5
|
describe Pardot::Client do
|
4
|
-
|
5
6
|
def create_client
|
6
|
-
@client = Pardot::Client.new
|
7
|
+
@client = Pardot::Client.new 'user@test.com', 'foo', 'bar'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'client with Salesforce access_token' do
|
11
|
+
it 'should set properties' do
|
12
|
+
@client = Pardot::Client.new nil, nil, nil, 3, 'access_token_value', '0Uv000000000001CAA'
|
13
|
+
expect(@client.email).to eq(nil)
|
14
|
+
expect(@client.password).to eq(nil)
|
15
|
+
expect(@client.user_key).to eq(nil)
|
16
|
+
expect(@client.api_key).to eq(nil)
|
17
|
+
expect(@client.version).to eq(3)
|
18
|
+
expect(@client.salesforce_access_token).to eq('access_token_value')
|
19
|
+
expect(@client.business_unit_id).to eq('0Uv000000000001CAA')
|
20
|
+
expect(@client.format).to eq('simple')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'raises error with nil business_unit_id' do
|
24
|
+
expect do
|
25
|
+
Pardot::Client.new nil, nil, nil, 3, 'access_token_value',
|
26
|
+
nil
|
27
|
+
end.to raise_error.with_message(/business_unit_id required when using Salesforce access_token/)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'raises error with invalid business_unit_id due to length' do
|
31
|
+
expect do
|
32
|
+
Pardot::Client.new nil, nil, nil, 3, 'access_token_value',
|
33
|
+
'0Uv1234567890'
|
34
|
+
end.to raise_error.with_message(/Invalid business_unit_id value. Expected ID to start with '0Uv' and be length of 18 characters./)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'raises error with invalid business_unit_id due to invalid prefix' do
|
38
|
+
expect do
|
39
|
+
Pardot::Client.new nil, nil, nil, 3, 'access_token_value',
|
40
|
+
'001000000000001AAA'
|
41
|
+
end.to raise_error.with_message(/Invalid business_unit_id value. Expected ID to start with '0Uv' and be length of 18 characters./)
|
42
|
+
end
|
7
43
|
end
|
8
|
-
|
9
|
-
describe
|
44
|
+
|
45
|
+
describe 'client' do
|
10
46
|
after do
|
11
|
-
expect(@client.email).to eq(
|
12
|
-
expect(@client.password).to eq(
|
13
|
-
expect(@client.user_key).to eq(
|
14
|
-
expect(@client.format).to eq(
|
47
|
+
expect(@client.email).to eq('user@test.com')
|
48
|
+
expect(@client.password).to eq('password')
|
49
|
+
expect(@client.user_key).to eq('user_key')
|
50
|
+
expect(@client.format).to eq('simple')
|
15
51
|
end
|
16
52
|
|
17
|
-
it
|
18
|
-
@client = Pardot::Client.new
|
53
|
+
it 'should set variables without version' do
|
54
|
+
@client = Pardot::Client.new 'user@test.com', 'password', 'user_key'
|
19
55
|
expect(@client.version).to eq(3)
|
20
56
|
end
|
21
|
-
|
22
|
-
it
|
23
|
-
@client = Pardot::Client.new
|
57
|
+
|
58
|
+
it 'should set variables with version' do
|
59
|
+
@client = Pardot::Client.new 'user@test.com', 'password', 'user_key', 4
|
24
60
|
expect(@client.version).to eq(4)
|
25
61
|
end
|
26
|
-
|
27
62
|
end
|
28
63
|
end
|