gnumarcelo-campaigning 0.2.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,56 @@
1
+ # Campaign is defined in soap/default.rb which is automatically generated.
2
+ # In this file we add additional methods to the Campaign class.
3
+ module Campaigning
4
+
5
+ class Campaign
6
+ attr_accessor :campaignID
7
+ attr_accessor :subject
8
+ attr_accessor :sentDate
9
+ attr_accessor :totalRecipients
10
+
11
+ def initialize(campaignID = nil, subject = nil, sentDate = nil, totalRecipients = nil)
12
+ @campaignID = campaignID
13
+ @subject = subject
14
+ @sentDate = sentDate
15
+ @totalRecipients = totalRecipients
16
+ @cm = Connection.new
17
+ end
18
+
19
+ def create(params)
20
+ response = @cm.soap.createCampaign(
21
+ :apiKey => CAMPAIGN_MONITOR_API_KEY,
22
+ :clientID => params[:clientID],
23
+ :campaignName => params[:campaignName],
24
+ :campaignSubject => params[:campaignSubject],
25
+ :fromName => params[:fromName],
26
+ :fromEmail => params[:fromEmail],
27
+ :replyTo => params[:replyTo],
28
+ :htmlUrl => params[:htmlUrl],
29
+ :textUrl => params[:textUrl],
30
+ :subscriberListIDs => params[:subscriberListIDs],
31
+ :listSegments => params[:listSegments]
32
+ )
33
+
34
+ response.campaign_CreateResult # TODO: Handle the request
35
+ end
36
+
37
+ def create_old(clientID, campaignName, campaignSubject, fromName, fromEmail, replyTo, htmlUrl, textUrl, subscriberListIDs, listSegments)
38
+ response = @cm.soap.createCampaign(
39
+ :apiKey => CAMPAIGN_MONITOR_API_KEY,
40
+ :clientID => clientID,
41
+ :campaignName => campaignName,
42
+ :campaignSubject => campaignSubject,
43
+ :fromName => fromName,
44
+ :fromEmail => fromEmail,
45
+ :replyTo => replyTo,
46
+ :htmlUrl => htmlUrl,
47
+ :textUrl => textUrl,
48
+ :subscriberListIDs => subscriberListIDs,
49
+ :listSegments => listSegments
50
+ )
51
+
52
+ response.campaign_CreateResult # TODO: Handle the request
53
+ end
54
+
55
+ end
56
+ end
@@ -1,19 +1,74 @@
1
1
  # Client is defined in default.rb which is automatically generated.
2
2
  # In this file we add additional methods to the Client class.
3
- class Client
3
+ module Campaigning
4
+
5
+ class Client
4
6
  attr_accessor :clientID
5
- attr_accessor :name
7
+ attr_accessor :name
6
8
 
7
9
  def initialize(clientID = nil, name = nil)
8
- @cm = Campaigning.new
9
- self.clientID = clientID
10
- self.name = name
10
+ @cm = Connection.new
11
+ @clientID = clientID
12
+ @name = name
11
13
  end
12
14
 
13
- # TODO: Refactor this method!
15
+
16
+ def create
17
+ hash = {
18
+ :companyName => @company_name,
19
+ :contactName => @contact_name,
20
+ :emailAddress => @email_address,
21
+ :country => @country,
22
+ :timezone => @time_zone
23
+ }
24
+
25
+ # generate a hash
26
+ # send @cm.createClient request to campaign monitor
27
+ #@clientID = response.client_CreateResult
28
+ end
29
+
30
+
14
31
  def lists
15
- response = @cm.soap.getClientLists(:apiKey => CAMPAIGN_MONITOR_API_KEY, :clientID => self.clientID)
16
- response.client_GetListsResult
32
+ response = @cm.soap.getClientLists(:apiKey => CAMPAIGN_MONITOR_API_KEY, :clientID => @clientID)
33
+ Connection.handle_request response.client_GetListsResult # TODO: handle the request
17
34
  end
18
35
 
19
- end
36
+
37
+ # TODO: Refactor this method and increase performance?
38
+ # TODO: Tha campaign monitor permit two users with the same name, what to do?
39
+ def self.find_by_name(name)
40
+ response = Connection.new.soap.getClients(:apiKey => CAMPAIGN_MONITOR_API_KEY)
41
+ client_list = Connection.handle_request response.user_GetClientsResult
42
+ client_found = client_list.collect.detect { |client| client.name == name }
43
+ Client.new(client_found.clientID, client_found.name) if client_found
44
+ end
45
+
46
+
47
+ def self.create(params)
48
+ response = Connection.new.soap.createClient(:apiKey => CAMPAIGN_MONITOR_API_KEY,
49
+ :companyName => params[:company_name],
50
+ :contactName => params[:contact_name],
51
+ :emailAddress => params[:email_address],
52
+ :country => params[:country],
53
+ :timezone => params[:time_zone]
54
+ )
55
+ new_client_id = Connection.handle_request response.client_CreateResult # TODO: handle the request
56
+ Client.new(new_client_id)
57
+ end
58
+
59
+
60
+ def self.delete(param)
61
+ response = Connection.new.soap.deleteClient(:apiKey => CAMPAIGN_MONITOR_API_KEY, :clientID => param[:client_id])
62
+ Connection.handle_request response.client_DeleteResult
63
+ end
64
+
65
+
66
+ def segments
67
+ response = @cm.soap.getClientSegments(:apiKey => CAMPAIGN_MONITOR_API_KEY, :clientID => @clientID )
68
+ Connection.handle_request response.client_GetSegmentsResult
69
+ end
70
+
71
+
72
+ end
73
+
74
+ end
@@ -3,29 +3,89 @@ require 'test_helper'
3
3
  # Replace this API key with your own (http://www.campaignmonitor.com/api/)
4
4
  CAMPAIGN_MONITOR_API_KEY = '54cae7f3aa1f35cb3bb5bc41756d8b7f'
5
5
  CLIENT_ID = 'd7acfd4cd2ffffc2d86b8903d18a1276'
6
+ CLIENT_TWO_ID = '730acd1e8d27d56bdb87e88685613d72'
6
7
 
7
8
  class CampaigningTest < Test::Unit::TestCase
8
9
 
9
10
  def setup
10
- @cm = Campaigning.new
11
+ @cm = Connection.new
11
12
  end
12
-
13
+
14
+
13
15
  def test_clients
14
16
  clients = @cm.clients
15
- puts clients[0].methods
16
17
  assert clients.length > 0
17
18
  clients.each{ |c| puts c.clientID + " - " + c.name }
18
19
  end
19
-
20
+
21
+
20
22
  def test_client_lists
21
- client = Client.new(CLIENT_ID)
23
+ client = Campaigning::Client.new(CLIENT_ID)
22
24
  assert client.lists.length > 0
23
25
  end
24
26
 
27
+
28
+ def test_client_create
29
+ client_created = Campaigning::Client.create(
30
+ :company_name => "Orange Company 11",
31
+ :contact_name => "Oswald Green11",
32
+ :email_address => "og13@user.com",
33
+ :country => "Ireland",
34
+ :time_zone => @cm.time_zones[1]
35
+ )
36
+ end
37
+
38
+
39
+ def test_client_delete
40
+ response = Campaigning::Client.delete(:client_id => "50a1893ea0a02fc94f2ee9563766e539")
41
+ puts response.inspect
42
+ end
43
+
44
+
45
+ def test_client_segments
46
+ client = Campaigning::Client.new(CLIENT_TWO_ID)
47
+ assert client.segments.length > 0
48
+ puts client.segments.inspect
49
+ end
50
+
51
+
52
+ def test_find_client_by_name
53
+ client = Campaigning::Client.find_by_name("Client One Company")
54
+ assert client != nil && client.name == "Client One Company"
55
+ end
56
+
57
+
58
+ def test_user_get_time_zones
59
+ time_zones = @cm.time_zones
60
+ assert !time_zones.nil?
61
+ end
62
+
63
+
25
64
  def test_system_date
26
65
  sys_date = @cm.system_date
27
66
  assert !sys_date.nil?
28
67
  puts sys_date
29
- end
68
+ end
69
+
70
+
71
+ #
72
+ # def test_campaign_create
73
+ # camp = Campaigning::Campaign.new
74
+ # response = camp.create(
75
+ # :clientID => "730acd1e8d27d56bdb87e88685613d72",
76
+ # :campaignName => "NEEEEW CELOMAR",
77
+ # :campaignSubject => "My new Campaign Subj",
78
+ # :fromName => "Mr. Gordon",
79
+ # :fromEmail => "gordon@user.com",
80
+ # :replyTo => "no-reply@user.com",
81
+ # :htmlUrl => "http://www.uol.com.br",
82
+ # :textUrl => "http://www.uol.com.br",
83
+ # :subscriberListIDs => ["df11fb1f67bb0ca23fd3e88575464144"],
84
+ # :listSegments => []
85
+ # )
86
+ # puts response.inspect
87
+ # end
88
+ #
89
+
30
90
 
31
91
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnumarcelo-campaigning
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Menezes
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-18 00:00:00 -07:00
12
+ date: 2009-04-24 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -37,11 +37,11 @@ files:
37
37
  - Rakefile
38
38
  - VERSION.yml
39
39
  - lib/campaigning.rb
40
- - lib/campaigning/apiClient.rb
41
40
  - lib/campaigning/campaigning.rb
42
41
  - lib/campaigning/soap/default.rb
43
42
  - lib/campaigning/soap/defaultDriver.rb
44
43
  - lib/campaigning/soap/defaultMappingRegistry.rb
44
+ - lib/campaigning/types/campaign.rb
45
45
  - lib/campaigning/types/client.rb
46
46
  - test/campaigning_test.rb
47
47
  - test/test_helper.rb
@@ -69,7 +69,7 @@ requirements: []
69
69
  rubyforge_project:
70
70
  rubygems_version: 1.2.0
71
71
  signing_key:
72
- specification_version: 2
72
+ specification_version: 3
73
73
  summary: TODO
74
74
  test_files:
75
75
  - test/campaigning_test.rb