constant_contact 1.0.0 → 1.1.0
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.
@@ -65,8 +65,9 @@ module ConstantContact
|
|
65
65
|
prefix_options, query_options = split_options(options[:params])
|
66
66
|
path = collection_path(prefix_options, query_options)
|
67
67
|
result = connection.get(path, headers)
|
68
|
-
case result
|
69
|
-
when
|
68
|
+
case result
|
69
|
+
when Hash
|
70
|
+
instantiate_collection( [ result ], prefix_options )
|
70
71
|
else
|
71
72
|
instantiate_collection( (result || []), prefix_options )
|
72
73
|
end
|
@@ -80,15 +81,15 @@ module ConstantContact
|
|
80
81
|
def method_missing(method_symbol, *arguments) #:nodoc:
|
81
82
|
method_name = method_symbol.to_s
|
82
83
|
|
83
|
-
case method_name
|
84
|
+
case method_name[-1,1]
|
84
85
|
when "="
|
85
|
-
attributes[method_name.
|
86
|
+
attributes[method_name.chop.camelize] = arguments.first
|
86
87
|
when "?"
|
87
|
-
attributes[method_name.
|
88
|
+
attributes[method_name.chop.camelize]
|
88
89
|
else
|
89
90
|
attributes.has_key?(method_name.camelize) ? attributes[method_name.camelize] : super
|
90
91
|
end
|
91
|
-
end
|
92
|
+
end
|
92
93
|
|
93
94
|
# Caching accessor for the the id integer
|
94
95
|
def int_id
|
@@ -138,9 +139,9 @@ module ConstantContact
|
|
138
139
|
<content type=\"application/vnd.ctct+xml\">
|
139
140
|
#{self.to_xml}
|
140
141
|
</content>
|
141
|
-
</entry>"
|
142
|
+
</entry>"
|
142
143
|
end
|
143
|
-
|
144
|
+
|
144
145
|
# TODO: Move this out to a lib
|
145
146
|
def html_encode(txt)
|
146
147
|
mapping = { '&' => '&', '>' => '>', '<' => '<', '"' => '"' }
|
@@ -71,7 +71,29 @@ module ConstantContact
|
|
71
71
|
def self.find_by_email(email_address)
|
72
72
|
find :first, {:params => {:email => email_address.downcase}}
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
|
+
# Needed a lot of custom work here because of the way ActiveResource turns
|
76
|
+
# arrays into query strings.
|
77
|
+
# ActiveResource would do: email[]=<email 1>&email[]=<email 2>
|
78
|
+
# But we need: email=<email 1>&email=<email 2>
|
79
|
+
def self.find_all_by_emails(emails)
|
80
|
+
raise ArgumentError, "Expected an array of emails, got a(n) #{emails.class.name}" unless emails.is_a? Array
|
81
|
+
return [] if email_addresses.empty?
|
82
|
+
|
83
|
+
require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
|
84
|
+
query_string = emails.map{|e| "email=#{CGI.escape(e.to_s.downcase)}"}.join('&')
|
85
|
+
|
86
|
+
path = "/ws/customers/#{self.user}/#{collection_name}?#{query_string}"
|
87
|
+
result = connection.get(path, headers)
|
88
|
+
|
89
|
+
case result
|
90
|
+
when Hash
|
91
|
+
instantiate_collection( [ result ], {} )
|
92
|
+
else
|
93
|
+
instantiate_collection( (result || []), {} )
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
75
97
|
protected
|
76
98
|
def validate
|
77
99
|
# errors.add(:opt_in_source, 'must be either ACTION_BY_CONTACT or ACTION_BY_CUSTOMER') unless ['ACTION_BY_CONTACT','ACTION_BY_CUSTOMER'].include?(attributes['OptInSource'])
|
@@ -27,10 +27,12 @@ module ActiveResource
|
|
27
27
|
|
28
28
|
def from_atom_data(xml)
|
29
29
|
if is_collection?(xml)
|
30
|
-
|
30
|
+
result = content_from_collection(xml)
|
31
31
|
else
|
32
|
-
|
32
|
+
result = content_from_single_record(xml)
|
33
33
|
end
|
34
|
+
result.delete('xmlns')
|
35
|
+
return result
|
34
36
|
end
|
35
37
|
|
36
38
|
def no_content?(xml)
|
metadata
CHANGED
@@ -1,23 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: constant_contact
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tim Case
|
14
14
|
- Ed Hickey
|
15
15
|
- Nathan Hyde
|
16
|
+
- Idris Mokhtarzada
|
16
17
|
autorequire:
|
17
18
|
bindir: bin
|
18
19
|
cert_chain: []
|
19
20
|
|
20
|
-
date: 2010-09-
|
21
|
+
date: 2010-09-17 00:00:00 -04:00
|
21
22
|
default_executable:
|
22
23
|
dependencies:
|
23
24
|
- !ruby/object:Gem::Dependency
|