ruby-pardot 1.0.2 → 1.3.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
- 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