constantcontact 1.0.0 → 1.0.1

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.
Files changed (60) hide show
  1. checksums.yaml +7 -7
  2. data/README.md +7 -0
  3. data/constantcontact.gemspec +1 -1
  4. data/lib/constantcontact.rb +54 -54
  5. data/lib/constantcontact/api.rb +5 -3
  6. data/lib/constantcontact/auth/oauth2.rb +7 -4
  7. data/lib/constantcontact/auth/session_data_store.rb +52 -52
  8. data/lib/constantcontact/components/account/verified_email_address.rb +17 -17
  9. data/lib/constantcontact/components/activities/activity.rb +34 -34
  10. data/lib/constantcontact/components/activities/activity_error.rb +17 -17
  11. data/lib/constantcontact/components/activities/add_contacts.rb +109 -109
  12. data/lib/constantcontact/components/activities/add_contacts_import_data.rb +37 -37
  13. data/lib/constantcontact/components/activities/export_contacts.rb +19 -19
  14. data/lib/constantcontact/components/component.rb +13 -13
  15. data/lib/constantcontact/components/contacts/address.rb +18 -18
  16. data/lib/constantcontact/components/contacts/contact.rb +69 -69
  17. data/lib/constantcontact/components/contacts/contact_list.rb +17 -17
  18. data/lib/constantcontact/components/contacts/custom_field.rb +17 -17
  19. data/lib/constantcontact/components/contacts/email_address.rb +23 -23
  20. data/lib/constantcontact/components/contacts/note.rb +16 -16
  21. data/lib/constantcontact/components/email_marketing/campaign.rb +67 -67
  22. data/lib/constantcontact/components/email_marketing/click_through_details.rb +17 -17
  23. data/lib/constantcontact/components/email_marketing/message_footer.rb +20 -20
  24. data/lib/constantcontact/components/email_marketing/schedule.rb +18 -18
  25. data/lib/constantcontact/components/email_marketing/test_send.rb +32 -32
  26. data/lib/constantcontact/components/result_set.rb +15 -15
  27. data/lib/constantcontact/components/tracking/bounce_activity.rb +18 -18
  28. data/lib/constantcontact/components/tracking/click_activity.rb +17 -17
  29. data/lib/constantcontact/components/tracking/forward_activity.rb +17 -17
  30. data/lib/constantcontact/components/tracking/open_activity.rb +17 -17
  31. data/lib/constantcontact/components/tracking/send_activity.rb +17 -17
  32. data/lib/constantcontact/components/tracking/tracking_activity.rb +15 -15
  33. data/lib/constantcontact/components/tracking/tracking_summary.rb +17 -17
  34. data/lib/constantcontact/components/tracking/unsubscribe_activity.rb +18 -18
  35. data/lib/constantcontact/exceptions/ctct_exception.rb +15 -15
  36. data/lib/constantcontact/exceptions/illegal_argument_exception.rb +3 -3
  37. data/lib/constantcontact/exceptions/oauth2_exception.rb +3 -3
  38. data/lib/constantcontact/services/account_service.rb +19 -19
  39. data/lib/constantcontact/services/activity_service.rb +99 -99
  40. data/lib/constantcontact/services/base_service.rb +24 -24
  41. data/lib/constantcontact/services/campaign_schedule_service.rb +85 -85
  42. data/lib/constantcontact/services/campaign_tracking_service.rb +151 -151
  43. data/lib/constantcontact/services/contact_service.rb +106 -106
  44. data/lib/constantcontact/services/contact_tracking_service.rb +151 -151
  45. data/lib/constantcontact/services/email_marketing_service.rb +66 -66
  46. data/lib/constantcontact/services/list_service.rb +67 -67
  47. data/lib/constantcontact/util/config.rb +102 -96
  48. data/lib/constantcontact/util/helpers.rb +18 -18
  49. data/lib/constantcontact/version.rb +4 -4
  50. data/spec/constantcontact/api_spec.rb +223 -173
  51. data/spec/constantcontact/auth/oauth2_spec.rb +68 -4
  52. data/spec/constantcontact/components/contacts/address_spec.rb +7 -7
  53. data/spec/constantcontact/components/contacts/contact_list_spec.rb +7 -7
  54. data/spec/constantcontact/components/contacts/contact_spec.rb +7 -7
  55. data/spec/constantcontact/components/contacts/custom_field_spec.rb +7 -7
  56. data/spec/constantcontact/components/contacts/email_address_spec.rb +7 -7
  57. data/spec/constantcontact/services/contact_service_spec.rb +95 -95
  58. data/spec/constantcontact/services/list_service_spec.rb +48 -48
  59. data/spec/spec_helper.rb +1 -1
  60. metadata +55 -44
@@ -5,155 +5,155 @@
5
5
  # Copyright (c) 2013 Constant Contact. All rights reserved.
6
6
 
7
7
  module ConstantContact
8
- module Services
9
- class ContactTrackingService < BaseService
10
- class << self
11
-
12
- # Get a result set of bounces for a given contact
13
- # @param [String] access_token - Constant Contact OAuth2 access token
14
- # @param [String] contact_id - Contact id
15
- # @param [Hash] param - query parameters to be appended to request
16
- # @return [ResultSet<BounceActivity>] - Containing a results array of BounceActivity
17
- def get_bounces(access_token, contact_id, param = nil)
18
- url = Util::Config.get('endpoints.base_url') +
19
- sprintf(Util::Config.get('endpoints.contact_tracking_bounces'), contact_id)
20
- url = build_url(url, param)
21
-
22
- response = RestClient.get(url, get_headers(access_token))
23
- body = JSON.parse(response.body)
24
-
25
- bounces = []
26
- body['results'].each do |bounce_activity|
27
- bounces << Components::BounceActivity.create(bounce_activity)
28
- end
29
-
30
- Components::ResultSet.new(bounces, body['meta'])
31
- end
32
-
33
-
34
- # Get clicks for a given contact
35
- # @param [String] access_token - Constant Contact OAuth2 access token
36
- # @param [String] contact_id - Contact id
37
- # @param [Hash] param - query parameters to be appended to request
38
- # @return [ResultSet<ClickActivity>] - Containing a results array of ClickActivity
39
- def get_clicks(access_token, contact_id, param = nil)
40
- url = Util::Config.get('endpoints.base_url') +
41
- sprintf(Util::Config.get('endpoints.contact_tracking_clicks'), contact_id)
42
- url = build_url(url, param)
43
-
44
- response = RestClient.get(url, get_headers(access_token))
45
- body = JSON.parse(response.body)
46
-
47
- clicks = []
48
- body['results'].each do |click_activity|
49
- clicks << Components::ClickActivity.create(click_activity)
50
- end
51
-
52
- Components::ResultSet.new(clicks, body['meta'])
53
- end
54
-
55
-
56
- # Get forwards for a given contact
57
- # @param [String] access_token - Constant Contact OAuth2 access token
58
- # @param [String] contact_id - Contact id
59
- # @param [Hash] param - query parameters to be appended to request
60
- # @return [ResultSet<ForwardActivity>] - Containing a results array of ForwardActivity
61
- def get_forwards(access_token, contact_id, param = nil)
62
- url = Util::Config.get('endpoints.base_url') +
63
- sprintf(Util::Config.get('endpoints.contact_tracking_forwards'), contact_id)
64
- url = build_url(url, param)
65
-
66
- response = RestClient.get(url, get_headers(access_token))
67
- body = JSON.parse(response.body)
68
-
69
- forwards = []
70
- body['results'].each do |forward_activity|
71
- forwards << Components::ForwardActivity.create(forward_activity)
72
- end
73
-
74
- Components::ResultSet.new(forwards, body['meta'])
75
- end
76
-
77
-
78
- # Get opens for a given contact
79
- # @param [String] access_token - Constant Contact OAuth2 access token
80
- # @param [String] contact_id - Contact id
81
- # @param [Hash] param - query parameters to be appended to request
82
- # @return [ResultSet<OpenActivity>] - Containing a results array of OpenActivity
83
- def get_opens(access_token, contact_id, param = nil)
84
- url = Util::Config.get('endpoints.base_url') +
85
- sprintf(Util::Config.get('endpoints.contact_tracking_opens'), contact_id)
86
- url = build_url(url, param)
87
-
88
- response = RestClient.get(url, get_headers(access_token))
89
- body = JSON.parse(response.body)
90
-
91
- opens = []
92
- body['results'].each do |open_activity|
93
- opens << Components::OpenActivity.create(open_activity)
94
- end
95
-
96
- Components::ResultSet.new(opens, body['meta'])
97
- end
98
-
99
-
100
- # Get sends for a given contact
101
- # @param [String] access_token - Constant Contact OAuth2 access token
102
- # @param [String] contact_id - Contact id
103
- # @param [Hash] param - query parameters to be appended to request
104
- # @return [ResultSet<SendActivity>] - Containing a results array of SendActivity
105
- def get_sends(access_token, contact_id, param = nil)
106
- url = Util::Config.get('endpoints.base_url') +
107
- sprintf(Util::Config.get('endpoints.contact_tracking_sends'), contact_id)
108
- url = build_url(url, param)
109
-
110
- response = RestClient.get(url, get_headers(access_token))
111
- body = JSON.parse(response.body)
112
-
113
- sends = []
114
- body['results'].each do |send_activity|
115
- sends << Components::SendActivity.create(send_activity)
116
- end
117
-
118
- Components::ResultSet.new(sends, body['meta'])
119
- end
120
-
121
-
122
- # Get unsubscribes for a given contact
123
- # @param [String] access_token - Constant Contact OAuth2 access token
124
- # @param [String] contact_id - Contact id
125
- # @param [Hash] param - query parameters to be appended to request
126
- # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity
127
- def get_unsubscribes(access_token, contact_id, param = nil)
128
- url = Util::Config.get('endpoints.base_url') +
129
- sprintf(Util::Config.get('endpoints.contact_tracking_unsubscribes'), contact_id)
130
- url = build_url(url, param)
131
-
132
- response = RestClient.get(url, get_headers(access_token))
133
- body = JSON.parse(response.body)
134
-
135
- unsubscribes = []
136
- body['results'].each do |unsubscribe_activity|
137
- unsubscribes[] = Components::UnsubscribeActivity.create(unsubscribe_activity)
138
- end
139
-
140
- Components::ResultSet.new(unsubscribes, body['meta'])
141
- end
142
-
143
-
144
- # Get a summary of reporting data for a given contact
145
- # @param [String] access_token - Constant Contact OAuth2 access token
146
- # @param [String] contact_id - Contact id
147
- # @return [TrackingSummary]
148
- def get_summary(access_token, contact_id)
149
- url = Util::Config.get('endpoints.base_url') +
150
- sprintf(Util::Config.get('endpoints.contact_tracking_summary'), contact_id)
151
- url = build_url(url)
152
- response = RestClient.get(url, get_headers(access_token))
153
- Components::TrackingSummary.create(JSON.parse(response.body))
154
- end
155
-
156
- end
157
- end
158
- end
8
+ module Services
9
+ class ContactTrackingService < BaseService
10
+ class << self
11
+
12
+ # Get a result set of bounces for a given contact
13
+ # @param [String] access_token - Constant Contact OAuth2 access token
14
+ # @param [String] contact_id - Contact id
15
+ # @param [Hash] param - query parameters to be appended to request
16
+ # @return [ResultSet<BounceActivity>] - Containing a results array of BounceActivity
17
+ def get_bounces(access_token, contact_id, param = nil)
18
+ url = Util::Config.get('endpoints.base_url') +
19
+ sprintf(Util::Config.get('endpoints.contact_tracking_bounces'), contact_id)
20
+ url = build_url(url, param)
21
+
22
+ response = RestClient.get(url, get_headers(access_token))
23
+ body = JSON.parse(response.body)
24
+
25
+ bounces = []
26
+ body['results'].each do |bounce_activity|
27
+ bounces << Components::BounceActivity.create(bounce_activity)
28
+ end
29
+
30
+ Components::ResultSet.new(bounces, body['meta'])
31
+ end
32
+
33
+
34
+ # Get clicks for a given contact
35
+ # @param [String] access_token - Constant Contact OAuth2 access token
36
+ # @param [String] contact_id - Contact id
37
+ # @param [Hash] param - query parameters to be appended to request
38
+ # @return [ResultSet<ClickActivity>] - Containing a results array of ClickActivity
39
+ def get_clicks(access_token, contact_id, param = nil)
40
+ url = Util::Config.get('endpoints.base_url') +
41
+ sprintf(Util::Config.get('endpoints.contact_tracking_clicks'), contact_id)
42
+ url = build_url(url, param)
43
+
44
+ response = RestClient.get(url, get_headers(access_token))
45
+ body = JSON.parse(response.body)
46
+
47
+ clicks = []
48
+ body['results'].each do |click_activity|
49
+ clicks << Components::ClickActivity.create(click_activity)
50
+ end
51
+
52
+ Components::ResultSet.new(clicks, body['meta'])
53
+ end
54
+
55
+
56
+ # Get forwards for a given contact
57
+ # @param [String] access_token - Constant Contact OAuth2 access token
58
+ # @param [String] contact_id - Contact id
59
+ # @param [Hash] param - query parameters to be appended to request
60
+ # @return [ResultSet<ForwardActivity>] - Containing a results array of ForwardActivity
61
+ def get_forwards(access_token, contact_id, param = nil)
62
+ url = Util::Config.get('endpoints.base_url') +
63
+ sprintf(Util::Config.get('endpoints.contact_tracking_forwards'), contact_id)
64
+ url = build_url(url, param)
65
+
66
+ response = RestClient.get(url, get_headers(access_token))
67
+ body = JSON.parse(response.body)
68
+
69
+ forwards = []
70
+ body['results'].each do |forward_activity|
71
+ forwards << Components::ForwardActivity.create(forward_activity)
72
+ end
73
+
74
+ Components::ResultSet.new(forwards, body['meta'])
75
+ end
76
+
77
+
78
+ # Get opens for a given contact
79
+ # @param [String] access_token - Constant Contact OAuth2 access token
80
+ # @param [String] contact_id - Contact id
81
+ # @param [Hash] param - query parameters to be appended to request
82
+ # @return [ResultSet<OpenActivity>] - Containing a results array of OpenActivity
83
+ def get_opens(access_token, contact_id, param = nil)
84
+ url = Util::Config.get('endpoints.base_url') +
85
+ sprintf(Util::Config.get('endpoints.contact_tracking_opens'), contact_id)
86
+ url = build_url(url, param)
87
+
88
+ response = RestClient.get(url, get_headers(access_token))
89
+ body = JSON.parse(response.body)
90
+
91
+ opens = []
92
+ body['results'].each do |open_activity|
93
+ opens << Components::OpenActivity.create(open_activity)
94
+ end
95
+
96
+ Components::ResultSet.new(opens, body['meta'])
97
+ end
98
+
99
+
100
+ # Get sends for a given contact
101
+ # @param [String] access_token - Constant Contact OAuth2 access token
102
+ # @param [String] contact_id - Contact id
103
+ # @param [Hash] param - query parameters to be appended to request
104
+ # @return [ResultSet<SendActivity>] - Containing a results array of SendActivity
105
+ def get_sends(access_token, contact_id, param = nil)
106
+ url = Util::Config.get('endpoints.base_url') +
107
+ sprintf(Util::Config.get('endpoints.contact_tracking_sends'), contact_id)
108
+ url = build_url(url, param)
109
+
110
+ response = RestClient.get(url, get_headers(access_token))
111
+ body = JSON.parse(response.body)
112
+
113
+ sends = []
114
+ body['results'].each do |send_activity|
115
+ sends << Components::SendActivity.create(send_activity)
116
+ end
117
+
118
+ Components::ResultSet.new(sends, body['meta'])
119
+ end
120
+
121
+
122
+ # Get unsubscribes for a given contact
123
+ # @param [String] access_token - Constant Contact OAuth2 access token
124
+ # @param [String] contact_id - Contact id
125
+ # @param [Hash] param - query parameters to be appended to request
126
+ # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity
127
+ def get_unsubscribes(access_token, contact_id, param = nil)
128
+ url = Util::Config.get('endpoints.base_url') +
129
+ sprintf(Util::Config.get('endpoints.contact_tracking_unsubscribes'), contact_id)
130
+ url = build_url(url, param)
131
+
132
+ response = RestClient.get(url, get_headers(access_token))
133
+ body = JSON.parse(response.body)
134
+
135
+ unsubscribes = []
136
+ body['results'].each do |unsubscribe_activity|
137
+ unsubscribes[] = Components::UnsubscribeActivity.create(unsubscribe_activity)
138
+ end
139
+
140
+ Components::ResultSet.new(unsubscribes, body['meta'])
141
+ end
142
+
143
+
144
+ # Get a summary of reporting data for a given contact
145
+ # @param [String] access_token - Constant Contact OAuth2 access token
146
+ # @param [String] contact_id - Contact id
147
+ # @return [TrackingSummary]
148
+ def get_summary(access_token, contact_id)
149
+ url = Util::Config.get('endpoints.base_url') +
150
+ sprintf(Util::Config.get('endpoints.contact_tracking_summary'), contact_id)
151
+ url = build_url(url)
152
+ response = RestClient.get(url, get_headers(access_token))
153
+ Components::TrackingSummary.create(JSON.parse(response.body))
154
+ end
155
+
156
+ end
157
+ end
158
+ end
159
159
  end
@@ -5,83 +5,83 @@
5
5
  # Copyright (c) 2013 Constant Contact. All rights reserved.
6
6
 
7
7
  module ConstantContact
8
- module Services
9
- class EmailMarketingService < BaseService
10
- class << self
8
+ module Services
9
+ class EmailMarketingService < BaseService
10
+ class << self
11
11
 
12
- # Create a new campaign
13
- # @param [String] access_token - Constant Contact OAuth2 access token
14
- # @param [Campaign] campaign - Campaign to be created
15
- # @return [Campaign]
16
- def add_campaign(access_token, campaign)
17
- url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.campaigns')
18
- url = build_url(url)
19
- payload = campaign.to_json
20
- response = RestClient.post(url, payload, get_headers(access_token))
21
- Components::Campaign.create(JSON.parse(response.body))
22
- end
12
+ # Create a new campaign
13
+ # @param [String] access_token - Constant Contact OAuth2 access token
14
+ # @param [Campaign] campaign - Campaign to be created
15
+ # @return [Campaign]
16
+ def add_campaign(access_token, campaign)
17
+ url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.campaigns')
18
+ url = build_url(url)
19
+ payload = campaign.to_json
20
+ response = RestClient.post(url, payload, get_headers(access_token))
21
+ Components::Campaign.create(JSON.parse(response.body))
22
+ end
23
23
 
24
24
 
25
- # Get a set of campaigns
26
- # @param [String] access_token - Constant Contact OAuth2 access token
27
- # @param [Hash] param - query parameters to be appended to the request
28
- # @return [ResultSet<Campaign>]
29
- def get_campaigns(access_token, param = nil)
30
- url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.campaigns')
31
- url = build_url(url, param)
25
+ # Get a set of campaigns
26
+ # @param [String] access_token - Constant Contact OAuth2 access token
27
+ # @param [Hash] param - query parameters to be appended to the request
28
+ # @return [ResultSet<Campaign>]
29
+ def get_campaigns(access_token, param = nil)
30
+ url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.campaigns')
31
+ url = build_url(url, param)
32
32
 
33
- response = RestClient.get(url, get_headers(access_token))
34
- body = JSON.parse(response.body)
33
+ response = RestClient.get(url, get_headers(access_token))
34
+ body = JSON.parse(response.body)
35
35
 
36
- campaigns = []
37
- body['results'].each do |campaign|
38
- campaigns << Components::Campaign.create_summary(campaign)
39
- end
36
+ campaigns = []
37
+ body['results'].each do |campaign|
38
+ campaigns << Components::Campaign.create_summary(campaign)
39
+ end
40
40
 
41
- Components::ResultSet.new(campaigns, body['meta'])
42
- end
41
+ Components::ResultSet.new(campaigns, body['meta'])
42
+ end
43
43
 
44
44
 
45
- # Get campaign details for a specific campaign
46
- # @param [String] access_token - Constant Contact OAuth2 access token
47
- # @param [Integer] campaign_id - Valid campaign id
48
- # @return [Campaign]
49
- def get_campaign(access_token, campaign_id)
50
- url = Util::Config.get('endpoints.base_url') +
51
- sprintf(Util::Config.get('endpoints.campaign'), campaign_id)
52
- url = build_url(url)
53
- response = RestClient.get(url, get_headers(access_token))
54
- Components::Campaign.create(JSON.parse(response.body))
55
- end
45
+ # Get campaign details for a specific campaign
46
+ # @param [String] access_token - Constant Contact OAuth2 access token
47
+ # @param [Integer] campaign_id - Valid campaign id
48
+ # @return [Campaign]
49
+ def get_campaign(access_token, campaign_id)
50
+ url = Util::Config.get('endpoints.base_url') +
51
+ sprintf(Util::Config.get('endpoints.campaign'), campaign_id)
52
+ url = build_url(url)
53
+ response = RestClient.get(url, get_headers(access_token))
54
+ Components::Campaign.create(JSON.parse(response.body))
55
+ end
56
56
 
57
57
 
58
- # Delete an email campaign
59
- # @param [String] access_token - Constant Contact OAuth2 access token
60
- # @param [Integer] campaign_id - Valid campaign id
61
- # @return [Boolean]
62
- def delete_campaign(access_token, campaign_id)
63
- url = Util::Config.get('endpoints.base_url') +
64
- sprintf(Util::Config.get('endpoints.campaign'), campaign_id)
65
- url = build_url(url)
66
- response = RestClient.delete(url, get_headers(access_token))
67
- response.code == 204
68
- end
58
+ # Delete an email campaign
59
+ # @param [String] access_token - Constant Contact OAuth2 access token
60
+ # @param [Integer] campaign_id - Valid campaign id
61
+ # @return [Boolean]
62
+ def delete_campaign(access_token, campaign_id)
63
+ url = Util::Config.get('endpoints.base_url') +
64
+ sprintf(Util::Config.get('endpoints.campaign'), campaign_id)
65
+ url = build_url(url)
66
+ response = RestClient.delete(url, get_headers(access_token))
67
+ response.code == 204
68
+ end
69
69
 
70
70
 
71
- # Update a specific email campaign
72
- # @param [String] access_token - Constant Contact OAuth2 access token
73
- # @param [Campaign] campaign - Campaign to be updated
74
- # @return [Campaign]
75
- def update_campaign(access_token, campaign)
76
- url = Util::Config.get('endpoints.base_url') +
77
- sprintf(Util::Config.get('endpoints.campaign'), campaign.id)
78
- url = build_url(url)
79
- payload = campaign.to_json
80
- response = RestClient.put(url, payload, get_headers(access_token))
81
- Components::Campaign.create(JSON.parse(response.body))
82
- end
71
+ # Update a specific email campaign
72
+ # @param [String] access_token - Constant Contact OAuth2 access token
73
+ # @param [Campaign] campaign - Campaign to be updated
74
+ # @return [Campaign]
75
+ def update_campaign(access_token, campaign)
76
+ url = Util::Config.get('endpoints.base_url') +
77
+ sprintf(Util::Config.get('endpoints.campaign'), campaign.id)
78
+ url = build_url(url)
79
+ payload = campaign.to_json
80
+ response = RestClient.put(url, payload, get_headers(access_token))
81
+ Components::Campaign.create(JSON.parse(response.body))
82
+ end
83
83
 
84
- end
85
- end
86
- end
84
+ end
85
+ end
86
+ end
87
87
  end