Skip to content
This repository has been archived by the owner on Aug 9, 2022. It is now read-only.

Commit

Permalink
make lists and array and rip out misc classes into their own file
Browse files Browse the repository at this point in the history
  • Loading branch information
joshgoebel committed Feb 26, 2009
1 parent e32f9b4 commit 2c8eee6
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 51 deletions.
6 changes: 6 additions & 0 deletions TODO
@@ -0,0 +1,6 @@
* Decide on convents about when to raise and when to return true/false

So far I've kind of taken the stance if we're retrieving a list and there
are only two possible failures (APIKey or primary key) to raise if there
is an error but for update/save/create operations to return true/false
and then let the user probe @object.result for more details
3 changes: 3 additions & 0 deletions campaign_monitor.gemspec
Expand Up @@ -24,9 +24,11 @@ Gem::Specification.new do |s|
'MIT-LICENSE',
'Rakefile',
'README.rdoc',
'TODO',

'lib/campaign_monitor.rb',
'lib/campaign_monitor/base.rb',
'lib/campaign_monitor/misc.rb',
'lib/campaign_monitor/campaign.rb',
'lib/campaign_monitor/client.rb',
'lib/campaign_monitor/helpers.rb',
Expand All @@ -41,6 +43,7 @@ Gem::Specification.new do |s|
'support/faster-xml-simple/test/xml_simple_comparison_test.rb',

'test/campaign_monitor_test.rb',
'test/campaign_test.rb',
'test/client_test.rb',
'test/list_test.rb',
'test/test_helper.rb'
Expand Down
44 changes: 1 addition & 43 deletions lib/campaign_monitor.rb
Expand Up @@ -7,6 +7,7 @@

require File.join(File.dirname(__FILE__), '../support/class_enhancements.rb')
require File.join(File.dirname(__FILE__), 'campaign_monitor/helpers.rb')
require File.join(File.dirname(__FILE__), 'campaign_monitor/misc.rb')
require File.join(File.dirname(__FILE__), 'campaign_monitor/base.rb')
require File.join(File.dirname(__FILE__), 'campaign_monitor/client.rb')
require File.join(File.dirname(__FILE__), 'campaign_monitor/list.rb')
Expand Down Expand Up @@ -234,49 +235,6 @@ def using_soap
response
end

# Encapsulates
class SubscriberBounce #:nodoc:
attr_reader :email_address, :bounce_type, :list_id

def initialize(email_address, list_id, bounce_type)
@email_address = email_address
@bounce_type = bounce_type
@list_id = list_id
end
end

# Encapsulates
class SubscriberOpen #:nodoc:
attr_reader :email_address, :list_id, :opens

def initialize(email_address, list_id, opens)
@email_address = email_address
@list_id = list_id
@opens = opens
end
end

# Encapsulates
class SubscriberClick #:nodoc:
attr_reader :email_address, :list_id, :clicked_links

def initialize(email_address, list_id, clicked_links)
@email_address = email_address
@list_id = list_id
@clicked_links = clicked_links
end
end

# Encapsulates
class SubscriberUnsubscribe #:nodoc:
attr_reader :email_address, :list_id

def initialize(email_address, list_id)
@email_address = email_address
@list_id = list_id
end
end

protected

def wsdl_driver_factory
Expand Down
17 changes: 12 additions & 5 deletions lib/campaign_monitor/campaign.rb
Expand Up @@ -24,9 +24,6 @@ class CampaignMonitor
# * Campaign.GetSubscriberClicks
# * Campaign.GetUnsubscribes
# * Campaign.GetSummary
#
# === Not yet supported
#
#
class Campaign < Base
include CampaignMonitor::Helpers
Expand Down Expand Up @@ -71,9 +68,19 @@ def Send(options={})
@result.success?
end

def add_list(list)
def GetLists
handle_response(@cm_client.Campaign_GetLists(:CampaignID => id)) do |response|
@result=Result.new(response)
if @result.success?
@lists=response["List"].collect{|l| List.new({"ListID" => l["ListID"], "Title" => l["Name"]})}
end
end
end

def lists
# pull down the list of lists if we have an id
self.GetLists if @lists.nil? and id
@lists||=[]
@lists << list
end

# Example
Expand Down
46 changes: 46 additions & 0 deletions lib/campaign_monitor/misc.rb
@@ -0,0 +1,46 @@
class CampaignMonitor

# Encapsulates
class SubscriberBounce #:nodoc:
attr_reader :email_address, :bounce_type, :list_id

def initialize(email_address, list_id, bounce_type)
@email_address = email_address
@bounce_type = bounce_type
@list_id = list_id
end
end

# Encapsulates
class SubscriberOpen #:nodoc:
attr_reader :email_address, :list_id, :opens

def initialize(email_address, list_id, opens)
@email_address = email_address
@list_id = list_id
@opens = opens
end
end

# Encapsulates
class SubscriberClick #:nodoc:
attr_reader :email_address, :list_id, :clicked_links

def initialize(email_address, list_id, clicked_links)
@email_address = email_address
@list_id = list_id
@clicked_links = clicked_links
end
end

# Encapsulates
class SubscriberUnsubscribe #:nodoc:
attr_reader :email_address, :list_id

def initialize(email_address, list_id)
@email_address = email_address
@list_id = list_id
end
end

end
10 changes: 7 additions & 3 deletions test/campaign_test.rb
Expand Up @@ -28,6 +28,8 @@ def test_finds_named_campaign
@campaign=@client.campaigns.detect { |x| x["Subject"] == "Big Deal" }
assert_not_nil @campaign
assert_equal 1, @campaign["TotalRecipients"]
assert_equal 1, @campaign.lists.size
assert_equal Hash.new, @campaign.lists.first["Title"]
end

def test_summary_interface
Expand Down Expand Up @@ -60,8 +62,8 @@ def test_creating_a_campaign
@chicken.Create
assert_success @chicken.result

@campaign.add_list @beef
@campaign.add_list @chicken
@campaign.lists << @beef
@campaign.lists << @chicken
@campaign["CampaignName"]="Noodles #{secure_digest(Time.now.to_s)}"
@campaign["CampaignSubject"]="Noodly #{secure_digest(Time.now.to_s)}"
puts @campaign.inspect
Expand All @@ -75,10 +77,12 @@ def test_creating_a_campaign
assert_success @campaign.result
assert_not_nil @campaign.id
assert_equal 32, @campaign.id.length
# test GetLists
@campaign.instance_variable_set("@lists",nil)
assert_equal 2, @campaign.lists.size
# test sending
@campaign.Send("ConfirmationEmail" => "george@aol.com", "SendDate" => "Immediately")
assert_success @campaign.result

end

def test_GetSummary
Expand Down

0 comments on commit 2c8eee6

Please sign in to comment.