constant-contact-ruby 0.2.4 → 0.2.5

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.
@@ -1,5 +1,5 @@
1
1
  ---
2
- :major: 0
3
2
  :minor: 2
3
+ :patch: 5
4
+ :major: 0
4
5
  :build:
5
- :patch: 4
@@ -1,60 +1,57 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{constant-contact-ruby}
8
- s.version = "0.2.4"
8
+ s.version = "0.2.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Craig P Jolicoeur"]
12
- s.date = %q{2010-03-04}
12
+ s.date = %q{2011-03-26}
13
13
  s.description = %q{Ruby wrapper around the Constant Contact REST API}
14
14
  s.email = %q{cpjolicoeur@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc",
18
- "TODO"
17
+ "README.rdoc",
18
+ "TODO"
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
22
- ".gitignore",
23
- "CHANGELOG",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "TODO",
28
- "VERSION.yml",
29
- "constant-contact-ruby.gemspec",
30
- "lib/constant_contact.rb",
31
- "lib/constant_contact/activity.rb",
32
- "lib/constant_contact/base_resource.rb",
33
- "lib/constant_contact/contact.rb",
34
- "lib/constant_contact/contact_list.rb",
35
- "test/fixtures/get_contact.xml",
36
- "test/fixtures/get_contacts.xml",
37
- "test/fixtures/post_contacts.xml",
38
- "test/helper.rb",
39
- "test/test_constant-contact-ruby.rb",
40
- "test/test_contacts.rb"
22
+ "CHANGELOG",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "TODO",
27
+ "VERSION.yml",
28
+ "constant-contact-ruby.gemspec",
29
+ "lib/constant_contact.rb",
30
+ "lib/constant_contact/activity.rb",
31
+ "lib/constant_contact/base_resource.rb",
32
+ "lib/constant_contact/contact.rb",
33
+ "lib/constant_contact/contact_list.rb",
34
+ "test/fixtures/get_contact.xml",
35
+ "test/fixtures/get_contacts.xml",
36
+ "test/fixtures/post_contacts.xml",
37
+ "test/helper.rb",
38
+ "test/test_constant-contact-ruby.rb",
39
+ "test/test_contacts.rb"
41
40
  ]
42
41
  s.homepage = %q{http://github.com/cpjolicoeur/constant-contact-ruby}
43
- s.rdoc_options = ["--charset=UTF-8"]
44
42
  s.require_paths = ["lib"]
45
- s.rubygems_version = %q{1.3.5}
43
+ s.rubygems_version = %q{1.5.0}
46
44
  s.summary = %q{Constant Contact Ruby API Wrapper}
47
45
  s.test_files = [
48
46
  "test/helper.rb",
49
- "test/test_constant-contact-ruby.rb",
50
- "test/test_contacts.rb"
47
+ "test/test_constant-contact-ruby.rb",
48
+ "test/test_contacts.rb"
51
49
  ]
52
50
 
53
51
  if s.respond_to? :specification_version then
54
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
52
  s.specification_version = 3
56
53
 
57
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
54
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
55
  else
59
56
  end
60
57
  else
@@ -90,14 +90,7 @@ module ConstantContact
90
90
 
91
91
  # Get a lists members
92
92
  def self.members( id, options={} )
93
- members = ConstantContact.get( "/lists/#{id.to_s}/members", options )
94
- return nil if ( members.nil? or members.empty? )
95
-
96
- if( members['feed']['entry'].is_a?(Array) )
97
- members['feed']['entry'].collect { |entry| Contact.new( entry, '', true ) }
98
- else
99
- [Contact.new( members['feed']['entry'], '', true )]
100
- end
93
+ fetch_members(id, options)
101
94
  end
102
95
 
103
96
  # Returns the objects API URI
@@ -125,6 +118,39 @@ module ConstantContact
125
118
  EOF
126
119
  xml
127
120
  end
121
+
122
+ def self.fetch_members( id, options={} )
123
+ contacts = []
124
+ link = "/lists/#{id.to_s}/members"
125
+ if options['next_link']
126
+ full_link = options.delete('next_link')
127
+ link += "?#{full_link.split('?').last}"
128
+ end
129
+
130
+ members = ConstantContact.get( link, options )
131
+ return nil if ( members.nil? or members.empty? )
132
+
133
+ if( members['feed']['entry'].is_a?(Array) )
134
+ contacts = members['feed']['entry'].collect { |entry| Contact.new( entry, '', true ) }
135
+ else
136
+ contacts = [Contact.new( members['feed']['entry'], '', true )]
137
+ end
138
+
139
+ if feed_has_next_link?(members['feed'])
140
+ next_link = find_next_link members['feed']
141
+ contacts += fetch_members(id, options.merge!('next_link' => next_link))
142
+ end
143
+
144
+ contacts
145
+ end
146
+
147
+ def self.feed_has_next_link?(feed)
148
+ !find_next_link(feed).nil?
149
+ end
150
+
151
+ def self.find_next_link(feed)
152
+ feed['link'].collect { |link| link['href'] if link["rel"] && link["rel"] == 'next' }.compact.first
153
+ end
128
154
 
129
155
  # Is this a full record or a summary record?
130
156
  def full_record?
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: constant-contact-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 5
10
+ version: 0.2.5
5
11
  platform: ruby
6
12
  authors:
7
13
  - Craig P Jolicoeur
@@ -9,8 +15,7 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-03-04 00:00:00 -05:00
13
- default_executable:
18
+ date: 2011-03-26 00:00:00 Z
14
19
  dependencies: []
15
20
 
16
21
  description: Ruby wrapper around the Constant Contact REST API
@@ -25,7 +30,6 @@ extra_rdoc_files:
25
30
  - TODO
26
31
  files:
27
32
  - .document
28
- - .gitignore
29
33
  - CHANGELOG
30
34
  - LICENSE
31
35
  - README.rdoc
@@ -44,31 +48,36 @@ files:
44
48
  - test/helper.rb
45
49
  - test/test_constant-contact-ruby.rb
46
50
  - test/test_contacts.rb
47
- has_rdoc: true
48
51
  homepage: http://github.com/cpjolicoeur/constant-contact-ruby
49
52
  licenses: []
50
53
 
51
54
  post_install_message:
52
- rdoc_options:
53
- - --charset=UTF-8
55
+ rdoc_options: []
56
+
54
57
  require_paths:
55
58
  - lib
56
59
  required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
57
61
  requirements:
58
62
  - - ">="
59
63
  - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
60
67
  version: "0"
61
- version:
62
68
  required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
63
70
  requirements:
64
71
  - - ">="
65
72
  - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
66
76
  version: "0"
67
- version:
68
77
  requirements: []
69
78
 
70
79
  rubyforge_project:
71
- rubygems_version: 1.3.5
80
+ rubygems_version: 1.7.1
72
81
  signing_key:
73
82
  specification_version: 3
74
83
  summary: Constant Contact Ruby API Wrapper
data/.gitignore DELETED
@@ -1,24 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
22
- doc
23
- .yardoc
24
- constant-contact-ruby.rb