Skip to content

Commit eabf054

Browse files
committed
added users, visitor activities, visitors, visits API calls
1 parent 7ad4500 commit eabf054

File tree

10 files changed

+428
-0
lines changed

10 files changed

+428
-0
lines changed

lib/pardot/client.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class Client
1010
include Http
1111
include Prospects
1212
include Opportunities
13+
include Visitors
14+
include Users
15+
include Visits
16+
include VisitorActivities
1317

1418
attr_accessor :email, :password, :user_key, :api_key, :format
1519

lib/pardot/users.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
module Pardot
2+
module Users
3+
4+
def users
5+
@users ||= Users.new self
6+
end
7+
8+
class Users
9+
10+
def initialize client
11+
@client = client
12+
end
13+
14+
def query params
15+
result = get "/do/query", params, "result"
16+
result["total_results"] = result["total_results"].to_i if result["total_results"]
17+
result
18+
end
19+
20+
def read_by_email email, params = {}
21+
post "/do/read/email/#{email}", params
22+
end
23+
24+
def readby_id id, params = {}
25+
post "/do/read/id/#{id}", params
26+
end
27+
28+
protected
29+
30+
def get path, params = {}, result = "user"
31+
response = @client.get "user", path, params
32+
result ? response[result] : response
33+
end
34+
35+
def post path, params = {}, result = "user"
36+
response = @client.post "user", path, params
37+
result ? response[result] : response
38+
end
39+
40+
end
41+
42+
end
43+
end

lib/pardot/visitor_activities.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
module Pardot
2+
module VisitorActivities
3+
4+
def visitor_activities
5+
@visitor_activities ||= VisitorActivities.new self
6+
end
7+
8+
class VisitorActivities
9+
10+
def initialize client
11+
@client = client
12+
end
13+
14+
def query params
15+
result = get "/do/query", params, "result"
16+
result["total_results"] = result["total_results"].to_i if result["total_results"]
17+
result
18+
end
19+
20+
def read id, params = {}
21+
post "/do/read/id/#{id}", params
22+
end
23+
24+
protected
25+
26+
def get path, params = {}, result = "visitorActivity"
27+
response = @client.get "visitorActivity", path, params
28+
result ? response[result] : response
29+
end
30+
31+
def post path, params = {}, result = "visitorActivity"
32+
response = @client.post "visitorActivity", path, params
33+
result ? response[result] : response
34+
end
35+
36+
end
37+
38+
end
39+
end

lib/pardot/visitors.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
module Pardot
2+
module Visitors
3+
4+
def visitors
5+
@visitors ||= Visitors.new self
6+
end
7+
8+
class Visitors
9+
10+
def initialize client
11+
@client = client
12+
end
13+
14+
def query params
15+
result = get "/do/query", params, "result"
16+
result["total_results"] = result["total_results"].to_i if result["total_results"]
17+
result
18+
end
19+
20+
def assign id, params = {}
21+
post "/do/assign/id/#{id}", params
22+
end
23+
24+
def read id, params = {}
25+
post "/do/read/id/#{id}", params
26+
end
27+
28+
protected
29+
30+
def get path, params = {}, result = "visitor"
31+
response = @client.get "visitor", path, params
32+
result ? response[result] : response
33+
end
34+
35+
def post path, params = {}, result = "visitor"
36+
response = @client.post "visitor", path, params
37+
result ? response[result] : response
38+
end
39+
40+
end
41+
42+
end
43+
end

lib/pardot/visits.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
module Pardot
2+
module Visits
3+
4+
def visits
5+
@visits ||= Visits.new self
6+
end
7+
8+
class Visits
9+
10+
def initialize client
11+
@client = client
12+
end
13+
14+
def query params
15+
result = get "/do/query", params, "result"
16+
result["total_results"] = result["total_results"].to_i if result["total_results"]
17+
result
18+
end
19+
20+
def read id, params = {}
21+
post "/do/read/id/#{id}", params
22+
end
23+
24+
protected
25+
26+
def get path, params = {}, result = "visit"
27+
response = @client.get "visit", path, params
28+
result ? response[result] : response
29+
end
30+
31+
def post path, params = {}, result = "visit"
32+
response = @client.post "visit", path, params
33+
result ? response[result] : response
34+
end
35+
36+
end
37+
38+
end
39+
end

lib/ruby-pardot.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,9 @@
1010

1111
require 'pardot/prospects'
1212
require 'pardot/opportunities'
13+
require 'pardot/visitors'
14+
require 'pardot/users'
15+
require 'pardot/visits'
16+
require 'pardot/visitor_activities'
1317

1418
require 'pardot/client'

spec/pardot/users_spec.rb

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2+
3+
describe Pardot::Users 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>2</total_results>
15+
<user>
16+
<email>[email protected]</email>
17+
<first_name>Jim</first_name>
18+
</user>
19+
<user>
20+
<email>[email protected]</email>
21+
<first_name>Sue</first_name>
22+
</user>
23+
</result>
24+
</rsp>)
25+
end
26+
27+
before do
28+
@client = create_client
29+
end
30+
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
33+
34+
@client.users.query(:id_greater_than => 200).should == {"total_results" => 2,
35+
"user"=>[
36+
{"email"=>"[email protected]", "first_name"=>"Jim"},
37+
{"email"=>"[email protected]", "first_name"=>"Sue"}
38+
]}
39+
end
40+
41+
end
42+
43+
describe "read_by_email" do
44+
45+
def sample_results
46+
%(<?xml version="1.0" encoding="UTF-8"?>
47+
<rsp stat="ok" version="1.0">
48+
<user>
49+
<email>[email protected]</email>
50+
<first_name>Sue</first_name>
51+
</user>
52+
</rsp>)
53+
end
54+
55+
it "should return the prospect" do
56+
fake_post "/api/user/version/3/do/read/email/[email protected]?api_key=my_api_key&user_key=bar&format=simple", sample_results
57+
58+
@client.users.read_by_email("[email protected]").should == {"email"=>"[email protected]", "first_name"=>"Sue"}
59+
60+
end
61+
62+
end
63+
64+
end
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2+
3+
describe Pardot::VisitorActivities 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>2</total_results>
15+
<visitorActivity>
16+
<type_name>Read</type_name>
17+
<details>Some details</details>
18+
</visitorActivity>
19+
<visitorActivity>
20+
<type_name>Write</type_name>
21+
<details>More details</details>
22+
</visitorActivity>
23+
</result>
24+
</rsp>)
25+
end
26+
27+
before do
28+
@client = create_client
29+
end
30+
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
33+
34+
@client.visitor_activities.query(:id_greater_than => 200).should == {"total_results" => 2,
35+
"visitorActivity"=>[
36+
{"type_name"=>"Read", "details"=>"Some details"},
37+
{"type_name"=>"Write", "details"=>"More details"}
38+
]}
39+
end
40+
41+
end
42+
43+
describe "read" do
44+
45+
def sample_results
46+
%(<?xml version="1.0" encoding="UTF-8"?>
47+
<rsp stat="ok" version="1.0">
48+
<visitorActivity>
49+
<type_name>Write</type_name>
50+
<details>More details</details>
51+
</visitorActivity>
52+
</rsp>)
53+
end
54+
55+
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"}
59+
60+
end
61+
62+
end
63+
64+
end

spec/pardot/visitors_spec.rb

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2+
3+
describe Pardot::Visitors 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>2</total_results>
15+
<visitor>
16+
<browser>Firefox</browser>
17+
<language>en</language>
18+
</visitor>
19+
<visitor>
20+
<browser>Chrome</browser>
21+
<language>es</language>
22+
</visitor>
23+
</result>
24+
</rsp>)
25+
end
26+
27+
before do
28+
@client = create_client
29+
end
30+
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
33+
34+
@client.visitors.query(:id_greater_than => 200).should == {"total_results" => 2,
35+
"visitor"=>[
36+
{"browser"=>"Firefox", "language"=>"en"},
37+
{"browser"=>"Chrome", "language"=>"es"}
38+
]}
39+
end
40+
41+
end
42+
43+
describe "assign" do
44+
45+
def sample_results
46+
%(<?xml version="1.0" encoding="UTF-8"?>
47+
<rsp stat="ok" version="1.0">
48+
<visitor>
49+
<browser>Chrome</browser>
50+
<language>es</language>
51+
</visitor>
52+
</rsp>)
53+
end
54+
55+
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"}
59+
60+
end
61+
62+
end
63+
64+
end

0 commit comments

Comments
 (0)