ruby-pardot 1.0.2 → 1.3.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9b5a3bceaeff6bb81efc73dfc2ee2fb51e3fce2e
4
- data.tar.gz: cdc11f89e0415c6b3d0484d7fe67147a3b8a087e
2
+ SHA256:
3
+ metadata.gz: e618137557812f8899ff1d06b37bedb49d72cc51e191a091c15b5135780e3bd5
4
+ data.tar.gz: 22b0992ead0f91fa432af3ccfbad1ea1b1cb65080c7898b8ed9cc9695fbcfa64
5
5
  SHA512:
6
- metadata.gz: 69f994887ac58cf22de6f963d1793f4dfb0ba35cb3adedc4d3baf3fcabd766ce187bb31047de526545488cbe951c7e31d29872bfe75d5029a675254c7fe60817
7
- data.tar.gz: 013ffa24e4853541125c89bcb08c90ce88de3db3a0cd2475fba4bc787682f1e8fd1a9e91550cc1ea702e74c282b8b818e2fa254cba29699a0471a612cc108b16
6
+ metadata.gz: 3038da0a48d2608cb4395e4ec8ce0a8fcbd3962357279a4ce76b9e74eb936ea22f4942ded8261aa9507af0bb93501b0a07a8c91b05f1fdb6c1b7fb3cf188c87a
7
+ data.tar.gz: 7fffe6dd67e999a0c294c170dea8929e2885b4957d08bdfc812338696497db02af39015751fed5ea708b9e5090d09fbbb8594f20b548ad4c5a1d5e16e0b5577f
@@ -1,37 +1,47 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-pardot (1.0.2)
5
- crack
6
- httparty
4
+ ruby-pardot (1.3.2)
5
+ crack (= 0.4.3)
6
+ httparty (= 0.18.1)
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- crack (0.4.2)
11
+ crack (0.4.3)
12
12
  safe_yaml (~> 1.0.0)
13
- diff-lcs (1.1.2)
13
+ diff-lcs (1.4.4)
14
14
  fakeweb (1.3.0)
15
- httparty (0.13.1)
16
- json (~> 1.8)
15
+ httparty (0.18.1)
16
+ mime-types (~> 3.0)
17
17
  multi_xml (>= 0.5.2)
18
- json (1.8.1)
19
- multi_xml (0.5.5)
20
- rspec (2.5.0)
21
- rspec-core (~> 2.5.0)
22
- rspec-expectations (~> 2.5.0)
23
- rspec-mocks (~> 2.5.0)
24
- rspec-core (2.5.1)
25
- rspec-expectations (2.5.0)
26
- diff-lcs (~> 1.1.2)
27
- rspec-mocks (2.5.0)
28
- safe_yaml (1.0.3)
18
+ mime-types (3.3.1)
19
+ mime-types-data (~> 3.2015)
20
+ mime-types-data (3.2020.0512)
21
+ multi_xml (0.6.0)
22
+ rspec (3.5.0)
23
+ rspec-core (~> 3.5.0)
24
+ rspec-expectations (~> 3.5.0)
25
+ rspec-mocks (~> 3.5.0)
26
+ rspec-core (3.5.4)
27
+ rspec-support (~> 3.5.0)
28
+ rspec-expectations (3.5.0)
29
+ diff-lcs (>= 1.2.0, < 2.0)
30
+ rspec-support (~> 3.5.0)
31
+ rspec-mocks (3.5.0)
32
+ diff-lcs (>= 1.2.0, < 2.0)
33
+ rspec-support (~> 3.5.0)
34
+ rspec-support (3.5.0)
35
+ safe_yaml (1.0.5)
29
36
 
30
37
  PLATFORMS
31
38
  ruby
32
39
 
33
40
  DEPENDENCIES
34
- bundler (>= 1.0.0)
41
+ bundler (>= 1.10)
35
42
  fakeweb
36
- rspec
43
+ rspec (= 3.5.0)
37
44
  ruby-pardot!
45
+
46
+ BUNDLED WITH
47
+ 2.1.4
@@ -10,6 +10,8 @@ Add the following to your Gemfile
10
10
 
11
11
  The client will authenticate before performing other API calls, but you can manually authenticate as well
12
12
 
13
+ require "ruby-pardot"
14
+
13
15
  client = Pardot::Client.new email, password, user_key
14
16
 
15
17
  # will raise a Pardot::ResponseError if login fails
@@ -20,6 +22,7 @@ The client will authenticate before performing other API calls, but you can manu
20
22
 
21
23
  The available objects are:
22
24
 
25
+ * custom_fields
23
26
  * emails
24
27
  * lists
25
28
  * opportunities
@@ -2,7 +2,8 @@ module Pardot
2
2
  module Authentication
3
3
 
4
4
  def authenticate
5
- resp = post "login", nil, :email => @email, :password => @password, :user_key => @user_key
5
+ resp = post "login", nil, nil, nil, :email => @email, :password => @password, :user_key => @user_key
6
+ update_version(resp["version"]) if resp && resp["version"]
6
7
  @api_key = resp && resp["api_key"]
7
8
  end
8
9
 
@@ -14,6 +15,15 @@ module Pardot
14
15
  @api_key = nil
15
16
  authenticate
16
17
  end
17
-
18
+
19
+ private
20
+
21
+ def update_version version
22
+ if version.is_a? Array
23
+ version = version.last
24
+ end
25
+ @version = version if version.to_i > 3
26
+ end
27
+
18
28
  end
19
29
  end
@@ -9,6 +9,7 @@ module Pardot
9
9
  include Authentication
10
10
  include Http
11
11
 
12
+ include Objects::CustomFields
12
13
  include Objects::Emails
13
14
  include Objects::Lists
14
15
  include Objects::ListMemberships
@@ -20,16 +21,16 @@ module Pardot
20
21
  include Objects::Visits
21
22
  include Objects::VisitorActivities
22
23
 
23
- attr_accessor :email, :password, :user_key, :api_key, :format
24
+ attr_accessor :email, :password, :user_key, :api_key, :version, :format
24
25
 
25
- def initialize email, password, user_key
26
+ def initialize email, password, user_key, version = 3
26
27
  @email = email
27
28
  @password = password
28
29
  @user_key = user_key
30
+ @version = version
29
31
 
30
32
  @format = "simple"
31
33
  end
32
34
 
33
-
34
35
  end
35
36
  end
@@ -4,7 +4,8 @@ module Pardot
4
4
  def get object, path, params = {}, num_retries = 0
5
5
  smooth_params object, params
6
6
  full_path = fullpath object, path
7
- check_response self.class.get(full_path, :query => params)
7
+ headers = create_auth_header object
8
+ check_response self.class.get(full_path, :query => params, :headers => headers)
8
9
 
9
10
  rescue Pardot::ExpiredApiKeyError => e
10
11
  handle_expired_api_key :get, object, path, params, num_retries, e
@@ -13,10 +14,11 @@ module Pardot
13
14
  raise Pardot::NetError.new(e)
14
15
  end
15
16
 
16
- def post object, path, params = {}, num_retries = 0
17
+ def post object, path, params = {}, num_retries = 0, bodyParams = {}
17
18
  smooth_params object, params
18
19
  full_path = fullpath object, path
19
- check_response self.class.post(full_path, :query => params)
20
+ headers = create_auth_header object
21
+ check_response self.class.post(full_path, :query => params, :body => bodyParams, :headers => headers)
20
22
 
21
23
  rescue Pardot::ExpiredApiKeyError => e
22
24
  handle_expired_api_key :post, object, path, params, num_retries, e
@@ -39,7 +41,12 @@ module Pardot
39
41
  return if object == "login"
40
42
 
41
43
  authenticate unless authenticated?
42
- params.merge! :user_key => @user_key, :api_key => @api_key, :format => @format
44
+ params.merge! :format => @format
45
+ end
46
+
47
+ def create_auth_header object
48
+ return if object == "login"
49
+ { :Authorization => "Pardot api_key=#{@api_key}, user_key=#{@user_key}" }
43
50
  end
44
51
 
45
52
  def check_response http_response
@@ -58,8 +65,8 @@ module Pardot
58
65
  rsp
59
66
  end
60
67
 
61
- def fullpath object, path, version = 3
62
- full = File.join("/api", object, "version", version.to_s)
68
+ def fullpath object, path
69
+ full = File.join("/api", object, "version", @version.to_s)
63
70
  unless path.nil?
64
71
  full = File.join(full, path)
65
72
  end
@@ -0,0 +1,37 @@
1
+ module Pardot
2
+ module Objects
3
+ module CustomFields
4
+
5
+ def custom_fields
6
+ @custom_fields ||= CustomFields.new self
7
+ end
8
+
9
+ class CustomFields
10
+
11
+ def initialize client
12
+ @client = client
13
+ end
14
+
15
+ def query params
16
+ result = get "/do/query", params, "result"
17
+ result["total_results"] = result["total_results"].to_i if result["total_results"]
18
+ result
19
+ end
20
+
21
+ protected
22
+
23
+ def get path, params = {}, result = "customField"
24
+ response = @client.get "customField", path, params
25
+ result ? response[result] : response
26
+ end
27
+
28
+ def post path, params = {}, result = "user"
29
+ response = @client.post "customField", path, params
30
+ result ? response[result] : response
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -1,73 +1,111 @@
1
+ require 'cgi'
2
+
1
3
  module Pardot
2
4
  module Objects
3
5
  module Prospects
4
-
6
+
5
7
  def prospects
6
8
  @prospects ||= Prospects.new self
7
9
  end
8
-
10
+
9
11
  class Prospects
10
-
12
+
11
13
  def initialize client
12
14
  @client = client
13
15
  end
14
-
16
+
15
17
  def query search_criteria
16
18
  result = get "/do/query", search_criteria, "result"
17
19
  result["total_results"] = result["total_results"].to_i if result["total_results"]
18
20
  result
19
21
  end
20
-
22
+
21
23
  def assign_by_email email, params
22
- post "/do/assign/email/#{email}", params
24
+ post "/do/assign/email/#{CGI.escape(email)}", params
23
25
  end
24
-
26
+
25
27
  def assign_by_id id, params
26
- post "/do/assign/id/#{id}", params
28
+ post "/do/assign/id/#{CGI.escape(id)}", params
27
29
  end
28
-
30
+
31
+ def assign_by_fid fid, params
32
+ post "/do/assign/fid/#{CGI.escape(fid)}", params
33
+ end
34
+
29
35
  def create email, params = {}
30
- post "/do/create/email/#{email}", params
36
+ post "/do/create/email/#{CGI.escape(email)}", params
37
+ end
38
+
39
+ def delete_by_id id, params = {}
40
+ post "/do/delete/id/#{CGI.escape(id)}", params
41
+ end
42
+
43
+ def delete_by_fid fid, params = {}
44
+ post "/do/delete/fid/#{CGI.escape(fid)}", params
31
45
  end
32
-
46
+
33
47
  def read_by_email email, params = {}
34
- post "/do/read/email/#{email}", params
48
+ post "/do/read/email/#{CGI.escape(email)}", params
35
49
  end
36
-
50
+
37
51
  def read_by_id id, params = {}
38
- post "/do/read/id/#{id}", params
52
+ post "/do/read/id/#{CGI.escape(id)}", params
53
+ end
54
+
55
+ def read_by_fid fid, params = {}
56
+ post "/do/read/fid/#{CGI.escape(fid)}", params
57
+ end
58
+
59
+ def unassign_by_email email, params = {}
60
+ post "/do/unassign/email/#{CGI.escape(email)}", params
39
61
  end
40
-
62
+
63
+ def unassign_by_id id, params = {}
64
+ post "/do/unassign/id/#{CGI.escape(id)}", params
65
+ end
66
+
67
+ def unassign_by_fid fid, params = {}
68
+ post "/do/unassign/fid/#{CGI.escape(fid)}", params
69
+ end
70
+
41
71
  def update_by_email email, params = {}
42
- post "/do/update/email/#{email}", params
72
+ post "/do/update/email/#{CGI.escape(email)}", params
43
73
  end
44
-
74
+
45
75
  def update_by_id id, params = {}
46
- post "/do/update/id/#{id}", params
76
+ post "/do/update/id/#{CGI.escape(id)}", params
47
77
  end
48
-
78
+
79
+ def update_by_fid fid, params = {}
80
+ post "/do/update/fid/#{CGI.escape(fid)}", params
81
+ end
82
+
49
83
  def upsert_by_email email, params = {}
50
- post "/do/upsert/email/#{email}", params
84
+ post "/do/upsert/email/#{CGI.escape(email)}", params
51
85
  end
52
-
86
+
53
87
  def upsert_by_id id, params = {}
54
- post "/do/upsert/id/#{id}", params
88
+ post "/do/upsert/id/#{CGI.escape(id)}", params
89
+ end
90
+
91
+ def upsert_by_fid fid, params = {}
92
+ post "/do/upsert/fid/#{CGI.escape(fid)}", params
55
93
  end
56
-
94
+
57
95
  protected
58
-
96
+
59
97
  def get path, params = {}, result = "prospect"
60
98
  response = @client.get "prospect", path, params
61
99
  result ? response[result] : response
62
100
  end
63
-
101
+
64
102
  def post path, params = {}, result = "prospect"
65
103
  response = @client.post "prospect", path, params
66
104
  result ? response[result] : response
67
105
  end
68
-
106
+
69
107
  end
70
-
108
+
71
109
  end
72
110
  end
73
111
  end
@@ -1,3 +1,3 @@
1
1
  module Pardot
2
- VERSION = "1.0.2"
2
+ VERSION = "1.3.2"
3
3
  end
@@ -6,6 +6,7 @@ require 'pardot/http'
6
6
  require 'pardot/error'
7
7
  require 'pardot/authentication'
8
8
 
9
+ require 'pardot/objects/custom_fields'
9
10
  require 'pardot/objects/emails'
10
11
  require 'pardot/objects/lists'
11
12
  require 'pardot/objects/list_memberships'
@@ -14,11 +14,11 @@ Gem::Specification.new do |s|
14
14
  s.required_rubygems_version = ">= 1.3.6"
15
15
  s.rubyforge_project = "ruby-pardot"
16
16
 
17
- s.add_dependency "crack"
18
- s.add_dependency "httparty"
17
+ s.add_dependency "crack", "0.4.3"
18
+ s.add_dependency "httparty", "0.18.1"
19
19
 
20
- s.add_development_dependency "bundler", ">= 1.0.0"
21
- s.add_development_dependency "rspec"
20
+ s.add_development_dependency "bundler", ">= 1.10"
21
+ s.add_development_dependency "rspec", "3.5.0"
22
22
  s.add_development_dependency "fakeweb"
23
23
 
24
24
  s.files = `git ls-files`.split("\n")
@@ -11,26 +11,79 @@ describe Pardot::Authentication do
11
11
  before do
12
12
  @client = create_client
13
13
 
14
- fake_post "/api/login/version/3?email=user%40test.com&password=foo&user_key=bar",
14
+ fake_post "/api/login/version/3",
15
15
  %(<?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
16
  end
17
17
 
18
18
  def authenticate
19
19
  @client.authenticate
20
20
  end
21
+
22
+ def verifyBody
23
+ expect(FakeWeb.last_request.body).to eq('email=user%40test.com&password=foo&user_key=bar')
24
+ end
21
25
 
22
26
  it "should return the api key" do
23
- authenticate.should == "my_api_key"
27
+ expect(authenticate).to eq("my_api_key")
24
28
  end
25
29
 
26
30
  it "should set the api key" do
27
31
  authenticate
28
- @client.api_key.should == "my_api_key"
32
+ expect(@client.api_key).to eq("my_api_key")
33
+ verifyBody
29
34
  end
30
35
 
31
36
  it "should make authenticated? true" do
32
37
  authenticate
33
- @client.authenticated?.should == true
38
+ expect(@client.authenticated?).to eq(true)
39
+ verifyBody
40
+ end
41
+
42
+ it "should use version 3" do
43
+ authenticate
44
+ expect(@client.version.to_i).to eq(3)
45
+ verifyBody
46
+ end
47
+
48
+ end
49
+
50
+ describe "authenticateV4" do
51
+
52
+ before do
53
+ @client = create_client
54
+
55
+ fake_post "/api/login/version/3",
56
+ %(<?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
+ end
58
+
59
+ def authenticate
60
+ @client.authenticate
61
+ end
62
+
63
+ def verifyBody
64
+ expect(FakeWeb.last_request.body).to eq('email=user%40test.com&password=foo&user_key=bar')
65
+ end
66
+
67
+ it "should return the api key" do
68
+ expect(authenticate).to eq("my_api_key")
69
+ end
70
+
71
+ it "should set the api key" do
72
+ authenticate
73
+ expect(@client.api_key).to eq("my_api_key")
74
+ verifyBody
75
+ end
76
+
77
+ it "should make authenticated? true" do
78
+ authenticate
79
+ expect(@client.authenticated?).to eq(true)
80
+ verifyBody
81
+ end
82
+
83
+ it "should use version 4" do
84
+ authenticate
85
+ expect(@client.version.to_i).to eq(4)
86
+ verifyBody
34
87
  end
35
88
 
36
89
  end
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Pardot::Client do
4
+
5
+ def create_client
6
+ @client = Pardot::Client.new "user@test.com", "foo", "bar"
7
+ end
8
+
9
+ describe "client" do
10
+ after do
11
+ expect(@client.email).to eq("user@test.com")
12
+ expect(@client.password).to eq("password")
13
+ expect(@client.user_key).to eq("user_key")
14
+ expect(@client.format).to eq("simple")
15
+ end
16
+
17
+ it "should set variables without version" do
18
+ @client = Pardot::Client.new "user@test.com", "password", "user_key"
19
+ expect(@client.version).to eq(3)
20
+ end
21
+
22
+ it "should set variables with version" do
23
+ @client = Pardot::Client.new "user@test.com", "password", "user_key", 4
24
+ expect(@client.version).to eq(4)
25
+ end
26
+
27
+ end
28
+ end
@@ -21,10 +21,10 @@ describe Pardot::ResponseError do
21
21
  described_class.new(@res)
22
22
  end
23
23
  specify do
24
- subject.to_s.should == @res["__content__"]
24
+ expect(subject.to_s).to eq(@res["__content__"])
25
25
  end
26
26
  specify do
27
- subject.message.should == @res["__content__"]
27
+ expect(subject.message).to eq(@res["__content__"])
28
28
  end
29
29
  end
30
30
 
@@ -18,23 +18,24 @@ describe Pardot::Http do
18
18
  end
19
19
 
20
20
  it "should notice errors and raise them as Pardot::ResponseError" do
21
- fake_get "/api/foo/version/3/bar?api_key=my_api_key&format=simple&user_key=bar",
21
+ fake_get "/api/foo/version/3/bar?format=simple",
22
22
  %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
23
23
 
24
- lambda { get }.should raise_error(Pardot::ResponseError)
24
+
25
+ expect(lambda { get }).to raise_error(Pardot::ResponseError)
25
26
  end
26
27
 
27
28
  it "should catch and reraise SocketErrors as Pardot::NetError" do
28
- Pardot::Client.should_receive(:get).and_raise(SocketError)
29
+ expect(Pardot::Client).to receive(:get).and_raise(SocketError)
29
30
 
30
- lambda { get }.should raise_error(Pardot::NetError)
31
+ expect(lambda { get }).to raise_error(Pardot::NetError)
31
32
  end
32
33
 
33
34
  it "should call handle_expired_api_key when the api key expires" do
34
- fake_get "/api/foo/version/3/bar?api_key=my_api_key&format=simple&user_key=bar",
35
+ fake_get "/api/foo/version/3/bar?format=simple",
35
36
  %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
36
37
 
37
- @client.should_receive(:handle_expired_api_key)
38
+ expect(@client).to receive(:handle_expired_api_key)
38
39
  get
39
40
  end
40
41
 
@@ -47,23 +48,83 @@ describe Pardot::Http do
47
48
  end
48
49
 
49
50
  it "should notice errors and raise them as Pardot::ResponseError" do
50
- fake_post "/api/foo/version/3/bar?api_key=my_api_key&format=simple&user_key=bar",
51
+ fake_post "/api/foo/version/3/bar?format=simple",
52
+ %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
53
+
54
+ expect(lambda { post }).to raise_error(Pardot::ResponseError)
55
+ end
56
+
57
+ it "should catch and reraise SocketErrors as Pardot::NetError" do
58
+ expect(Pardot::Client).to receive(:post).and_raise(SocketError)
59
+
60
+ expect(lambda { post }).to raise_error(Pardot::NetError)
61
+ end
62
+
63
+ it "should call handle_expired_api_key when the api key expires" do
64
+ fake_post "/api/foo/version/3/bar?format=simple",
65
+ %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
66
+
67
+ expect(@client).to receive(:handle_expired_api_key)
68
+ post
69
+ end
70
+
71
+ end
72
+
73
+ describe "getV4" do
74
+
75
+ def get object = "foo", path = "/bar", params = {}
76
+ @client.version = "4"
77
+ @client.get object, path, params
78
+ end
79
+
80
+ it "should notice errors and raise them as Pardot::ResponseError" do
81
+ fake_get "/api/foo/version/4/bar?format=simple",
82
+ %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
83
+
84
+ expect(lambda { get }).to raise_error(Pardot::ResponseError)
85
+ end
86
+
87
+ it "should catch and reraise SocketErrors as Pardot::NetError" do
88
+ expect(Pardot::Client).to receive(:get).and_raise(SocketError)
89
+
90
+ expect(lambda { get }).to raise_error(Pardot::NetError)
91
+ end
92
+
93
+ it "should call handle_expired_api_key when the api key expires" do
94
+ fake_get "/api/foo/version/4/bar?format=simple",
95
+ %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
96
+
97
+ expect(@client).to receive(:handle_expired_api_key)
98
+ get
99
+ end
100
+
101
+ end
102
+
103
+ describe "postV4" do
104
+
105
+ def post object = "foo", path = "/bar", params = {}
106
+ @client.version = "4"
107
+ @client.post object, path, params
108
+ end
109
+
110
+ it "should notice errors and raise them as Pardot::ResponseError" do
111
+ fake_post "/api/foo/version/4/bar?format=simple",
51
112
  %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
52
113
 
53
- lambda { post }.should raise_error(Pardot::ResponseError)
114
+ expect(lambda { post }).to raise_error(Pardot::ResponseError)
54
115
  end
55
116
 
56
117
  it "should catch and reraise SocketErrors as Pardot::NetError" do
57
- Pardot::Client.should_receive(:post).and_raise(SocketError)
118
+ expect(Pardot::Client).to receive(:post).and_raise(SocketError)
58
119
 
59
- lambda { post }.should raise_error(Pardot::NetError)
120
+ expect(lambda { post }).to raise_error(Pardot::NetError)
60
121
  end
61
122
 
62
123
  it "should call handle_expired_api_key when the api key expires" do
63
- fake_post "/api/foo/version/3/bar?api_key=my_api_key&format=simple&user_key=bar",
124
+ fake_post "/api/foo/version/4/bar?format=simple",
64
125
  %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
65
126
 
66
- @client.should_receive(:handle_expired_api_key)
127
+ expect(@client).to receive(:handle_expired_api_key)
67
128
  post
68
129
  end
69
130
 
@@ -0,0 +1,58 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Pardot::Objects::CustomFields do
4
+
5
+ before do
6
+ @client = create_client
7
+ end
8
+
9
+ describe "query" do
10
+
11
+ def sample_results
12
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
+ <result>
14
+ <total_results>1</total_results>
15
+ <customField>
16
+ <created_at>2019-11-26 13:40:37</created_at>
17
+ <crm_id null="true" />
18
+ <field_id>CustomObject1574793618883</field_id>
19
+ <id>8932</id>
20
+ <is_record_multiple_responses>false</is_record_multiple_responses>
21
+ <is_use_values>false</is_use_values>
22
+ <name>Ω≈ç√∫˜µ≤≥÷</name>
23
+ <type>Text</type>
24
+ <type_id>1</type_id>
25
+ <updated_at>2019-11-26 13:40:37</updated_at>
26
+ </customField>
27
+ </result>
28
+ </rsp>)
29
+ end
30
+
31
+ before do
32
+ @client = create_client
33
+ end
34
+
35
+ it "should take in some arguments" do
36
+ fake_get "/api/customField/version/3/do/query?id_greater_than=200&format=simple", sample_results
37
+
38
+ expect(@client.custom_fields.query(:id_greater_than => 200)).to eq({"total_results" => 1,
39
+ "customField"=>
40
+ {
41
+ "id"=>"8932",
42
+ "name"=>"Ω≈ç√∫˜µ≤≥÷",
43
+ "field_id"=>"CustomObject1574793618883",
44
+ "type"=>"Text",
45
+ "type_id"=>"1",
46
+ "crm_id"=>{"null"=>"true"},
47
+ "is_record_multiple_responses"=>"false",
48
+ "is_use_values"=>"false",
49
+ "created_at"=>"2019-11-26 13:40:37",
50
+ "updated_at"=>"2019-11-26 13:40:37"
51
+ }
52
+ })
53
+ assert_authorization_header
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -19,18 +19,21 @@ describe Pardot::Objects::Emails do
19
19
  end
20
20
 
21
21
  it "should take in the email ID" do
22
- fake_get "/api/email/version/3/do/read/id/12?user_key=bar&api_key=my_api_key&format=simple", sample_response
23
- @client.emails.read_by_id(12).should == {"name" => "My Email"}
22
+ fake_get "/api/email/version/3/do/read/id/12?format=simple", sample_response
23
+ expect(@client.emails.read_by_id(12)).to eq({"name" => "My Email"})
24
+ assert_authorization_header
24
25
  end
25
26
 
26
27
  it 'should send to a prospect' do
27
- fake_post '/api/email/version/3/do/send/prospect_id/42?campaign_id=765&email_template_id=86&user_key=bar&api_key=my_api_key&format=simple', sample_response
28
- @client.emails.send_to_prospect(42, :campaign_id => 765, :email_template_id => 86).should == {"name" => "My Email"}
28
+ fake_post '/api/email/version/3/do/send/prospect_id/42?campaign_id=765&email_template_id=86&format=simple', sample_response
29
+ expect(@client.emails.send_to_prospect(42, :campaign_id => 765, :email_template_id => 86)).to eq({"name" => "My Email"})
30
+ assert_authorization_header
29
31
  end
30
32
 
31
33
  it 'should send to a list' do
32
- fake_post '/api/email/version/3/do/send?email_template_id=200&list_ids[]=235&campaign_id=654&user_key=bar&api_key=my_api_key&format=simple', sample_response
33
- @client.emails.send_to_list(:email_template_id => 200, 'list_ids[]' => 235, :campaign_id => 654).should == {"name" => "My Email"}
34
+ fake_post '/api/email/version/3/do/send?email_template_id=200&list_ids[]=235&campaign_id=654&format=simple', sample_response
35
+ expect(@client.emails.send_to_list(:email_template_id => 200, 'list_ids[]' => 235, :campaign_id => 654)).to eq({"name" => "My Email"})
36
+ assert_authorization_header
34
37
  end
35
38
 
36
39
  end
@@ -27,13 +27,14 @@ describe Pardot::Objects::Lists do
27
27
  end
28
28
 
29
29
  it "should take in some arguments" do
30
- fake_get "/api/list/version/3/do/query?api_key=my_api_key&id_greater_than=200&format=simple&user_key=bar", sample_results
30
+ fake_get "/api/list/version/3/do/query?id_greater_than=200&format=simple", sample_results
31
31
 
32
- @client.lists.query(:id_greater_than => 200).should == {"total_results" => 2,
32
+ expect(@client.lists.query(:id_greater_than => 200)).to eq({"total_results" => 2,
33
33
  "list"=>[
34
34
  {"name"=>"Asdf List"},
35
35
  {"name"=>"Qwerty List"}
36
- ]}
36
+ ]})
37
+ assert_authorization_header
37
38
  end
38
39
 
39
40
  end
@@ -29,13 +29,14 @@ describe Pardot::Objects::Opportunities do
29
29
  end
30
30
 
31
31
  it "should take in some arguments" do
32
- fake_get "/api/opportunity/version/3/do/query?api_key=my_api_key&id_greater_than=200&format=simple&user_key=bar", sample_results
32
+ fake_get "/api/opportunity/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
33
 
34
- @client.opportunities.query(:id_greater_than => 200).should == {"total_results" => 2,
34
+ expect(@client.opportunities.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
35
  "opportunity"=>[
36
36
  {"type"=>"Great", "name"=>"Jim"},
37
37
  {"type"=>"Good", "name"=>"Sue"}
38
- ]}
38
+ ]})
39
+ assert_authorization_header
39
40
  end
40
41
 
41
42
  end
@@ -53,10 +54,11 @@ describe Pardot::Objects::Opportunities do
53
54
  end
54
55
 
55
56
  it "should return the prospect" do
56
- fake_post "/api/opportunity/version/3/do/create/prospect_email/user@test.com?type=Good&api_key=my_api_key&user_key=bar&format=simple&name=Jim", sample_results
57
-
58
- @client.opportunities.create_by_email("user@test.com", :name => "Jim", :type => "Good").should == {"name"=>"Jim", "type"=>"Good"}
57
+ fake_post "/api/opportunity/version/3/do/create/prospect_email/user@test.com?type=Good&format=simple&name=Jim", sample_results
59
58
 
59
+ expect(@client.opportunities.create_by_email("user@test.com", :name => "Jim", :type => "Good")).to eq({"name"=>"Jim", "type"=>"Good"})
60
+
61
+ assert_authorization_header
60
62
  end
61
63
 
62
64
  end
@@ -24,13 +24,14 @@ describe Pardot::Objects::ProspectAccounts do
24
24
  end
25
25
 
26
26
  it "should take in some arguments and respond with valid items" do
27
- fake_get "/api/prospectAccount/version/3/do/query?assigned=true&format=simple&user_key=bar&api_key=my_api_key", sample_results
27
+ fake_get "/api/prospectAccount/version/3/do/query?assigned=true&format=simple", sample_results
28
28
 
29
- @client.prospect_accounts.query(:assigned => true).should == {'total_results' => 2,
29
+ expect(@client.prospect_accounts.query(:assigned => true)).to eq({'total_results' => 2,
30
30
  'prospectAccount'=>[
31
31
  {'name'=>'Spaceships R Us'},
32
32
  {'name'=>'Monsters Inc'}
33
- ]}
33
+ ]})
34
+ assert_authorization_header
34
35
  end
35
36
 
36
37
  end
@@ -47,9 +48,10 @@ describe Pardot::Objects::ProspectAccounts do
47
48
  end
48
49
 
49
50
  it 'should return a valid account' do
50
- fake_post '/api/prospectAccount/version/3/do/read/id/1234?assigned=true&format=simple&user_key=bar&api_key=my_api_key', sample_results
51
+ fake_post '/api/prospectAccount/version/3/do/read/id/1234?assigned=true&format=simple', sample_results
51
52
 
52
- @client.prospect_accounts.read('1234', :assigned => true).should == {'id' => '1234', 'name' => 'SupaDupaPanda' }
53
+ expect(@client.prospect_accounts.read('1234', :assigned => true)).to eq({'id' => '1234', 'name' => 'SupaDupaPanda' })
54
+ assert_authorization_header
53
55
  end
54
56
 
55
57
  end
@@ -67,10 +69,10 @@ describe Pardot::Objects::ProspectAccounts do
67
69
  end
68
70
 
69
71
  it 'should return the prospect account' do
70
- fake_post '/api/prospectAccount/version/3/do/create?api_key=my_api_key&user_key=bar&format=simple&name=SuperPanda', sample_results
71
-
72
- @client.prospect_accounts.create(:name => 'SuperPanda').should == {"name"=>"SuperPanda"}
72
+ fake_post '/api/prospectAccount/version/3/do/create?format=simple&name=SuperPanda', sample_results
73
73
 
74
+ expect(@client.prospect_accounts.create(:name => 'SuperPanda')).to eq({"name"=>"SuperPanda"})
75
+ assert_authorization_header
74
76
  end
75
77
 
76
78
  end
@@ -26,13 +26,14 @@ describe Pardot::Objects::Prospects do
26
26
  end
27
27
 
28
28
  it "should take in some arguments" do
29
- fake_get "/api/prospect/version/3/do/query?assigned=true&format=simple&user_key=bar&api_key=my_api_key", sample_results
29
+ fake_get "/api/prospect/version/3/do/query?assigned=true&format=simple", sample_results
30
30
 
31
- @client.prospects.query(:assigned => true).should == {"total_results" => 2,
31
+ expect(@client.prospects.query(:assigned => true)).to eq({"total_results" => 2,
32
32
  "prospect"=>[
33
33
  {"last_name"=>"Smith", "first_name"=>"Jim"},
34
34
  {"last_name"=>"Green", "first_name"=>"Sue"}
35
- ]}
35
+ ]})
36
+ assert_authorization_header
36
37
  end
37
38
 
38
39
  end
@@ -50,12 +51,12 @@ describe Pardot::Objects::Prospects do
50
51
  end
51
52
 
52
53
  it "should return the prospect" do
53
- fake_post "/api/prospect/version/3/do/create/email/user@test.com?api_key=my_api_key&user_key=bar&format=simple&first_name=Jim", sample_results
54
-
55
- @client.prospects.create("user@test.com", :first_name => "Jim").should == {"last_name"=>"Smith", "first_name"=>"Jim"}
56
-
54
+ fake_post "/api/prospect/version/3/do/create/email/user%40test.com?first_name=Jim&format=simple", sample_results
55
+
56
+ expect(@client.prospects.create("user@test.com", :first_name => "Jim")).to eq({"last_name"=>"Smith", "first_name"=>"Jim"})
57
+ assert_authorization_header
57
58
  end
58
59
 
59
60
  end
60
61
 
61
- end
62
+ end
@@ -29,13 +29,14 @@ describe Pardot::Objects::Users do
29
29
  end
30
30
 
31
31
  it "should take in some arguments" do
32
- fake_get "/api/user/version/3/do/query?api_key=my_api_key&user_key=bar&id_greater_than=200&format=simple", sample_results
32
+ fake_get "/api/user/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
33
 
34
- @client.users.query(:id_greater_than => 200).should == {"total_results" => 2,
34
+ expect(@client.users.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
35
  "user"=>[
36
36
  {"email"=>"user@test.com", "first_name"=>"Jim"},
37
37
  {"email"=>"user@example.com", "first_name"=>"Sue"}
38
- ]}
38
+ ]})
39
+ assert_authorization_header
39
40
  end
40
41
 
41
42
  end
@@ -53,10 +54,10 @@ describe Pardot::Objects::Users do
53
54
  end
54
55
 
55
56
  it "should return the prospect" do
56
- fake_post "/api/user/version/3/do/read/email/user@test.com?api_key=my_api_key&user_key=bar&format=simple", sample_results
57
-
58
- @client.users.read_by_email("user@test.com").should == {"email"=>"user@example.com", "first_name"=>"Sue"}
57
+ fake_post "/api/user/version/3/do/read/email/user@test.com?format=simple", sample_results
59
58
 
59
+ expect(@client.users.read_by_email("user@test.com")).to eq({"email"=>"user@example.com", "first_name"=>"Sue"})
60
+ assert_authorization_header
60
61
  end
61
62
 
62
63
  end
@@ -29,13 +29,14 @@ describe Pardot::Objects::VisitorActivities do
29
29
  end
30
30
 
31
31
  it "should take in some arguments" do
32
- fake_get "/api/visitorActivity/version/3/do/query?user_key=bar&api_key=my_api_key&id_greater_than=200&format=simple", sample_results
32
+ fake_get "/api/visitorActivity/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
33
 
34
- @client.visitor_activities.query(:id_greater_than => 200).should == {"total_results" => 2,
34
+ expect(@client.visitor_activities.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
35
  "visitorActivity"=>[
36
36
  {"type_name"=>"Read", "details"=>"Some details"},
37
37
  {"type_name"=>"Write", "details"=>"More details"}
38
- ]}
38
+ ]})
39
+ assert_authorization_header
39
40
  end
40
41
 
41
42
  end
@@ -53,10 +54,10 @@ describe Pardot::Objects::VisitorActivities do
53
54
  end
54
55
 
55
56
  it "should return the prospect" do
56
- fake_post "/api/visitorActivity/version/3/do/read/id/10?user_key=bar&api_key=my_api_key&format=simple", sample_results
57
-
58
- @client.visitor_activities.read(10).should == {"details"=>"More details", "type_name"=>"Write"}
57
+ fake_post "/api/visitorActivity/version/3/do/read/id/10?format=simple", sample_results
59
58
 
59
+ expect(@client.visitor_activities.read(10)).to eq({"details"=>"More details", "type_name"=>"Write"})
60
+ assert_authorization_header
60
61
  end
61
62
 
62
63
  end
@@ -29,13 +29,14 @@ describe Pardot::Objects::Visitors do
29
29
  end
30
30
 
31
31
  it "should take in some arguments" do
32
- fake_get "/api/visitor/version/3/do/query?api_key=my_api_key&user_key=bar&id_greater_than=200&format=simple", sample_results
32
+ fake_get "/api/visitor/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
33
 
34
- @client.visitors.query(:id_greater_than => 200).should == {"total_results" => 2,
34
+ expect(@client.visitors.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
35
  "visitor"=>[
36
36
  {"browser"=>"Firefox", "language"=>"en"},
37
37
  {"browser"=>"Chrome", "language"=>"es"}
38
- ]}
38
+ ]})
39
+ assert_authorization_header
39
40
  end
40
41
 
41
42
  end
@@ -53,10 +54,10 @@ describe Pardot::Objects::Visitors do
53
54
  end
54
55
 
55
56
  it "should return the prospect" do
56
- fake_post "/api/visitor/version/3/do/assign/id/10?type=Good&api_key=my_api_key&user_key=bar&format=simple&name=Jim", sample_results
57
-
58
- @client.visitors.assign(10, :name => "Jim", :type => "Good").should == {"browser"=>"Chrome", "language"=>"es"}
57
+ fake_post "/api/visitor/version/3/do/assign/id/10?type=Good&format=simple&name=Jim", sample_results
59
58
 
59
+ expect(@client.visitors.assign(10, :name => "Jim", :type => "Good")).to eq({"browser"=>"Chrome", "language"=>"es"})
60
+ assert_authorization_header
60
61
  end
61
62
 
62
63
  end
@@ -29,13 +29,14 @@ describe Pardot::Objects::Visits do
29
29
  end
30
30
 
31
31
  it "should take in some arguments" do
32
- fake_get "/api/visit/version/3/do/query?api_key=my_api_key&user_key=bar&id_greater_than=200&format=simple", sample_results
32
+ fake_get "/api/visit/version/3/do/query?id_greater_than=200&format=simple", sample_results
33
33
 
34
- @client.visits.query(:id_greater_than => 200).should == {"total_results" => 2,
34
+ expect(@client.visits.query(:id_greater_than => 200)).to eq({"total_results" => 2,
35
35
  "visit"=>[
36
36
  {"duration_in_seconds"=>"50", "visitor_page_view_count"=>"3"},
37
37
  {"duration_in_seconds"=>"10", "visitor_page_view_count"=>"1"}
38
- ]}
38
+ ]})
39
+ assert_authorization_header
39
40
  end
40
41
 
41
42
  end
@@ -53,10 +54,10 @@ describe Pardot::Objects::Visits do
53
54
  end
54
55
 
55
56
  it "should return the prospect" do
56
- fake_post "/api/visit/version/3/do/read/id/10?user_key=bar&api_key=my_api_key&format=simple", sample_results
57
-
58
- @client.visits.read(10).should == {"visitor_page_view_count"=>"1", "duration_in_seconds"=>"10"}
57
+ fake_post "/api/visit/version/3/do/read/id/10?format=simple", sample_results
59
58
 
59
+ expect(@client.visits.read(10)).to eq({"visitor_page_view_count"=>"1", "duration_in_seconds"=>"10"})
60
+ assert_authorization_header
60
61
  end
61
62
 
62
63
  end
@@ -12,3 +12,7 @@ end
12
12
  def fake_authenticate client, api_key
13
13
  client.api_key = api_key
14
14
  end
15
+
16
+ def assert_authorization_header
17
+ expect(FakeWeb.last_request[:authorization]).to eq('Pardot api_key=my_api_key, user_key=bar')
18
+ end
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-pardot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Cunning
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-15 00:00:00.000000000 Z
11
+ date: 2020-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: crack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.4.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.4.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.18.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.18.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
47
+ version: '1.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
54
+ version: '1.10'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 3.5.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 3.5.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -97,6 +97,7 @@ files:
97
97
  - lib/pardot/client.rb
98
98
  - lib/pardot/error.rb
99
99
  - lib/pardot/http.rb
100
+ - lib/pardot/objects/custom_fields.rb
100
101
  - lib/pardot/objects/emails.rb
101
102
  - lib/pardot/objects/list_memberships.rb
102
103
  - lib/pardot/objects/lists.rb
@@ -111,8 +112,10 @@ files:
111
112
  - lib/ruby-pardot.rb
112
113
  - ruby-pardot.gemspec
113
114
  - spec/pardot/authentication_spec.rb
115
+ - spec/pardot/client_spec.rb
114
116
  - spec/pardot/error_spec.rb
115
117
  - spec/pardot/http_spec.rb
118
+ - spec/pardot/objects/custom_fields_spec.rb
116
119
  - spec/pardot/objects/emails_spec.rb
117
120
  - spec/pardot/objects/lists_spec.rb
118
121
  - spec/pardot/objects/opportunities_spec.rb
@@ -143,8 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
146
  - !ruby/object:Gem::Version
144
147
  version: 1.3.6
145
148
  requirements: []
146
- rubyforge_project: ruby-pardot
147
- rubygems_version: 2.4.6
149
+ rubygems_version: 3.0.3
148
150
  signing_key:
149
151
  specification_version: 4
150
152
  summary: Library for interacting with the Pardot API