constant_contact 1.2.1 → 1.2.2
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/lib/constant_contact.rb
CHANGED
@@ -17,40 +17,47 @@ module ActiveResource
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def decode(xml)
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
xml.gsub!( /\<(\/?)atom\:/, '<\1' ) # the "events" feeds have "atom:" in front of tags, for some reason
|
21
|
+
doc = REXML::Document.new(xml)
|
22
|
+
return [] if no_content?(doc)
|
23
|
+
result = Hash.from_xml(from_atom_data(doc))
|
24
|
+
|
25
|
+
if is_collection?(doc)
|
26
|
+
list = result['records']
|
27
|
+
|
28
|
+
next_link = REXML::XPath.first(doc, "/feed/link[@rel='next']")
|
29
|
+
if next_link
|
30
|
+
next_path = next_link.attribute('href').value
|
31
|
+
next_page = ::ConstantContact::Base.connection.get(next_path)
|
32
|
+
list.concat(next_page)
|
33
|
+
end
|
34
|
+
|
35
|
+
list
|
36
|
+
else
|
37
|
+
result.values.first
|
23
38
|
end
|
24
|
-
return [] if no_content?(xml)
|
25
|
-
result = Hash.from_xml(from_atom_data(xml))
|
26
|
-
is_collection?(xml) ? result['records'] : result.values.first
|
27
39
|
end
|
28
40
|
|
29
41
|
|
30
42
|
private
|
31
43
|
|
32
|
-
def from_atom_data(
|
33
|
-
if is_collection?(
|
34
|
-
|
44
|
+
def from_atom_data(doc)
|
45
|
+
if is_collection?(doc)
|
46
|
+
content_from_collection(doc)
|
35
47
|
else
|
36
|
-
|
48
|
+
content_from_single_record(doc)
|
37
49
|
end
|
38
|
-
result.delete('xmlns')
|
39
|
-
return result
|
40
50
|
end
|
41
51
|
|
42
|
-
def no_content?(
|
43
|
-
doc = REXML::Document.new(xml)
|
52
|
+
def no_content?(doc)
|
44
53
|
REXML::XPath.match(doc,'//content').size == 0
|
45
54
|
end
|
46
55
|
|
47
|
-
def is_collection?(
|
48
|
-
doc = REXML::Document.new(xml)
|
56
|
+
def is_collection?(doc)
|
49
57
|
REXML::XPath.match(doc,'//content').size > 1
|
50
58
|
end
|
51
59
|
|
52
|
-
def content_from_single_record(
|
53
|
-
doc = REXML::Document.new(xml)
|
60
|
+
def content_from_single_record(doc)
|
54
61
|
str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
55
62
|
REXML::XPath.each(doc, '//content') do |e|
|
56
63
|
content = e.children[1]
|
@@ -59,19 +66,17 @@ module ActiveResource
|
|
59
66
|
str
|
60
67
|
end
|
61
68
|
|
62
|
-
def content_from_collection(
|
63
|
-
doc = REXML::Document.new(xml)
|
69
|
+
def content_from_collection(doc)
|
64
70
|
str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><records type=\"array\">"
|
65
71
|
REXML::XPath.each(doc, '//content') do |e|
|
66
72
|
content = e.children[1]
|
67
73
|
str << content.to_s
|
68
74
|
end
|
69
|
-
str << "</records>"
|
75
|
+
str << "</records>"
|
70
76
|
str
|
71
77
|
end
|
72
78
|
|
73
|
-
def content_from_member(
|
74
|
-
doc = REXML::Document.new(xml)
|
79
|
+
def content_from_member(doc)
|
75
80
|
str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
76
81
|
REXML::XPath.each(doc, '//content') do |e|
|
77
82
|
content = e.children[1].children
|
@@ -34,7 +34,7 @@ class Activity < Test::Unit::TestCase
|
|
34
34
|
|
35
35
|
context 'format' do
|
36
36
|
should 'be html encoded' do
|
37
|
-
assert_equal ActiveResource::Formats[:html_encoded], ConstantContact::Activity.
|
37
|
+
assert_equal ActiveResource::Formats[:html_encoded], ConstantContact::Activity.format
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class FiftyTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context 'find more than 50' do
|
6
|
+
setup do
|
7
|
+
ConstantContact::Base.api_key = "fc2113f8-9336-4886-9b04-61aa5092d428"
|
8
|
+
# ConstantContact::Base.user = "dtjohnsospam"
|
9
|
+
# ConstantContact::Base.password = "qwerty7"
|
10
|
+
ConstantContact::Base.user = "ChiefExperts"
|
11
|
+
ConstantContact::Base.password = "danbcr1234"
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'return more than 50 members of list' do
|
15
|
+
FakeWeb.allow_net_connect = true
|
16
|
+
# lists = ConstantContact::List.find(:all, :params => { :list_id => 3 })
|
17
|
+
# lists.each do |list|
|
18
|
+
# next unless list.respond_to? :SortOrder
|
19
|
+
members = ConstantContact::Member.find(:all, :params => { :list_id => 3 })
|
20
|
+
assert members.size > 50
|
21
|
+
# assert_equal list.contact_count.to_i, members.size
|
22
|
+
# end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: constant_contact
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 2
|
10
|
+
version: 1.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tim Case
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date: 2010-
|
21
|
+
date: 2010-11-04 00:00:00 -04:00
|
22
22
|
default_executable:
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
@@ -36,34 +36,34 @@ dependencies:
|
|
36
36
|
type: :runtime
|
37
37
|
version_requirements: *id001
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
39
|
+
name: builder
|
40
40
|
prerelease: false
|
41
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
hash:
|
46
|
+
hash: 15
|
47
47
|
segments:
|
48
|
-
-
|
49
|
-
|
48
|
+
- 2
|
49
|
+
- 1
|
50
|
+
- 2
|
51
|
+
version: 2.1.2
|
50
52
|
type: :runtime
|
51
53
|
version_requirements: *id002
|
52
54
|
- !ruby/object:Gem::Dependency
|
53
|
-
name:
|
55
|
+
name: activesupport
|
54
56
|
prerelease: false
|
55
57
|
requirement: &id003 !ruby/object:Gem::Requirement
|
56
58
|
none: false
|
57
59
|
requirements:
|
58
|
-
- -
|
60
|
+
- - ">="
|
59
61
|
- !ruby/object:Gem::Version
|
60
|
-
hash:
|
62
|
+
hash: 3
|
61
63
|
segments:
|
62
|
-
-
|
63
|
-
|
64
|
-
|
65
|
-
version: 2.1.2
|
66
|
-
type: :runtime
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
type: :development
|
67
67
|
version_requirements: *id003
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
69
|
name: shoulda
|
@@ -152,10 +152,13 @@ files:
|
|
152
152
|
- lib/constant_contact/member.rb
|
153
153
|
- lib/constant_contact/version.rb
|
154
154
|
- lib/constant_contact.rb
|
155
|
+
- MIT-LICENSE
|
156
|
+
- README.md
|
155
157
|
- test/constant_contact/activity_test.rb
|
156
158
|
- test/constant_contact/atom_format_test.rb
|
157
159
|
- test/constant_contact/base_test.rb
|
158
160
|
- test/constant_contact/contact_test.rb
|
161
|
+
- test/constant_contact/fifty_test.rb
|
159
162
|
- test/constant_contact/list_test.rb
|
160
163
|
- test/constant_contact/member_test.rb
|
161
164
|
- test/constant_contact_test.rb
|
@@ -172,8 +175,6 @@ files:
|
|
172
175
|
- test/fixtures/single_contact_by_id.xml
|
173
176
|
- test/fixtures/single_contact_by_id_with_no_contactlists.xml
|
174
177
|
- test/test_helper.rb
|
175
|
-
- MIT-LICENSE
|
176
|
-
- README.md
|
177
178
|
has_rdoc: true
|
178
179
|
homepage: http://github.com/idris/constant_contact
|
179
180
|
licenses: []
|
@@ -210,5 +211,25 @@ rubygems_version: 1.3.7
|
|
210
211
|
signing_key:
|
211
212
|
specification_version: 3
|
212
213
|
summary: ActiveResource wrapper for the Constant Contact API.
|
213
|
-
test_files:
|
214
|
-
|
214
|
+
test_files:
|
215
|
+
- test/constant_contact/activity_test.rb
|
216
|
+
- test/constant_contact/atom_format_test.rb
|
217
|
+
- test/constant_contact/base_test.rb
|
218
|
+
- test/constant_contact/contact_test.rb
|
219
|
+
- test/constant_contact/fifty_test.rb
|
220
|
+
- test/constant_contact/list_test.rb
|
221
|
+
- test/constant_contact/member_test.rb
|
222
|
+
- test/constant_contact_test.rb
|
223
|
+
- test/fixtures/all_contacts.xml
|
224
|
+
- test/fixtures/contactlistscollection.xml
|
225
|
+
- test/fixtures/contactlistsindividuallist.xml
|
226
|
+
- test/fixtures/memberscollection.xml
|
227
|
+
- test/fixtures/multiple_contacts_by_emails.xml
|
228
|
+
- test/fixtures/new_list.xml
|
229
|
+
- test/fixtures/nocontent.xml
|
230
|
+
- test/fixtures/senteventscollection.xml
|
231
|
+
- test/fixtures/service_document.xml
|
232
|
+
- test/fixtures/single_contact_by_email.xml
|
233
|
+
- test/fixtures/single_contact_by_id.xml
|
234
|
+
- test/fixtures/single_contact_by_id_with_no_contactlists.xml
|
235
|
+
- test/test_helper.rb
|