ruby-pardot 1.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9b5a3bceaeff6bb81efc73dfc2ee2fb51e3fce2e
4
+ data.tar.gz: cdc11f89e0415c6b3d0484d7fe67147a3b8a087e
5
+ SHA512:
6
+ metadata.gz: 69f994887ac58cf22de6f963d1793f4dfb0ba35cb3adedc4d3baf3fcabd766ce187bb31047de526545488cbe951c7e31d29872bfe75d5029a675254c7fe60817
7
+ data.tar.gz: 013ffa24e4853541125c89bcb08c90ce88de3db3a0cd2475fba4bc787682f1e8fd1a9e91550cc1ea702e74c282b8b818e2fa254cba29699a0471a612cc108b16
@@ -1,18 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-pardot (1.0)
4
+ ruby-pardot (1.0.2)
5
5
  crack
6
6
  httparty
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
- crack (0.1.8)
11
+ crack (0.4.2)
12
+ safe_yaml (~> 1.0.0)
12
13
  diff-lcs (1.1.2)
13
14
  fakeweb (1.3.0)
14
- httparty (0.7.4)
15
- crack (= 0.1.8)
15
+ httparty (0.13.1)
16
+ json (~> 1.8)
17
+ multi_xml (>= 0.5.2)
18
+ json (1.8.1)
19
+ multi_xml (0.5.5)
16
20
  rspec (2.5.0)
17
21
  rspec-core (~> 2.5.0)
18
22
  rspec-expectations (~> 2.5.0)
@@ -21,6 +25,7 @@ GEM
21
25
  rspec-expectations (2.5.0)
22
26
  diff-lcs (~> 1.1.2)
23
27
  rspec-mocks (2.5.0)
28
+ safe_yaml (1.0.3)
24
29
 
25
30
  PLATFORMS
26
31
  ruby
@@ -20,6 +20,7 @@ The client will authenticate before performing other API calls, but you can manu
20
20
 
21
21
  The available objects are:
22
22
 
23
+ * emails
23
24
  * lists
24
25
  * opportunities
25
26
  * prospects
@@ -54,6 +55,15 @@ http://developer.pardot.com/kb/api-version-3/using-prospects
54
55
  puts "#{key} is #{value}"
55
56
  end
56
57
 
58
+ === Emails
59
+
60
+ See each individual call's [API reference page](http://developer.pardot.com/kb/api-version-3/introduction-table-of-contents).
61
+
62
+ # Sample usage
63
+ @pardot.emails.read_by_id(email_id)
64
+ @pardot.emails.send_to_list(:email_template_id => template_id, 'list_ids[]' => list_id, :campaign_id => campaign_id)
65
+ @pardot.emails.send_to_prospect(prospect_id, :campaign_id => campaign_id, :email_template_id => template_id)
66
+
57
67
  === Output formats
58
68
 
59
69
  client.format = "simple" # default
@@ -79,4 +89,21 @@ Performing API calls across the internet is inherently unsafe, so be sure to cat
79
89
  # - socket broke before the request was completed
80
90
  # - pi.pardot.com is under heavy load
81
91
  # - many number of other reasons
82
- end
92
+ end
93
+
94
+ === License
95
+ The MIT License (MIT)
96
+ Copyright (c) 2012 Pardot
97
+
98
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
99
+ files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
100
+ modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
101
+ Software is furnished to do so, subject to the following conditions:
102
+
103
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
104
+ Software.
105
+
106
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
107
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
108
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
109
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -3,7 +3,7 @@ module Pardot
3
3
 
4
4
  def authenticate
5
5
  resp = post "login", nil, :email => @email, :password => @password, :user_key => @user_key
6
- @api_key = resp["api_key"]
6
+ @api_key = resp && resp["api_key"]
7
7
  end
8
8
 
9
9
  def authenticated?
@@ -1,32 +1,35 @@
1
1
  module Pardot
2
-
2
+
3
3
  class Client
4
-
4
+
5
5
  include HTTParty
6
6
  base_uri 'https://pi.pardot.com'
7
7
  format :xml
8
-
8
+
9
9
  include Authentication
10
10
  include Http
11
11
 
12
+ include Objects::Emails
12
13
  include Objects::Lists
14
+ include Objects::ListMemberships
13
15
  include Objects::Opportunities
14
16
  include Objects::Prospects
17
+ include Objects::ProspectAccounts
15
18
  include Objects::Users
16
19
  include Objects::Visitors
17
20
  include Objects::Visits
18
21
  include Objects::VisitorActivities
19
-
22
+
20
23
  attr_accessor :email, :password, :user_key, :api_key, :format
21
-
24
+
22
25
  def initialize email, password, user_key
23
26
  @email = email
24
27
  @password = password
25
28
  @user_key = user_key
26
-
29
+
27
30
  @format = "simple"
28
31
  end
29
-
30
-
32
+
33
+
31
34
  end
32
35
  end
@@ -1,8 +1,23 @@
1
1
  module Pardot
2
-
3
2
  class Error < StandardError; end
4
3
  class NetError < Error; end
5
- class ResponseError < Error; end
6
4
  class ExpiredApiKeyError < Error; end
7
-
5
+
6
+ class ResponseError < Error
7
+ def initialize(res)
8
+ @res = res
9
+ end
10
+
11
+ def to_s
12
+ @res["__content__"]
13
+ end
14
+
15
+ def code
16
+ @res["code"].to_i
17
+ end
18
+
19
+ def inspect
20
+ @res.inspect.to_s
21
+ end
22
+ end
8
23
  end
@@ -9,7 +9,7 @@ module Pardot
9
9
  rescue Pardot::ExpiredApiKeyError => e
10
10
  handle_expired_api_key :get, object, path, params, num_retries, e
11
11
 
12
- rescue SocketError, Interrupt, EOFError, SystemCallError => e
12
+ rescue SocketError, Interrupt, EOFError, SystemCallError, Timeout::Error, MultiXml::ParseError => e
13
13
  raise Pardot::NetError.new(e)
14
14
  end
15
15
 
@@ -21,7 +21,7 @@ module Pardot
21
21
  rescue Pardot::ExpiredApiKeyError => e
22
22
  handle_expired_api_key :post, object, path, params, num_retries, e
23
23
 
24
- rescue SocketError, Interrupt, EOFError, SystemCallError => e
24
+ rescue SocketError, Interrupt, EOFError, SystemCallError, Timeout::Error, MultiXml::ParseError => e
25
25
  raise Pardot::NetError.new(e)
26
26
  end
27
27
 
@@ -47,8 +47,9 @@ module Pardot
47
47
 
48
48
  error = rsp["err"] if rsp
49
49
  error ||= "Unknown Failure: #{rsp.inspect}" if rsp && rsp["stat"] == "fail"
50
+ content = error['__content__'] if error.is_a?(Hash)
50
51
 
51
- if error == "Invalid API key or user key" && @api_key
52
+ if [error, content].include?("Invalid API key or user key") && @api_key
52
53
  raise ExpiredApiKeyError.new @api_key
53
54
  end
54
55
 
@@ -0,0 +1,44 @@
1
+ module Pardot
2
+ module Objects
3
+
4
+ module Emails
5
+
6
+ def emails
7
+ @emails ||= Emails.new self
8
+ end
9
+
10
+ class Emails
11
+
12
+ def initialize client
13
+ @client = client
14
+ end
15
+
16
+ def read_by_id id
17
+ get "/do/read/id/#{id}"
18
+ end
19
+
20
+ def send_to_prospect prospect_id, params
21
+ post "/do/send/prospect_id/#{prospect_id}", params
22
+ end
23
+
24
+ def send_to_list params
25
+ post "/do/send", params
26
+ end
27
+
28
+ protected
29
+
30
+ def get path, params = {}, result = "email"
31
+ response = @client.get "email", path, params
32
+ result ? response[result] : response
33
+ end
34
+
35
+ def post path, params = {}, result = "email"
36
+ response = @client.post "email", path, params
37
+ result ? response[result] : response
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,36 @@
1
+ module Pardot
2
+ module Objects
3
+ module ListMemberships
4
+
5
+ def list_memberships
6
+ @list_memberships ||= ListMemberships.new self
7
+ end
8
+
9
+ class ListMemberships
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
+ def read_by_id id, params = {}
22
+ get "/do/read/id/#{id}", params
23
+ end
24
+
25
+ protected
26
+
27
+ def get path, params = {}, result = "listMembership"
28
+ response = @client.get "listMembership", path, params
29
+ result ? response[result] : response
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,55 @@
1
+ module Pardot
2
+ module Objects
3
+ module ProspectAccounts
4
+ def prospect_accounts
5
+ @prospect_accounts ||= ProspectAccounts.new self
6
+ end
7
+
8
+ class ProspectAccounts
9
+
10
+ def initialize(client)
11
+ @client = client
12
+ end
13
+
14
+ def query(search_criteria)
15
+ result = get '/do/query', search_criteria, 'result'
16
+ result['total_results'] = result['total_results'].to_i if
17
+ result['total_results']
18
+ result
19
+ end
20
+
21
+ def describe(params={})
22
+ post('/do/describe', params)
23
+ end
24
+
25
+ def create(params={})
26
+ post('/do/create', params)
27
+ end
28
+
29
+ # read_by_id
30
+ # update_by_id
31
+ [:read, :update].each do |verb|
32
+ define_method(verb) do |id, params={}|
33
+ post(api_url(verb, 'id', id), params)
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def api_url(verb, direct_to, value)
40
+ "/do/#{verb}/#{direct_to}/#{value}"
41
+ end
42
+
43
+ def get(path, params={}, result='prospectAccount')
44
+ response = @client.get('prospectAccount', path, params)
45
+ result ? response[result] : response
46
+ end
47
+
48
+ def post(path, params={}, result='prospectAccount')
49
+ response = @client.post('prospectAccount', path, params)
50
+ result ? response[result] : response
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,3 +1,3 @@
1
1
  module Pardot
2
- VERSION = "1.0"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -6,9 +6,12 @@ require 'pardot/http'
6
6
  require 'pardot/error'
7
7
  require 'pardot/authentication'
8
8
 
9
+ require 'pardot/objects/emails'
9
10
  require 'pardot/objects/lists'
11
+ require 'pardot/objects/list_memberships'
10
12
  require 'pardot/objects/opportunities'
11
13
  require 'pardot/objects/prospects'
14
+ require 'pardot/objects/prospect_accounts'
12
15
  require 'pardot/objects/users'
13
16
  require 'pardot/objects/visitors'
14
17
  require 'pardot/objects/visitor_activities'
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+ describe Pardot::ResponseError do
3
+ before do
4
+ @res = {
5
+ "code" => "9",
6
+ "__content__" => "A prospect with the specified email address already exists"
7
+ }
8
+ end
9
+
10
+ describe '#code' do
11
+ subject do
12
+ described_class.new(@res).code
13
+ end
14
+ specify do
15
+ should == 9
16
+ end
17
+ end
18
+
19
+ describe '#to_s, #message' do
20
+ subject do
21
+ described_class.new(@res)
22
+ end
23
+ specify do
24
+ subject.to_s.should == @res["__content__"]
25
+ end
26
+ specify do
27
+ subject.message.should == @res["__content__"]
28
+ end
29
+ end
30
+
31
+ describe '#inspect' do
32
+ subject do
33
+ described_class.new(@res).inspect
34
+ end
35
+ specify do
36
+ should == @res.to_s
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Pardot::Objects::Emails do
4
+
5
+ before do
6
+ @client = create_client
7
+ end
8
+
9
+ def sample_response
10
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
11
+ <email>
12
+ <name>My Email</name>
13
+ </email>
14
+ </rsp>)
15
+ end
16
+
17
+ before do
18
+ @client = create_client
19
+ end
20
+
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"}
24
+ end
25
+
26
+ 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"}
29
+ end
30
+
31
+ 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
+ end
35
+
36
+ end
@@ -0,0 +1,78 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Pardot::Objects::ProspectAccounts 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"?>
13
+ <rsp stat="ok" version="1.0">
14
+ <result>
15
+ <total_results>2</total_results>
16
+ <prospectAccount>
17
+ <name>Spaceships R Us</name>
18
+ </prospectAccount>
19
+ <prospectAccount>
20
+ <name>Monsters Inc</name>
21
+ </prospectAccount>
22
+ </result>
23
+ </rsp>)
24
+ end
25
+
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
28
+
29
+ @client.prospect_accounts.query(:assigned => true).should == {'total_results' => 2,
30
+ 'prospectAccount'=>[
31
+ {'name'=>'Spaceships R Us'},
32
+ {'name'=>'Monsters Inc'}
33
+ ]}
34
+ end
35
+
36
+ end
37
+
38
+ describe 'read' do
39
+ def sample_results
40
+ %(<?xml version="1.0" encoding="UTF-8"?>
41
+ <rsp stat="ok" version="1.0">
42
+ <prospectAccount>
43
+ <id>1234</id>
44
+ <name>SupaDupaPanda</name>
45
+ </prospectAccount>
46
+ </rsp>)
47
+ end
48
+
49
+ 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
+
52
+ @client.prospect_accounts.read('1234', :assigned => true).should == {'id' => '1234', 'name' => 'SupaDupaPanda' }
53
+ end
54
+
55
+ end
56
+
57
+
58
+ describe 'create' do
59
+
60
+ def sample_results
61
+ %(<?xml version="1.0" encoding="UTF-8"?>
62
+ <rsp stat="ok" version="1.0">
63
+ <prospectAccount>
64
+ <name>SuperPanda</name>
65
+ </prospectAccount>
66
+ </rsp>)
67
+ end
68
+
69
+ 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"}
73
+
74
+ end
75
+
76
+ end
77
+
78
+ end
@@ -8,4 +8,4 @@ require 'httparty'
8
8
 
9
9
  require 'ruby-pardot'
10
10
 
11
- Dir[File.join("spec/support/**/*.rb")].each {|f| require f}
11
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-pardot
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
5
- prerelease:
4
+ version: 1.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Cunning
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-12-15 00:00:00.000000000 Z
11
+ date: 2016-08-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: crack
16
- requirement: &70243888377720 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70243888377720
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: httparty
27
- requirement: &70243888377000 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *70243888377000
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: bundler
38
- requirement: &70243888376480 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
47
  version: 1.0.0
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70243888376480
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: rspec
49
- requirement: &70243888375960 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70243888375960
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: fakeweb
60
- requirement: &70243888375480 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - ">="
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70243888375480
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Library for interacting with the Pardot API
70
84
  email:
71
85
  - support@pardot.com
@@ -73,8 +87,8 @@ executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
76
- - .gitignore
77
- - .rspec
90
+ - ".gitignore"
91
+ - ".rspec"
78
92
  - Gemfile
79
93
  - Gemfile.lock
80
94
  - README.rdoc
@@ -83,8 +97,11 @@ files:
83
97
  - lib/pardot/client.rb
84
98
  - lib/pardot/error.rb
85
99
  - lib/pardot/http.rb
100
+ - lib/pardot/objects/emails.rb
101
+ - lib/pardot/objects/list_memberships.rb
86
102
  - lib/pardot/objects/lists.rb
87
103
  - lib/pardot/objects/opportunities.rb
104
+ - lib/pardot/objects/prospect_accounts.rb
88
105
  - lib/pardot/objects/prospects.rb
89
106
  - lib/pardot/objects/users.rb
90
107
  - lib/pardot/objects/visitor_activities.rb
@@ -94,9 +111,12 @@ files:
94
111
  - lib/ruby-pardot.rb
95
112
  - ruby-pardot.gemspec
96
113
  - spec/pardot/authentication_spec.rb
114
+ - spec/pardot/error_spec.rb
97
115
  - spec/pardot/http_spec.rb
116
+ - spec/pardot/objects/emails_spec.rb
98
117
  - spec/pardot/objects/lists_spec.rb
99
118
  - spec/pardot/objects/opportunities_spec.rb
119
+ - spec/pardot/objects/prospect_accounts_spec.rb
100
120
  - spec/pardot/objects/prospects_spec.rb
101
121
  - spec/pardot/objects/users_spec.rb
102
122
  - spec/pardot/objects/visitor_activities_spec.rb
@@ -107,26 +127,25 @@ files:
107
127
  - spec/support/fakeweb.rb
108
128
  homepage: http://github.com/pardot/ruby-pardot
109
129
  licenses: []
130
+ metadata: {}
110
131
  post_install_message:
111
132
  rdoc_options: []
112
133
  require_paths:
113
134
  - lib
114
135
  required_ruby_version: !ruby/object:Gem::Requirement
115
- none: false
116
136
  requirements:
117
- - - ! '>='
137
+ - - ">="
118
138
  - !ruby/object:Gem::Version
119
139
  version: '0'
120
140
  required_rubygems_version: !ruby/object:Gem::Requirement
121
- none: false
122
141
  requirements:
123
- - - ! '>='
142
+ - - ">="
124
143
  - !ruby/object:Gem::Version
125
144
  version: 1.3.6
126
145
  requirements: []
127
146
  rubyforge_project: ruby-pardot
128
- rubygems_version: 1.8.12
147
+ rubygems_version: 2.4.6
129
148
  signing_key:
130
- specification_version: 3
149
+ specification_version: 4
131
150
  summary: Library for interacting with the Pardot API
132
151
  test_files: []