getresponse 0.2 → 0.3

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 CHANGED
@@ -66,4 +66,42 @@ Set contact cycle
66
66
 
67
67
  # with connection
68
68
  # contact - existing contact
69
- contact.set_cycle(5)
69
+ contact.set_cycle(5)
70
+
71
+ Get custom attributes
72
+
73
+ # with connection
74
+ # contact - existing contact
75
+ contact.customs
76
+ => { "attr_name" => "attr_value" }
77
+
78
+ Get account from fields
79
+
80
+ # with account
81
+ # account - existing account
82
+ account.from_fields.all
83
+ => [<FromField: xcv>]
84
+
85
+ Add account from field
86
+
87
+ # with account
88
+ # account = existing account
89
+ account.from_fields.create("name" => "My new name", "email" => "my_new_email@foo.bar")
90
+ => #<GetResponse::FromField:0xb7727010 ... >
91
+
92
+ Get account domains
93
+
94
+ # with account
95
+ # account - existing account
96
+ account.domains.all
97
+
98
+ Get campaign domain
99
+
100
+ # with campaign
101
+ # campaign - existing campaign
102
+ campaign.domain
103
+
104
+ Set campaign domain
105
+
106
+ domain = account.domains.first
107
+ campaign.domain = domain
data/lib/api.rb ADDED
@@ -0,0 +1 @@
1
+ API_KEY='d333e12e5019b6940127e82b499d75a5'
data/lib/api_key.rb ADDED
@@ -0,0 +1 @@
1
+ API_KEY='d333e12e5019b6940127e82b499d75a5'
data/lib/get_response.rb CHANGED
@@ -49,4 +49,8 @@ GetResponse.autoload :Connection, "get_response/connection"
49
49
  GetResponse.autoload :Contact, "get_response/contact"
50
50
  GetResponse.autoload :Message, "get_response/message"
51
51
  GetResponse.autoload :CampaignProxy, "get_response/campaign_proxy"
52
- GetResponse.autoload :ContactProxy, "get_response/contact_proxy"
52
+ GetResponse.autoload :ContactProxy, "get_response/contact_proxy"
53
+ GetResponse.autoload :FromField, "get_response/from_field"
54
+ GetResponse.autoload :FromFieldsProxy, "get_response/from_fields_proxy"
55
+ GetResponse.autoload :Domain, "get_response/domain"
56
+ GetResponse.autoload :DomainProxy, "get_response/domain_proxy"
@@ -5,11 +5,23 @@ module GetResponse
5
5
  attr_reader :login, :name, :email, :created_on
6
6
 
7
7
 
8
- def initialize(params)
8
+ def initialize(params, connection)
9
9
  @login = params["login"]
10
10
  @name = params["from_name"]
11
11
  @email = params["from_email"]
12
12
  @created_on = params["created_on"]
13
+ @connection = connection
13
14
  end
15
+
16
+
17
+ def from_fields
18
+ FromFieldsProxy.new(@connection)
19
+ end
20
+
21
+
22
+ def domains
23
+ DomainProxy.new(@connection)
24
+ end
25
+
14
26
  end
15
27
  end
@@ -24,6 +24,31 @@ module GetResponse
24
24
  @contact_proxy.all(:campaigns => [@id])
25
25
  end
26
26
 
27
+
28
+ # Get domain assigned to this campaign.
29
+ #
30
+ # returns:: GetResponse::Domain
31
+ def domain
32
+ params = {"campaign" => self.id}
33
+ domain = @connection.send_request("get_campaign_domain", params)["result"].map do |id, attrs|
34
+ Domain.new(attrs.merge("id" => id))
35
+ end
36
+ domain.first
37
+ end
38
+
39
+
40
+ # Set domain for this campaign.
41
+ #
42
+ # new_domain:: GetResponse::Domain
43
+ # returns:: GetResponse::Domain
44
+ def domain=(new_domain)
45
+ params = { "domain" => new_domain.id, "campaign" => self.id }
46
+
47
+ # there will be an exception if bad ids sent
48
+ @connection.send_request("set_campaign_domain", params)
49
+ new_domain
50
+ end
51
+
27
52
  end
28
53
 
29
54
  end
@@ -27,7 +27,7 @@ module GetResponse
27
27
  # returns:: GetResponse::Account
28
28
  def account
29
29
  resp = self.send_request("get_account_info")
30
- GetResponse::Account.new(resp["result"])
30
+ GetResponse::Account.new(resp["result"], self)
31
31
  end
32
32
 
33
33
 
@@ -103,6 +103,24 @@ module GetResponse
103
103
  end
104
104
 
105
105
 
106
+ # Get list of custom attributes. It performs additional API request to fetch attributes. By
107
+ # default new contacts has en empty custom attributes list.
108
+ #
109
+ # returns:: Hash
110
+ def customs
111
+ @connection.send_request("get_contact_customs", { "contact" => @id })["result"]
112
+ end
113
+
114
+
115
+ # Set custom attributes in contact instance. After set attributes you _must_ save contact.
116
+ #
117
+ # value:: Hash
118
+ # returns:: Hash
119
+ def customs=(value)
120
+ @customs = parse_customs(value)
121
+ end
122
+
123
+
106
124
  protected
107
125
 
108
126
 
@@ -0,0 +1,16 @@
1
+ module GetResponse
2
+
3
+ # Domain connected with account or campaign in GetResponse
4
+ class Domain
5
+
6
+ attr_reader :id, :domain, :created_on
7
+
8
+ def initialize(attributes)
9
+ @id = attributes["id"]
10
+ @domain = attributes["domain"]
11
+ @created_on = attributes["created_on"]
12
+ end
13
+
14
+ end
15
+
16
+ end
@@ -0,0 +1,23 @@
1
+ module GetResponse
2
+
3
+ # Proxy class for domain operations.
4
+ class DomainProxy
5
+
6
+ def initialize(connection)
7
+ @connection = connection
8
+ end
9
+
10
+
11
+ # Get all domains connected with account.
12
+ #
13
+ # returns:: [GetResponse::Domain]
14
+ def all
15
+ domains_attrs = @connection.send_request("get_account_domains")["result"]
16
+ domains_attrs.map do |id, attrs|
17
+ GetResponse::Domain.new(attrs.merge("id" => id))
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,18 @@
1
+ module GetResponse
2
+
3
+ # Form field connected with account.
4
+ class FromField
5
+
6
+ attr_reader :id, :name, :email, :created_on
7
+
8
+
9
+ def initialize(params)
10
+ @id = params["id"]
11
+ @name = params["name"]
12
+ @email = params["email"]
13
+ @created_on = params["created_on"]
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,33 @@
1
+ module GetResponse
2
+
3
+ # Proxy class from all from fields operations.
4
+ class FromFieldsProxy
5
+
6
+ def initialize(connection)
7
+ @connection = connection
8
+ end
9
+
10
+
11
+ # Fetch all from fields connected with account
12
+ #
13
+ # returns:: [FromFields]
14
+ def all
15
+ from_fields_attrs = @connection.send_request("get_account_from_fields")["result"]
16
+ from_fields_attrs.map do |id, attrs|
17
+ FromField.new(attrs.merge("id" => id))
18
+ end
19
+ end
20
+
21
+
22
+ # Create new from field connection with account. Method returns new instance of <tt>FromField</tt>
23
+ # if new from field was saved or raise <tt>GetResponseError</tt> if not.
24
+ #
25
+ # returns:: FromField
26
+ def create(attributes)
27
+ add_result = @connection.send_request("add_account_from_field", attributes)["result"]
28
+ FromField.new(attributes.merge("id" => add_result["FROM_FIELD_ID"]))
29
+ end
30
+
31
+ end
32
+
33
+ end
metadata CHANGED
@@ -1,12 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: getresponse
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 2
9
- version: "0.2"
7
+ - 3
8
+ version: "0.3"
10
9
  platform: ruby
11
10
  authors:
12
11
  - Sebastian Nowak
@@ -14,18 +13,16 @@ autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
15
 
17
- date: 2010-12-29 00:00:00 +01:00
16
+ date: 2011-02-02 00:00:00 +01:00
18
17
  default_executable:
19
18
  dependencies:
20
19
  - !ruby/object:Gem::Dependency
21
20
  name: json
22
21
  prerelease: false
23
22
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
23
  requirements:
26
24
  - - ~>
27
25
  - !ruby/object:Gem::Version
28
- hash: 7
29
26
  segments:
30
27
  - 1
31
28
  - 4
@@ -36,11 +33,9 @@ dependencies:
36
33
  name: json_pure
37
34
  prerelease: false
38
35
  requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
37
  - - ~>
42
38
  - !ruby/object:Gem::Version
43
- hash: 7
44
39
  segments:
45
40
  - 1
46
41
  - 4
@@ -51,11 +46,9 @@ dependencies:
51
46
  name: rr
52
47
  prerelease: false
53
48
  requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
49
  requirements:
56
50
  - - ~>
57
51
  - !ruby/object:Gem::Version
58
- hash: 15
59
52
  segments:
60
53
  - 1
61
54
  - 0
@@ -71,15 +64,21 @@ extensions: []
71
64
  extra_rdoc_files: []
72
65
 
73
66
  files:
67
+ - lib/get_response.rb
68
+ - lib/api_key.rb
69
+ - lib/get_response/from_field.rb
70
+ - lib/get_response/domain_proxy.rb
71
+ - lib/get_response/contact_proxy.rb
74
72
  - lib/get_response/account.rb
75
- - lib/get_response/campaign.rb
73
+ - lib/get_response/contact.rb
76
74
  - lib/get_response/campaign_proxy.rb
75
+ - lib/get_response/campaign.rb
76
+ - lib/get_response/message.rb
77
77
  - lib/get_response/connection.rb
78
- - lib/get_response/contact.rb
79
- - lib/get_response/contact_proxy.rb
78
+ - lib/get_response/from_fields_proxy.rb
79
+ - lib/get_response/domain.rb
80
80
  - lib/get_response/get_response_error.rb
81
- - lib/get_response/message.rb
82
- - lib/get_response.rb
81
+ - lib/api.rb
83
82
  - README.rdoc
84
83
  has_rdoc: true
85
84
  homepage: http://dev.getresponse.com
@@ -91,20 +90,16 @@ rdoc_options: []
91
90
  require_paths:
92
91
  - lib
93
92
  required_ruby_version: !ruby/object:Gem::Requirement
94
- none: false
95
93
  requirements:
96
94
  - - ">="
97
95
  - !ruby/object:Gem::Version
98
- hash: 3
99
96
  segments:
100
97
  - 0
101
98
  version: "0"
102
99
  required_rubygems_version: !ruby/object:Gem::Requirement
103
- none: false
104
100
  requirements:
105
101
  - - ">="
106
102
  - !ruby/object:Gem::Version
107
- hash: 17
108
103
  segments:
109
104
  - 1
110
105
  - 3
@@ -113,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
108
  requirements: []
114
109
 
115
110
  rubyforge_project:
116
- rubygems_version: 1.3.7
111
+ rubygems_version: 1.3.6
117
112
  signing_key:
118
113
  specification_version: 3
119
114
  summary: Ruby wrapper for GetResponse API