getresponse 0.5 → 0.5.1
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.
- data/README.rdoc +18 -1
- data/lib/api.rb +1 -0
- data/lib/get_response.rb +4 -40
- data/lib/get_response/account.rb +9 -0
- data/lib/get_response/blacklist.rb +30 -0
- data/lib/get_response/campaign.rb +10 -0
- data/lib/get_response/confirmation_subject_proxy.rb +1 -1
- data/lib/get_response/connection.rb +17 -0
- data/lib/get_response/contact.rb +4 -2
- data/lib/get_response/contact_proxy.rb +13 -6
- data/lib/get_response/link.rb +18 -0
- data/lib/get_response/links_proxy.rb +29 -0
- data/lib/get_response/message.rb +9 -0
- metadata +76 -91
data/README.rdoc
CHANGED
@@ -6,6 +6,10 @@ Be sure to check changes before update.
|
|
6
6
|
|
7
7
|
== Usage
|
8
8
|
|
9
|
+
Just add to you Gemfile
|
10
|
+
|
11
|
+
gem "getresponse", :require => "get_response"
|
12
|
+
|
9
13
|
Test connection to GetResponse API.
|
10
14
|
|
11
15
|
gr_connection = GetResponse::Connection.new("my_secret_api")
|
@@ -187,4 +191,17 @@ Get single confirmation subject by id
|
|
187
191
|
|
188
192
|
Create new campaign
|
189
193
|
|
190
|
-
connection.campaigns.create(new_campaign_attributes)
|
194
|
+
connection.campaigns.create(new_campaign_attributes)
|
195
|
+
|
196
|
+
Fetching links embedded in messages
|
197
|
+
|
198
|
+
connection.links.all
|
199
|
+
message.links
|
200
|
+
|
201
|
+
Fetching blacklisted addresses for account
|
202
|
+
|
203
|
+
account.blacklist
|
204
|
+
|
205
|
+
Fetching blacklisted addresses for campaign
|
206
|
+
|
207
|
+
campaign.blacklist
|
data/lib/api.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
API_KEY='d333e12e5019b6940127e82b499d75a5'
|
data/lib/get_response.rb
CHANGED
@@ -2,45 +2,6 @@ require "rubygems"
|
|
2
2
|
require 'json'
|
3
3
|
|
4
4
|
module GetResponse
|
5
|
-
|
6
|
-
# Operators that may be used in queries to GetResponse API service
|
7
|
-
OPERATORS = {
|
8
|
-
"is_eq" => "EQUALS",
|
9
|
-
"is_not_eq" => "NOT_EQUALS",
|
10
|
-
"contain" => "CONTAINS",
|
11
|
-
"not_contain" => "NOT_CONTAINS",
|
12
|
-
"match" => "MATCHES"
|
13
|
-
}
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
class SymbolOperator
|
19
|
-
attr_reader :field, :operator
|
20
|
-
|
21
|
-
def initialize(field, operator)
|
22
|
-
@field, @operator = field, operator
|
23
|
-
end unless method_defined?(:initialize)
|
24
|
-
|
25
|
-
|
26
|
-
def evaluate(value)
|
27
|
-
warn "[DEPRECATION] evaluation of GetResponse operators is deprecated."
|
28
|
-
{ field.to_s => { gr_operator => value } }
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def gr_operator
|
33
|
-
GetResponse::OPERATORS[@operator]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
class Symbol
|
39
|
-
GetResponse::OPERATORS.keys.each do |operator|
|
40
|
-
define_method(operator) do
|
41
|
-
SymbolOperator.new(self, operator)
|
42
|
-
end unless method_defined?(operator)
|
43
|
-
end
|
44
5
|
end
|
45
6
|
|
46
7
|
GetResponse.autoload :GetResponseError, "get_response/get_response_error"
|
@@ -62,4 +23,7 @@ GetResponse.autoload :ConfirmationBody, "get_response/confirmation_body"
|
|
62
23
|
GetResponse.autoload :ConfirmationBodyProxy, "get_response/confirmation_body_proxy"
|
63
24
|
GetResponse.autoload :ConfirmationSubject, "get_response/confirmation_subject"
|
64
25
|
GetResponse.autoload :ConfirmationSubjectProxy, "get_response/confirmation_subject_proxy"
|
65
|
-
GetResponse.autoload :Conditions, "get_response/conditions"
|
26
|
+
GetResponse.autoload :Conditions, "get_response/conditions"
|
27
|
+
GetResponse.autoload :LinksProxy, "get_response/links_proxy"
|
28
|
+
GetResponse.autoload :Link, "get_response/link"
|
29
|
+
GetResponse.autoload :Blacklist, "get_response/blacklist"
|
data/lib/get_response/account.rb
CHANGED
@@ -23,5 +23,14 @@ module GetResponse
|
|
23
23
|
DomainProxy.new(@connection)
|
24
24
|
end
|
25
25
|
|
26
|
+
|
27
|
+
# Get the entire blacklisted emails list for this account.
|
28
|
+
#
|
29
|
+
# @return [Blacklist]
|
30
|
+
def blacklist
|
31
|
+
entries = @connection.send_request("get_account_blacklist")["result"].values
|
32
|
+
GetResponse::Blacklist.new(entries, @connection, self)
|
33
|
+
end
|
34
|
+
|
26
35
|
end
|
27
36
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
module GetResponse
|
4
|
+
|
5
|
+
# Class represents list of blacklisted email addresses.
|
6
|
+
class Blacklist
|
7
|
+
extend ::Forwardable
|
8
|
+
|
9
|
+
def_delegator :@entries, :size
|
10
|
+
def_delegator :@entries, :empty?
|
11
|
+
|
12
|
+
# To instantiate new blacklist object use this method. Blacklist may contain addresses connected
|
13
|
+
# with GetResponse account or with one particular campaign.
|
14
|
+
#
|
15
|
+
# Example:
|
16
|
+
#
|
17
|
+
# Blacklist.new(['foo@bar', 'bar@foo'], @connection, @account)
|
18
|
+
#
|
19
|
+
# @param entries [Array] collection of blacklisted addresses
|
20
|
+
# @param connection [GetResponse::Connection] connection of which all operations will be performed
|
21
|
+
# @param ancestor [GetResponse::Account, GetResponse::Campaign] object owner of blacklist
|
22
|
+
def initialize(entries, connection, ancestor)
|
23
|
+
@entries = entries
|
24
|
+
@connection = connection
|
25
|
+
@ancestor = ancestor
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
@@ -188,6 +188,16 @@ module GetResponse
|
|
188
188
|
self
|
189
189
|
end
|
190
190
|
|
191
|
+
|
192
|
+
# Get the entire blacklisted emails list for this campaign.
|
193
|
+
#
|
194
|
+
# @return [GetResponse::Blacklist]
|
195
|
+
def blacklist
|
196
|
+
params = {"campaign" => @id}
|
197
|
+
entries = @connection.send_request("get_campaign_blacklist", params)["result"].values
|
198
|
+
GetResponse::Blacklist.new(entries, @connection, self)
|
199
|
+
end
|
200
|
+
|
191
201
|
end
|
192
202
|
|
193
203
|
end
|
@@ -37,7 +37,7 @@ module GetResponse
|
|
37
37
|
params = {"confirmation_subject" => subject_id}
|
38
38
|
resp = @connection.send_request("get_confirmation_subject", params)["result"]
|
39
39
|
raise GetResponseError.new "Confirmation subject with id '#{subject_id}' not found." if resp.empty?
|
40
|
-
subject_attrs = resp.
|
40
|
+
subject_attrs = resp[subject_id.to_s].merge("id" => subject_id.to_s)
|
41
41
|
ConfirmationSubject.new subject_attrs
|
42
42
|
end
|
43
43
|
|
@@ -10,6 +10,8 @@ module GetResponse
|
|
10
10
|
|
11
11
|
def initialize(api_key)
|
12
12
|
@api_key = api_key
|
13
|
+
@request_id_prefix = "#{Time.now.to_i}-#{rand(1_000_000_000)}"
|
14
|
+
@request_number = -1
|
13
15
|
end
|
14
16
|
|
15
17
|
|
@@ -78,6 +80,7 @@ module GetResponse
|
|
78
80
|
# params:: Hash
|
79
81
|
def send_request(method, params = {})
|
80
82
|
request_params = {
|
83
|
+
:id => request_id,
|
81
84
|
:method => method,
|
82
85
|
:params => [@api_key, params]
|
83
86
|
}.to_json
|
@@ -87,6 +90,7 @@ module GetResponse
|
|
87
90
|
conn.post("/", request_params)
|
88
91
|
end
|
89
92
|
raise GetResponseError.new("API key verification failed") if resp.code.to_i == 403
|
93
|
+
raise GetResponseError.new("204 No content response received which signifies interpreting request as notification") if resp.code.to_i == 204
|
90
94
|
response = JSON.parse(resp.body)
|
91
95
|
if response["error"]
|
92
96
|
raise GetResponse::GetResponseError.new(response["error"])
|
@@ -95,6 +99,14 @@ module GetResponse
|
|
95
99
|
end
|
96
100
|
|
97
101
|
|
102
|
+
# Method return proxy to execute all links related operations.
|
103
|
+
#
|
104
|
+
# @return [LinksProxy]
|
105
|
+
def links
|
106
|
+
@links_proxy ||= LinksProxy.new(self)
|
107
|
+
end
|
108
|
+
|
109
|
+
|
98
110
|
protected
|
99
111
|
|
100
112
|
|
@@ -113,6 +125,11 @@ module GetResponse
|
|
113
125
|
end
|
114
126
|
end
|
115
127
|
|
128
|
+
def request_id
|
129
|
+
@request_number += 1
|
130
|
+
return [@request_id_prefix, @request_number].join("-")
|
131
|
+
end
|
132
|
+
|
116
133
|
end
|
117
134
|
|
118
135
|
end
|
data/lib/get_response/contact.rb
CHANGED
@@ -2,7 +2,7 @@ module GetResponse
|
|
2
2
|
|
3
3
|
# GetResponse contact
|
4
4
|
class Contact
|
5
|
-
attr_accessor :campaign, :name, :email, :cycle_day, :ip, :customs, :created_on, :deleted_on, :reason
|
5
|
+
attr_accessor :campaign, :name, :email, :cycle_day, :ip, :customs, :created_on, :deleted_on, :reason, :duplicated
|
6
6
|
attr_reader :id
|
7
7
|
|
8
8
|
|
@@ -18,6 +18,7 @@ module GetResponse
|
|
18
18
|
@deleted_on = params["deleted_on"]
|
19
19
|
@reason = params["reason"]
|
20
20
|
@connection = connection
|
21
|
+
@duplicated = false
|
21
22
|
end
|
22
23
|
|
23
24
|
|
@@ -27,6 +28,7 @@ module GetResponse
|
|
27
28
|
# returns:: Boolean
|
28
29
|
def save
|
29
30
|
result = @connection.send_request(:add_contact, self.attributes)
|
31
|
+
self.duplicated = true unless result["result"]["duplicated"].nil?
|
30
32
|
result["error"].nil?
|
31
33
|
end
|
32
34
|
|
@@ -37,13 +39,13 @@ module GetResponse
|
|
37
39
|
def attributes
|
38
40
|
attrs = {
|
39
41
|
"campaign" => @campaign,
|
40
|
-
"name" => @name,
|
41
42
|
"email" => @email
|
42
43
|
}
|
43
44
|
|
44
45
|
attrs["ip"] = @ip if @ip
|
45
46
|
attrs["cycle_day"] = @cycle_day if @cycle_day
|
46
47
|
attrs["customs"] = @customs if @customs
|
48
|
+
attrs["name"] = @name if @name
|
47
49
|
|
48
50
|
attrs
|
49
51
|
end
|
@@ -19,10 +19,7 @@ module GetResponse
|
|
19
19
|
# returns:: Array of GetResponse::Contact
|
20
20
|
def all(conditions = {})
|
21
21
|
response = @connection.send_request("get_contacts", conditions)
|
22
|
-
|
23
|
-
response["result"].inject([]) do |contacts, resp|
|
24
|
-
contacts << Contact.new(resp[1].merge("id" => resp[0]), @connection)
|
25
|
-
end
|
22
|
+
build_contacts(response["result"])
|
26
23
|
end
|
27
24
|
|
28
25
|
|
@@ -75,8 +72,18 @@ module GetResponse
|
|
75
72
|
def deleted(conditions = {})
|
76
73
|
conditions = parse_conditions(conditions)
|
77
74
|
response = @connection.send_request("get_contacts_deleted", conditions)
|
78
|
-
response["result"]
|
79
|
-
|
75
|
+
build_contacts(response["result"])
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
# Build collection of <tt>Contact</tt> objects from service response.
|
81
|
+
#
|
82
|
+
# @param raw_contacts [Array] of Hashes parsed from GetResponse API response
|
83
|
+
# @return [Array]
|
84
|
+
def build_contacts(raw_contacts)
|
85
|
+
raw_contacts.map do |raw_contact|
|
86
|
+
Contact.new(raw_contact[1].merge("id" => raw_contact[0]), @connection)
|
80
87
|
end
|
81
88
|
end
|
82
89
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module GetResponse
|
2
|
+
|
3
|
+
# Class represents link embedded in GetResponse message.
|
4
|
+
class Link
|
5
|
+
attr_reader :message, :name, :url, :clicks
|
6
|
+
|
7
|
+
def initialize(attrs, connection)
|
8
|
+
@message = attrs["message"]
|
9
|
+
@name = attrs["name"]
|
10
|
+
@url = attrs["url"]
|
11
|
+
@clicks = attrs["clicks"]
|
12
|
+
@connection = connection
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module GetResponse
|
2
|
+
|
3
|
+
# Proxy class for all links related actions.
|
4
|
+
class LinksProxy
|
5
|
+
include Conditions
|
6
|
+
|
7
|
+
def initialize(connection)
|
8
|
+
@connection = connection
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
# Fetch all links, optionally you can pass a hash with conditions.
|
13
|
+
#
|
14
|
+
# Example:
|
15
|
+
#
|
16
|
+
# @proxy.all("messages" => ["my_message_id", "my_second_message_id"])
|
17
|
+
#
|
18
|
+
# @return [Array] collection of links
|
19
|
+
def all(conditions = {})
|
20
|
+
conditions = parse_conditions(conditions)
|
21
|
+
|
22
|
+
@connection.send_request("get_links", conditions)["result"].map do |link_id, link_attrs|
|
23
|
+
Link.new(link_attrs.merge("id" => link_id), @connection)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/get_response/message.rb
CHANGED
@@ -33,5 +33,14 @@ module GetResponse
|
|
33
33
|
resp = @connection.send_request("get_message_stats", :message => @id)
|
34
34
|
resp["result"]
|
35
35
|
end
|
36
|
+
|
37
|
+
|
38
|
+
# Fetch links embedded in this message
|
39
|
+
#
|
40
|
+
# @return [Array] collection of links
|
41
|
+
def links
|
42
|
+
@connection.links.all("messages" => [@id])
|
43
|
+
end
|
44
|
+
|
36
45
|
end
|
37
46
|
end
|
metadata
CHANGED
@@ -1,133 +1,118 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: getresponse
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
version: "0.5"
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.5.1
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Sebastian Nowak
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
name: json
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2012-12-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
type: :runtime
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 4
|
32
|
-
version: "1.4"
|
33
|
-
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: json_pure
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.4'
|
37
22
|
prerelease: false
|
38
|
-
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
24
|
none: false
|
40
|
-
requirements:
|
25
|
+
requirements:
|
41
26
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
- 4
|
47
|
-
version: "1.4"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.4'
|
29
|
+
name: json
|
30
|
+
- !ruby/object:Gem::Dependency
|
48
31
|
type: :runtime
|
49
|
-
|
50
|
-
|
51
|
-
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '1.4'
|
52
38
|
prerelease: false
|
53
|
-
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
40
|
none: false
|
55
|
-
requirements:
|
41
|
+
requirements:
|
56
42
|
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
- 0
|
62
|
-
version: "1.0"
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '1.4'
|
45
|
+
name: json_pure
|
46
|
+
- !ruby/object:Gem::Dependency
|
63
47
|
type: :development
|
64
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.0'
|
54
|
+
prerelease: false
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ~>
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.0'
|
61
|
+
name: rr
|
65
62
|
description: With this gem you can manage your subscribers, campaigns, messages
|
66
63
|
email: sebastian.nowak@implix.com
|
67
64
|
executables: []
|
68
|
-
|
69
65
|
extensions: []
|
70
|
-
|
71
66
|
extra_rdoc_files: []
|
72
|
-
|
73
|
-
|
74
|
-
- lib/get_response/
|
75
|
-
- lib/get_response/campaign.rb
|
76
|
-
- lib/get_response/campaign_proxy.rb
|
77
|
-
- lib/get_response/conditions.rb
|
78
|
-
- lib/get_response/confirmation_body.rb
|
79
|
-
- lib/get_response/confirmation_body_proxy.rb
|
67
|
+
files:
|
68
|
+
- lib/get_response.rb
|
69
|
+
- lib/get_response/from_field.rb
|
80
70
|
- lib/get_response/confirmation_subject.rb
|
71
|
+
- lib/get_response/domain_proxy.rb
|
81
72
|
- lib/get_response/confirmation_subject_proxy.rb
|
82
|
-
- lib/get_response/connection.rb
|
83
|
-
- lib/get_response/contact.rb
|
84
73
|
- lib/get_response/contact_proxy.rb
|
85
|
-
- lib/get_response/
|
86
|
-
- lib/get_response/
|
74
|
+
- lib/get_response/confirmation_body_proxy.rb
|
75
|
+
- lib/get_response/message_proxy.rb
|
76
|
+
- lib/get_response/confirmation_body.rb
|
77
|
+
- lib/get_response/newsletter.rb
|
78
|
+
- lib/get_response/account.rb
|
79
|
+
- lib/get_response/link.rb
|
80
|
+
- lib/get_response/contact.rb
|
81
|
+
- lib/get_response/campaign_proxy.rb
|
82
|
+
- lib/get_response/campaign.rb
|
83
|
+
- lib/get_response/message.rb
|
84
|
+
- lib/get_response/connection.rb
|
87
85
|
- lib/get_response/follow_up.rb
|
88
|
-
- lib/get_response/
|
86
|
+
- lib/get_response/conditions.rb
|
89
87
|
- lib/get_response/from_fields_proxy.rb
|
88
|
+
- lib/get_response/domain.rb
|
89
|
+
- lib/get_response/blacklist.rb
|
90
|
+
- lib/get_response/links_proxy.rb
|
90
91
|
- lib/get_response/get_response_error.rb
|
91
|
-
- lib/
|
92
|
-
- lib/get_response/message_proxy.rb
|
93
|
-
- lib/get_response/newsletter.rb
|
94
|
-
- lib/get_response.rb
|
92
|
+
- lib/api.rb
|
95
93
|
- README.rdoc
|
96
|
-
has_rdoc: true
|
97
94
|
homepage: http://dev.getresponse.com
|
98
95
|
licenses: []
|
99
|
-
|
100
96
|
post_install_message:
|
101
97
|
rdoc_options: []
|
102
|
-
|
103
|
-
require_paths:
|
98
|
+
require_paths:
|
104
99
|
- lib
|
105
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
101
|
none: false
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
|
111
|
-
|
112
|
-
- 0
|
113
|
-
version: "0"
|
114
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
107
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
hash: 17
|
120
|
-
segments:
|
121
|
-
- 1
|
122
|
-
- 3
|
123
|
-
- 5
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
124
111
|
version: 1.3.5
|
125
112
|
requirements: []
|
126
|
-
|
127
113
|
rubyforge_project:
|
128
|
-
rubygems_version: 1.
|
114
|
+
rubygems_version: 1.8.24
|
129
115
|
signing_key:
|
130
116
|
specification_version: 3
|
131
117
|
summary: Ruby wrapper for GetResponse API
|
132
118
|
test_files: []
|
133
|
-
|