constantcontact 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +127 -136
  3. data/constantcontact.gemspec +4 -3
  4. data/lib/constantcontact.rb +63 -44
  5. data/lib/constantcontact/api.rb +932 -535
  6. data/lib/constantcontact/auth/oauth2.rb +86 -66
  7. data/lib/constantcontact/components/account/verified_email_address.rb +14 -14
  8. data/lib/constantcontact/components/activities/activity.rb +30 -30
  9. data/lib/constantcontact/components/activities/activity_error.rb +14 -14
  10. data/lib/constantcontact/components/activities/add_contacts.rb +1 -1
  11. data/lib/constantcontact/components/activities/add_contacts_import_data.rb +37 -36
  12. data/lib/constantcontact/components/component.rb +25 -0
  13. data/lib/constantcontact/components/contacts/address.rb +12 -12
  14. data/lib/constantcontact/components/contacts/contact.rb +50 -44
  15. data/lib/constantcontact/components/contacts/contact_list.rb +12 -12
  16. data/lib/constantcontact/components/contacts/custom_field.rb +14 -14
  17. data/lib/constantcontact/components/contacts/email_address.rb +14 -14
  18. data/lib/constantcontact/components/contacts/note.rb +13 -13
  19. data/lib/constantcontact/components/email_marketing/campaign.rb +41 -41
  20. data/lib/constantcontact/components/email_marketing/click_through_details.rb +14 -14
  21. data/lib/constantcontact/components/email_marketing/message_footer.rb +14 -14
  22. data/lib/constantcontact/components/email_marketing/schedule.rb +14 -15
  23. data/lib/constantcontact/components/email_marketing/test_send.rb +21 -21
  24. data/lib/constantcontact/components/event_spot/contact.rb +27 -0
  25. data/lib/constantcontact/components/event_spot/event.rb +63 -0
  26. data/lib/constantcontact/components/event_spot/event_track.rb +28 -0
  27. data/lib/constantcontact/components/event_spot/fee.rb +27 -0
  28. data/lib/constantcontact/components/event_spot/guest.rb +31 -0
  29. data/lib/constantcontact/components/event_spot/notification_option.rb +27 -0
  30. data/lib/constantcontact/components/event_spot/promo_code.rb +26 -0
  31. data/lib/constantcontact/components/event_spot/registrant.rb +54 -0
  32. data/lib/constantcontact/components/event_spot/registrant_field.rb +27 -0
  33. data/lib/constantcontact/components/event_spot/registrant_section.rb +34 -0
  34. data/lib/constantcontact/components/event_spot/sale_item.rb +27 -0
  35. data/lib/constantcontact/components/library/file/library_file.rb +27 -0
  36. data/lib/constantcontact/components/library/folder/library_folder.rb +26 -0
  37. data/lib/constantcontact/components/library/info/library_summary.rb +26 -0
  38. data/lib/constantcontact/components/library/info/move_results.rb +26 -0
  39. data/lib/constantcontact/components/library/info/upload_status.rb +26 -0
  40. data/lib/constantcontact/components/tracking/bounce_activity.rb +14 -14
  41. data/lib/constantcontact/components/tracking/click_activity.rb +14 -14
  42. data/lib/constantcontact/components/tracking/forward_activity.rb +14 -14
  43. data/lib/constantcontact/components/tracking/open_activity.rb +14 -14
  44. data/lib/constantcontact/components/tracking/send_activity.rb +14 -14
  45. data/lib/constantcontact/components/tracking/tracking_summary.rb +17 -17
  46. data/lib/constantcontact/components/tracking/unsubscribe_activity.rb +14 -14
  47. data/lib/constantcontact/services/account_service.rb +4 -3
  48. data/lib/constantcontact/services/activity_service.rb +40 -3
  49. data/lib/constantcontact/services/base_service.rb +34 -6
  50. data/lib/constantcontact/services/campaign_tracking_service.rb +20 -20
  51. data/lib/constantcontact/services/contact_service.rb +10 -12
  52. data/lib/constantcontact/services/contact_tracking_service.rb +20 -20
  53. data/lib/constantcontact/services/email_marketing_service.rb +8 -10
  54. data/lib/constantcontact/services/event_spot_service.rb +254 -0
  55. data/lib/constantcontact/services/library_service.rb +297 -0
  56. data/lib/constantcontact/services/list_service.rb +6 -5
  57. data/lib/constantcontact/util/config.rb +135 -117
  58. data/lib/constantcontact/version.rb +1 -1
  59. data/spec/constantcontact/api_spec.rb +1223 -173
  60. data/spec/constantcontact/auth/oauth2_spec.rb +60 -47
  61. data/spec/constantcontact/components/contacts/address_spec.rb +1 -1
  62. data/spec/constantcontact/components/contacts/contact_list_spec.rb +1 -1
  63. data/spec/constantcontact/components/contacts/contact_spec.rb +1 -1
  64. data/spec/constantcontact/components/contacts/email_address_spec.rb +1 -1
  65. data/spec/constantcontact/services/activity_service_spec.rb +201 -0
  66. data/spec/constantcontact/services/base_service_spec.rb +27 -0
  67. data/spec/constantcontact/services/campaign_schedule_service_spec.rb +111 -0
  68. data/spec/constantcontact/services/campaign_tracking_service_spec.rb +127 -0
  69. data/spec/constantcontact/services/contact_service_spec.rb +24 -22
  70. data/spec/constantcontact/services/contact_tracking_service_spec.rb +127 -0
  71. data/spec/constantcontact/services/email_marketing_spec.rb +72 -66
  72. data/spec/constantcontact/services/event_spot_spec.rb +217 -0
  73. data/spec/constantcontact/services/library_service_spec.rb +248 -0
  74. data/spec/constantcontact/services/list_service_spec.rb +33 -17
  75. data/spec/spec_helper.rb +3 -1
  76. metadata +63 -7
@@ -9,15 +9,15 @@ module ConstantContact
9
9
  class CampaignTrackingService < BaseService
10
10
  class << self
11
11
 
12
- # Get a result set of bounces for a given campaign
12
+ # Get bounces for a given campaign
13
13
  # @param [String] access_token - Constant Contact OAuth2 access token
14
14
  # @param [String] campaign_id - Campaign id
15
- # @param [Hash] param - query parameters to be appended to request
15
+ # @param [Hash] params - query parameters to be appended to request
16
16
  # @return [ResultSet<BounceActivity>] - Containing a results array of BounceActivity
17
- def get_bounces(access_token, campaign_id, param = nil)
17
+ def get_bounces(access_token, campaign_id, params = {})
18
18
  url = Util::Config.get('endpoints.base_url') +
19
19
  sprintf(Util::Config.get('endpoints.campaign_tracking_bounces'), campaign_id)
20
- url = build_url(url, param)
20
+ url = build_url(url, params)
21
21
 
22
22
  response = RestClient.get(url, get_headers(access_token))
23
23
  body = JSON.parse(response.body)
@@ -34,12 +34,12 @@ module ConstantContact
34
34
  # Get clicks for a given campaign
35
35
  # @param [String] access_token - Constant Contact OAuth2 access token
36
36
  # @param [String] campaign_id - Campaign id
37
- # @param [Hash] param - query parameters to be appended to request
37
+ # @param [Hash] params - query parameters to be appended to request
38
38
  # @return [ResultSet<ClickActivity>] - Containing a results array of ClickActivity
39
- def get_clicks(access_token, campaign_id, param = nil)
39
+ def get_clicks(access_token, campaign_id, params = {})
40
40
  url = Util::Config.get('endpoints.base_url') +
41
41
  sprintf(Util::Config.get('endpoints.campaign_tracking_clicks'), campaign_id)
42
- url = build_url(url, param)
42
+ url = build_url(url, params)
43
43
 
44
44
  response = RestClient.get(url, get_headers(access_token))
45
45
  body = JSON.parse(response.body)
@@ -56,12 +56,12 @@ module ConstantContact
56
56
  # Get forwards for a given campaign
57
57
  # @param [String] access_token - Constant Contact OAuth2 access token
58
58
  # @param [String] campaign_id - Campaign id
59
- # @param [Hash] param - query parameters to be appended to request
59
+ # @param [Hash] params - query parameters to be appended to request
60
60
  # @return [ResultSet<ForwardActivity>] - Containing a results array of ForwardActivity
61
- def get_forwards(access_token, campaign_id, param = nil)
61
+ def get_forwards(access_token, campaign_id, params = {})
62
62
  url = Util::Config.get('endpoints.base_url') +
63
63
  sprintf(Util::Config.get('endpoints.campaign_tracking_forwards'), campaign_id)
64
- url = build_url(url, param)
64
+ url = build_url(url, params)
65
65
 
66
66
  response = RestClient.get(url, get_headers(access_token))
67
67
  body = JSON.parse(response.body)
@@ -78,12 +78,12 @@ module ConstantContact
78
78
  # Get opens for a given campaign
79
79
  # @param [String] access_token - Constant Contact OAuth2 access token
80
80
  # @param [String] campaign_id - Campaign id
81
- # @param [Hash] param - query parameters to be appended to request
81
+ # @param [Hash] params - query parameters to be appended to request
82
82
  # @return [ResultSet<OpenActivity>] - Containing a results array of OpenActivity
83
- def get_opens(access_token, campaign_id, param = nil)
83
+ def get_opens(access_token, campaign_id, params = {})
84
84
  url = Util::Config.get('endpoints.base_url') +
85
85
  sprintf(Util::Config.get('endpoints.campaign_tracking_opens'), campaign_id)
86
- url = build_url(url, param)
86
+ url = build_url(url, params)
87
87
 
88
88
  response = RestClient.get(url, get_headers(access_token))
89
89
  body = JSON.parse(response.body)
@@ -100,12 +100,12 @@ module ConstantContact
100
100
  # Get sends for a given campaign
101
101
  # @param [String] access_token - Constant Contact OAuth2 access token
102
102
  # @param [String] campaign_id - Campaign id
103
- # @param [Hash] param - query parameters to be appended to request
103
+ # @param [Hash] params - query parameters to be appended to request
104
104
  # @return [ResultSet<SendActivity>] - Containing a results array of SendActivity
105
- def get_sends(access_token, campaign_id, param = nil)
105
+ def get_sends(access_token, campaign_id, params = {})
106
106
  url = Util::Config.get('endpoints.base_url') +
107
107
  sprintf(Util::Config.get('endpoints.campaign_tracking_sends'), campaign_id)
108
- url = build_url(url, param)
108
+ url = build_url(url, params)
109
109
 
110
110
  response = RestClient.get(url, get_headers(access_token))
111
111
  body = JSON.parse(response.body)
@@ -122,19 +122,19 @@ module ConstantContact
122
122
  # Get unsubscribes for a given campaign
123
123
  # @param [String] access_token - Constant Contact OAuth2 access token
124
124
  # @param [String] campaign_id - Campaign id
125
- # @param [Hash] param - query params to be appended to request
125
+ # @param [Hash] params - query params to be appended to request
126
126
  # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity
127
- def get_unsubscribes(access_token, campaign_id, param = nil)
127
+ def get_unsubscribes(access_token, campaign_id, params = {})
128
128
  url = Util::Config.get('endpoints.base_url') +
129
129
  sprintf(Util::Config.get('endpoints.campaign_tracking_unsubscribes'), campaign_id)
130
- url = build_url(url, param)
130
+ url = build_url(url, params)
131
131
 
132
132
  response = RestClient.get(url, get_headers(access_token))
133
133
  body = JSON.parse(response.body)
134
134
 
135
135
  unsubscribes = []
136
136
  body['results'].each do |unsubscribe_activity|
137
- unsubscribes[] = Components::UnsubscribeActivity.create(unsubscribe_activity)
137
+ unsubscribes << Components::UnsubscribeActivity.create(unsubscribe_activity)
138
138
  end
139
139
 
140
140
  Components::ResultSet.new(unsubscribes, body['meta'])
@@ -11,11 +11,11 @@ module ConstantContact
11
11
 
12
12
  # Get an array of contacts
13
13
  # @param [String] access_token - Constant Contact OAuth2 access token
14
- # @param [Hash] param - query parameters to be appended to the request
14
+ # @param [Hash] params - query parameters to be appended to the request
15
15
  # @return [ResultSet<Contact>]
16
- def get_contacts(access_token, param = nil)
16
+ def get_contacts(access_token, params = {})
17
17
  url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.contacts')
18
- url = build_url(url, param)
18
+ url = build_url(url, params)
19
19
 
20
20
  response = RestClient.get(url, get_headers(access_token))
21
21
  body = JSON.parse(response.body)
@@ -45,12 +45,11 @@ module ConstantContact
45
45
  # Add a new contact to the Constant Contact account
46
46
  # @param [String] access_token - Constant Contact OAuth2 access token
47
47
  # @param [Contact] contact - Contact to add
48
- # @param [Boolean] action_by_visitor - is the action being taken by the visitor
48
+ # @param [Boolean] params - query params to be appended to the request
49
49
  # @return [Contact]
50
- def add_contact(access_token, contact, action_by_visitor = false)
50
+ def add_contact(access_token, contact, params = {})
51
51
  url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.contacts')
52
- param = action_by_visitor ? {'action_by' => 'ACTION_BY_VISITOR'} : nil
53
- url = build_url(url, param)
52
+ url = build_url(url, params)
54
53
  payload = contact.to_json
55
54
  response = RestClient.post(url, payload, get_headers(access_token))
56
55
  Components::Contact.create(JSON.parse(response.body))
@@ -84,7 +83,7 @@ module ConstantContact
84
83
  # Delete a contact from a specific contact list
85
84
  # @param [String] access_token - Constant Contact OAuth2 access token
86
85
  # @param [Integer] contact_id - Contact id to be removed
87
- # @param [Integer] list_id - ContactList to remove the contact from
86
+ # @param [Integer] list_id - ContactList id to remove the contact from
88
87
  # @return [Boolean]
89
88
  def delete_contact_from_list(access_token, contact_id, list_id)
90
89
  url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_list'), contact_id, list_id)
@@ -97,12 +96,11 @@ module ConstantContact
97
96
  # Update contact details for a specific contact
98
97
  # @param [String] access_token - Constant Contact OAuth2 access token
99
98
  # @param [Contact] contact - Contact to be updated
100
- # @param [Boolean] action_by_visitor - is the action being taken by the visitor
99
+ # @param [Hash] params - query params to be appended to the request
101
100
  # @return [Contact]
102
- def update_contact(access_token, contact, action_by_visitor = false)
101
+ def update_contact(access_token, contact, params = {})
103
102
  url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact'), contact.id)
104
- param = action_by_visitor ? {'action_by' => 'ACTION_BY_VISITOR'} : nil
105
- url = build_url(url, param)
103
+ url = build_url(url, params)
106
104
  payload = contact.to_json
107
105
  response = RestClient.put(url, payload, get_headers(access_token))
108
106
  Components::Contact.create(JSON.parse(response.body))
@@ -9,15 +9,15 @@ module ConstantContact
9
9
  class ContactTrackingService < BaseService
10
10
  class << self
11
11
 
12
- # Get a result set of bounces for a given contact
12
+ # Get bounces for a given contact
13
13
  # @param [String] access_token - Constant Contact OAuth2 access token
14
14
  # @param [String] contact_id - Contact id
15
- # @param [Hash] param - query parameters to be appended to request
15
+ # @param [Hash] params - query parameters to be appended to request
16
16
  # @return [ResultSet<BounceActivity>] - Containing a results array of BounceActivity
17
- def get_bounces(access_token, contact_id, param = nil)
17
+ def get_bounces(access_token, contact_id, params = {})
18
18
  url = Util::Config.get('endpoints.base_url') +
19
19
  sprintf(Util::Config.get('endpoints.contact_tracking_bounces'), contact_id)
20
- url = build_url(url, param)
20
+ url = build_url(url, params)
21
21
 
22
22
  response = RestClient.get(url, get_headers(access_token))
23
23
  body = JSON.parse(response.body)
@@ -34,12 +34,12 @@ module ConstantContact
34
34
  # Get clicks for a given contact
35
35
  # @param [String] access_token - Constant Contact OAuth2 access token
36
36
  # @param [String] contact_id - Contact id
37
- # @param [Hash] param - query parameters to be appended to request
37
+ # @param [Hash] params - query parameters to be appended to request
38
38
  # @return [ResultSet<ClickActivity>] - Containing a results array of ClickActivity
39
- def get_clicks(access_token, contact_id, param = nil)
39
+ def get_clicks(access_token, contact_id, params = {})
40
40
  url = Util::Config.get('endpoints.base_url') +
41
41
  sprintf(Util::Config.get('endpoints.contact_tracking_clicks'), contact_id)
42
- url = build_url(url, param)
42
+ url = build_url(url, params)
43
43
 
44
44
  response = RestClient.get(url, get_headers(access_token))
45
45
  body = JSON.parse(response.body)
@@ -56,12 +56,12 @@ module ConstantContact
56
56
  # Get forwards for a given contact
57
57
  # @param [String] access_token - Constant Contact OAuth2 access token
58
58
  # @param [String] contact_id - Contact id
59
- # @param [Hash] param - query parameters to be appended to request
59
+ # @param [Hash] params - query parameters to be appended to request
60
60
  # @return [ResultSet<ForwardActivity>] - Containing a results array of ForwardActivity
61
- def get_forwards(access_token, contact_id, param = nil)
61
+ def get_forwards(access_token, contact_id, params = {})
62
62
  url = Util::Config.get('endpoints.base_url') +
63
63
  sprintf(Util::Config.get('endpoints.contact_tracking_forwards'), contact_id)
64
- url = build_url(url, param)
64
+ url = build_url(url, params)
65
65
 
66
66
  response = RestClient.get(url, get_headers(access_token))
67
67
  body = JSON.parse(response.body)
@@ -78,12 +78,12 @@ module ConstantContact
78
78
  # Get opens for a given contact
79
79
  # @param [String] access_token - Constant Contact OAuth2 access token
80
80
  # @param [String] contact_id - Contact id
81
- # @param [Hash] param - query parameters to be appended to request
81
+ # @param [Hash] params - query parameters to be appended to request
82
82
  # @return [ResultSet<OpenActivity>] - Containing a results array of OpenActivity
83
- def get_opens(access_token, contact_id, param = nil)
83
+ def get_opens(access_token, contact_id, params = {})
84
84
  url = Util::Config.get('endpoints.base_url') +
85
85
  sprintf(Util::Config.get('endpoints.contact_tracking_opens'), contact_id)
86
- url = build_url(url, param)
86
+ url = build_url(url, params)
87
87
 
88
88
  response = RestClient.get(url, get_headers(access_token))
89
89
  body = JSON.parse(response.body)
@@ -100,12 +100,12 @@ module ConstantContact
100
100
  # Get sends for a given contact
101
101
  # @param [String] access_token - Constant Contact OAuth2 access token
102
102
  # @param [String] contact_id - Contact id
103
- # @param [Hash] param - query parameters to be appended to request
103
+ # @param [Hash] params - query parameters to be appended to request
104
104
  # @return [ResultSet<SendActivity>] - Containing a results array of SendActivity
105
- def get_sends(access_token, contact_id, param = nil)
105
+ def get_sends(access_token, contact_id, params = {})
106
106
  url = Util::Config.get('endpoints.base_url') +
107
107
  sprintf(Util::Config.get('endpoints.contact_tracking_sends'), contact_id)
108
- url = build_url(url, param)
108
+ url = build_url(url, params)
109
109
 
110
110
  response = RestClient.get(url, get_headers(access_token))
111
111
  body = JSON.parse(response.body)
@@ -122,19 +122,19 @@ module ConstantContact
122
122
  # Get unsubscribes for a given contact
123
123
  # @param [String] access_token - Constant Contact OAuth2 access token
124
124
  # @param [String] contact_id - Contact id
125
- # @param [Hash] param - query parameters to be appended to request
125
+ # @param [Hash] params - query parameters to be appended to request
126
126
  # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity
127
- def get_unsubscribes(access_token, contact_id, param = nil)
127
+ def get_unsubscribes(access_token, contact_id, params = {})
128
128
  url = Util::Config.get('endpoints.base_url') +
129
129
  sprintf(Util::Config.get('endpoints.contact_tracking_unsubscribes'), contact_id)
130
- url = build_url(url, param)
130
+ url = build_url(url, params)
131
131
 
132
132
  response = RestClient.get(url, get_headers(access_token))
133
133
  body = JSON.parse(response.body)
134
134
 
135
135
  unsubscribes = []
136
136
  body['results'].each do |unsubscribe_activity|
137
- unsubscribes[] = Components::UnsubscribeActivity.create(unsubscribe_activity)
137
+ unsubscribes << Components::UnsubscribeActivity.create(unsubscribe_activity)
138
138
  end
139
139
 
140
140
  Components::ResultSet.new(unsubscribes, body['meta'])
@@ -21,16 +21,14 @@ module ConstantContact
21
21
  Components::Campaign.create(JSON.parse(response.body))
22
22
  end
23
23
 
24
- # Get a set of campaigns
25
- # @param [String] access_token Constant Contact OAuth2 access token
26
- # @param [Hash] opts query parameters to be appended to the request
27
- # @option opts [String] status email campaigns status of DRAFT, RUNNING, SENT, SCHEDULED.
28
- # @option opts [String] modified_since ISO-8601 date string to return campaigns modified since then.
29
- # @option opts [Integer] limit number of campaigns to return, 1 to 50.
30
- # @return [ResultSet<Campaign>]
31
- def get_campaigns(access_token, opts = {})
32
- url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.campaigns')
33
- url = build_url(url, opts)
24
+
25
+ # Get a set of campaigns
26
+ # @param [String] access_token Constant Contact OAuth2 access token
27
+ # @param [Hash] params - query parameters to be appended to the request
28
+ # @return [ResultSet<Campaign>]
29
+ def get_campaigns(access_token, params = {})
30
+ url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.campaigns')
31
+ url = build_url(url, params)
34
32
 
35
33
  response = RestClient.get(url, get_headers(access_token))
36
34
  body = JSON.parse(response.body)
@@ -0,0 +1,254 @@
1
+ #
2
+ # event_spot_service.rb
3
+ # ConstantContact
4
+ #
5
+ # Copyright (c) 2013 Constant Contact. All rights reserved.
6
+
7
+ module ConstantContact
8
+ module Services
9
+ class EventSpotService < BaseService
10
+ class << self
11
+
12
+ # Create a new event
13
+ # @param [String] access_token - Constant Contact OAuth2 access token
14
+ # @param [Event] event - Event to be created
15
+ # @return [Event]
16
+ def add_event(access_token, event)
17
+ url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.events')
18
+ url = build_url(url)
19
+ payload = event.to_json
20
+ response = RestClient.post(url, payload, get_headers(access_token))
21
+ Components::Event.create(JSON.parse(response.body))
22
+ end
23
+
24
+
25
+ # Get a set of events
26
+ # @param [String] access_token Constant Contact OAuth2 access token
27
+ # @param [Hash] opts query parameters to be appended to the request
28
+ # @option opts [String] status email campaigns status of DRAFT, RUNNING, SENT, SCHEDULED.
29
+ # @option opts [String] modified_since ISO-8601 date string to return campaigns modified since then.
30
+ # @option opts [Integer] limit number of campaigns to return, 1 to 50.
31
+ # @return [ResultSet<Event>]
32
+ def get_events(access_token, opts = {})
33
+ url = Util::Config.get('endpoints.base_url') + Util::Config.get('endpoints.events')
34
+ url = build_url(url, opts)
35
+
36
+ response = RestClient.get(url, get_headers(access_token))
37
+ body = JSON.parse(response.body)
38
+
39
+ events = body['results'].collect do |event|
40
+ Components::Event.create_summary(event)
41
+ end
42
+
43
+ Components::ResultSet.new(events, body['meta'])
44
+ end
45
+
46
+
47
+ # Get event details for a specific event
48
+ # @param [String] access_token - Constant Contact OAuth2 access token
49
+ # @param [Integer] event - Valid event id
50
+ # @return [Event]
51
+ def get_event(access_token, event)
52
+ event_id = get_id_for(event)
53
+ url = Util::Config.get('endpoints.base_url') +
54
+ sprintf(Util::Config.get('endpoints.event'), event_id)
55
+ url = build_url(url)
56
+ response = RestClient.get(url, get_headers(access_token))
57
+ Components::Event.create(JSON.parse(response.body))
58
+ end
59
+
60
+
61
+ # Delete an EventSpot event
62
+ # @param [String] access_token - Constant Contact OAuth2 access token
63
+ # @param [Integer] event - Valid event id
64
+ # @return [Boolean]
65
+ def delete_event(access_token, event)
66
+ event_id = get_id_for(event)
67
+ url = Util::Config.get('endpoints.base_url') +
68
+ sprintf(Util::Config.get('endpoints.event'), event_id)
69
+ url = build_url(url)
70
+ response = RestClient.delete(url, get_headers(access_token))
71
+ response.code == 204
72
+ end
73
+
74
+
75
+ # Update a specific EventSpot event
76
+ # @param [String] access_token - Constant Contact OAuth2 access token
77
+ # @param [Event] event - Event to be updated
78
+ # @return [Event]
79
+ def update_event(access_token, event)
80
+ event_id = get_id_for(event)
81
+ url = Util::Config.get('endpoints.base_url') +
82
+ sprintf(Util::Config.get('endpoints.event'), event_id)
83
+ url = build_url(url)
84
+ payload = event.to_json
85
+ response = RestClient.put(url, payload, get_headers(access_token))
86
+ Components::Event.create(JSON.parse(response.body))
87
+ end
88
+
89
+
90
+ # Publish a specific EventSpot event
91
+ # @param [String] access_token - Constant Contact OAuth2 access token
92
+ # @param [Event] event - Event to be updated
93
+ # @return [Event]
94
+ def publish_event(access_token, event)
95
+ event_id = get_id_for(event)
96
+ url = Util::Config.get('endpoints.base_url') +
97
+ sprintf(Util::Config.get('endpoints.event'), event_id)
98
+ url = build_url(url)
99
+ payload = [{:op => "REPLACE", :path => "#/status", :value => "ACTIVE"}].to_json
100
+ response = RestClient.patch(url, payload, get_headers(access_token))
101
+ Components::Event.create(JSON.parse(response.body))
102
+ end
103
+
104
+
105
+ # Cancel a specific EventSpot event
106
+ # @param [String] access_token - Constant Contact OAuth2 access token
107
+ # @param [Event] event - Event to be updated
108
+ # @return [Event]
109
+ def cancel_event(access_token, event)
110
+ event_id = get_id_for(event)
111
+ url = Util::Config.get('endpoints.base_url') +
112
+ sprintf(Util::Config.get('endpoints.event'), event_id)
113
+ url = build_url(url)
114
+ payload = [{ :op => "REPLACE", :path => "#/status", :value => "CANCELLED" }].to_json
115
+ response = RestClient.patch(url, payload, get_headers(access_token))
116
+ Components::Event.create(JSON.parse(response.body))
117
+ end
118
+
119
+
120
+ # Create a new event fee
121
+ # @param [String] access_token - Constant Contact OAuth2 access token
122
+ # @param [Integer] event - Valid event id
123
+ # @param [Fee] fee - Event fee to be created
124
+ # @return [Fee]
125
+ def add_fee(access_token, event, fee)
126
+ event_id = get_id_for(event)
127
+ url = Util::Config.get('endpoints.base_url') +
128
+ sprintf(Util::Config.get('endpoints.event_fees'), event_id)
129
+ url = build_url(url)
130
+ payload = fee.to_json
131
+ response = RestClient.post(url, payload, get_headers(access_token))
132
+ Components::Fee.create(JSON.parse(response.body))
133
+ end
134
+
135
+
136
+ # Get a set of event fees
137
+ # @param [String] access_token - Constant Contact OAuth2 access token
138
+ # @param [Integer] event - Valid event id
139
+ # @return [ResultSet<Fee>]
140
+ def get_fees(access_token, event)
141
+ event_id = get_id_for(event)
142
+ url = Util::Config.get('endpoints.base_url') +
143
+ sprintf(Util::Config.get('endpoints.event_fees'), event_id)
144
+ url = build_url(url)
145
+
146
+ response = RestClient.get(url, get_headers(access_token))
147
+ body = JSON.parse(response.body)
148
+
149
+ fees = body.collect do |fee|
150
+ Components::Fee.create(fee)
151
+ end
152
+ end
153
+
154
+
155
+ # Get an individual event fee
156
+ # @param [String] access_token - Constant Contact OAuth2 access token
157
+ # @param [Integer] event - Valid event id
158
+ # @param [Integer] fee - Valid fee id
159
+ # @return [Fee]
160
+ def get_fee(access_token, event, fee)
161
+ event_id = get_id_for(event)
162
+ fee_id = get_id_for(fee)
163
+ url = Util::Config.get('endpoints.base_url') +
164
+ sprintf(Util::Config.get('endpoints.event_fee'), event_id, fee_id)
165
+ url = build_url(url)
166
+
167
+ response = RestClient.get(url, get_headers(access_token))
168
+ fee = Components::Fee.create(JSON.parse(response.body))
169
+ end
170
+
171
+
172
+ # Update an individual event fee
173
+ # @param [String] access_token - Constant Contact OAuth2 access token
174
+ # @param [Integer] event - Valid event id
175
+ # @param [Integer] fee - Valid fee id
176
+ # @return [Fee]
177
+ def update_fee(access_token, event, fee)
178
+ event_id = get_id_for(event)
179
+ if fee.kind_of?(ConstantContact::Components::Fee)
180
+ fee_id = fee.id
181
+ elsif fee.kind_of?(Hash)
182
+ fee_id = fee['id']
183
+ else
184
+ raise ArgumentError.new "Fee must be a Hash or ConstantContact::Components::Fee"
185
+ end
186
+
187
+ url = Util::Config.get('endpoints.base_url') +
188
+ sprintf(Util::Config.get('endpoints.event_fee'), event_id, fee_id)
189
+ url = build_url(url)
190
+ payload = fee.to_json
191
+
192
+ response = RestClient.put(url, payload, get_headers(access_token))
193
+ fee = Components::Fee.create(JSON.parse(response.body))
194
+ end
195
+
196
+
197
+ # Delete an individual event fee
198
+ # @param [String] access_token - Constant Contact OAuth2 access token
199
+ # @param [Integer] event - Valid event id
200
+ # @param [Integer] fee - Valid fee id
201
+ # @return [Fee]
202
+ def delete_fee(access_token, event, fee)
203
+ event_id = get_id_for(event)
204
+ fee_id = get_id_for(fee)
205
+ url = Util::Config.get('endpoints.base_url') +
206
+ sprintf(Util::Config.get('endpoints.event_fee'), event_id, fee_id)
207
+ url = build_url(url)
208
+
209
+ response = RestClient.delete(url, get_headers(access_token))
210
+ response.code == 204
211
+ end
212
+
213
+
214
+ # Get a set of event registrants
215
+ # @param [String] access_token - Constant Contact OAuth2 access token
216
+ # @param [Integer] event - Valid event id
217
+ # @return [ResultSet<Registrant>]
218
+ def get_registrants(access_token, event)
219
+ event_id = event.kind_of?(ConstantContact::Components::Event) ? event.id : event
220
+ url = Util::Config.get('endpoints.base_url') +
221
+ sprintf(Util::Config.get('endpoints.event_registrants'), event_id)
222
+ url = build_url(url)
223
+
224
+ response = RestClient.get(url, get_headers(access_token))
225
+ body = JSON.parse(response.body)
226
+
227
+ registrants = body['results'].collect do |registrant|
228
+ Components::Registrant.create(registrant)
229
+ end
230
+
231
+ Components::ResultSet.new(registrants, body['meta'])
232
+ end
233
+
234
+
235
+ # Get an individual event registant
236
+ # @param [String] access_token - Constant Contact OAuth2 access token
237
+ # @param [Integer] event - Valid event id
238
+ # @param [Integer] registrant - Valid fee id
239
+ # @return [Fee]
240
+ def get_registrant(access_token, event, registrant)
241
+ event_id = get_id_for(event)
242
+ registrant_id = get_id_for(registrant)
243
+ url = Util::Config.get('endpoints.base_url') +
244
+ sprintf(Util::Config.get('endpoints.event_fee'), event_id, registrant_id)
245
+ url = build_url(url)
246
+
247
+ response = RestClient.get(url, get_headers(access_token))
248
+ registrant = Components::Registrant.create(JSON.parse(response.body))
249
+ end
250
+
251
+ end
252
+ end
253
+ end
254
+ end