constantcontact-ruby 2.2.0

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 (107) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/README.md +136 -0
  4. data/constantcontact-ruby.gemspec +31 -0
  5. data/lib/constantcontact/api.rb +1012 -0
  6. data/lib/constantcontact/auth/oauth2.rb +105 -0
  7. data/lib/constantcontact/auth/session_data_store.rb +69 -0
  8. data/lib/constantcontact/components/account/account_address.rb +26 -0
  9. data/lib/constantcontact/components/account/account_info.rb +38 -0
  10. data/lib/constantcontact/components/account/verified_email_address.rb +26 -0
  11. data/lib/constantcontact/components/activities/activity.rb +43 -0
  12. data/lib/constantcontact/components/activities/activity_error.rb +26 -0
  13. data/lib/constantcontact/components/activities/add_contacts.rb +127 -0
  14. data/lib/constantcontact/components/activities/add_contacts_import_data.rb +46 -0
  15. data/lib/constantcontact/components/activities/export_contacts.rb +30 -0
  16. data/lib/constantcontact/components/component.rb +48 -0
  17. data/lib/constantcontact/components/contacts/address.rb +27 -0
  18. data/lib/constantcontact/components/contacts/contact.rb +92 -0
  19. data/lib/constantcontact/components/contacts/contact_list.rb +26 -0
  20. data/lib/constantcontact/components/contacts/custom_field.rb +26 -0
  21. data/lib/constantcontact/components/contacts/email_address.rb +33 -0
  22. data/lib/constantcontact/components/contacts/note.rb +26 -0
  23. data/lib/constantcontact/components/email_marketing/campaign.rb +83 -0
  24. data/lib/constantcontact/components/email_marketing/campaign_preview.rb +29 -0
  25. data/lib/constantcontact/components/email_marketing/click_through_details.rb +27 -0
  26. data/lib/constantcontact/components/email_marketing/message_footer.rb +29 -0
  27. data/lib/constantcontact/components/email_marketing/schedule.rb +27 -0
  28. data/lib/constantcontact/components/email_marketing/test_send.rb +45 -0
  29. data/lib/constantcontact/components/event_spot/contact.rb +27 -0
  30. data/lib/constantcontact/components/event_spot/event.rb +69 -0
  31. data/lib/constantcontact/components/event_spot/event_address.rb +29 -0
  32. data/lib/constantcontact/components/event_spot/event_fee.rb +27 -0
  33. data/lib/constantcontact/components/event_spot/event_item.rb +36 -0
  34. data/lib/constantcontact/components/event_spot/event_item_attribute.rb +26 -0
  35. data/lib/constantcontact/components/event_spot/event_track.rb +31 -0
  36. data/lib/constantcontact/components/event_spot/guest.rb +31 -0
  37. data/lib/constantcontact/components/event_spot/guest_section.rb +34 -0
  38. data/lib/constantcontact/components/event_spot/notification_option.rb +27 -0
  39. data/lib/constantcontact/components/event_spot/online_meeting.rb +28 -0
  40. data/lib/constantcontact/components/event_spot/payment_address.rb +29 -0
  41. data/lib/constantcontact/components/event_spot/payment_summary.rb +33 -0
  42. data/lib/constantcontact/components/event_spot/promocode.rb +25 -0
  43. data/lib/constantcontact/components/event_spot/registrant.rb +52 -0
  44. data/lib/constantcontact/components/event_spot/registrant_fee.rb +29 -0
  45. data/lib/constantcontact/components/event_spot/registrant_field.rb +27 -0
  46. data/lib/constantcontact/components/event_spot/registrant_order.rb +39 -0
  47. data/lib/constantcontact/components/event_spot/registrant_promo_code.rb +31 -0
  48. data/lib/constantcontact/components/event_spot/registrant_promo_code_info.rb +27 -0
  49. data/lib/constantcontact/components/event_spot/registrant_section.rb +34 -0
  50. data/lib/constantcontact/components/event_spot/sale_item.rb +29 -0
  51. data/lib/constantcontact/components/library/file/library_file.rb +27 -0
  52. data/lib/constantcontact/components/library/folder/library_folder.rb +26 -0
  53. data/lib/constantcontact/components/library/info/library_summary.rb +26 -0
  54. data/lib/constantcontact/components/library/info/move_results.rb +26 -0
  55. data/lib/constantcontact/components/library/info/upload_status.rb +26 -0
  56. data/lib/constantcontact/components/result_set.rb +50 -0
  57. data/lib/constantcontact/components/tracking/bounce_activity.rb +28 -0
  58. data/lib/constantcontact/components/tracking/click_activity.rb +26 -0
  59. data/lib/constantcontact/components/tracking/forward_activity.rb +26 -0
  60. data/lib/constantcontact/components/tracking/open_activity.rb +26 -0
  61. data/lib/constantcontact/components/tracking/send_activity.rb +27 -0
  62. data/lib/constantcontact/components/tracking/tracking_activity.rb +26 -0
  63. data/lib/constantcontact/components/tracking/tracking_summary.rb +27 -0
  64. data/lib/constantcontact/components/tracking/unsubscribe_activity.rb +27 -0
  65. data/lib/constantcontact/exceptions/ctct_exception.rb +25 -0
  66. data/lib/constantcontact/exceptions/illegal_argument_exception.rb +11 -0
  67. data/lib/constantcontact/exceptions/oauth2_exception.rb +11 -0
  68. data/lib/constantcontact/exceptions/webhooks_exception.rb +11 -0
  69. data/lib/constantcontact/services/account_service.rb +39 -0
  70. data/lib/constantcontact/services/activity_service.rb +136 -0
  71. data/lib/constantcontact/services/base_service.rb +68 -0
  72. data/lib/constantcontact/services/campaign_schedule_service.rb +101 -0
  73. data/lib/constantcontact/services/campaign_tracking_service.rb +152 -0
  74. data/lib/constantcontact/services/contact_service.rb +105 -0
  75. data/lib/constantcontact/services/contact_tracking_service.rb +152 -0
  76. data/lib/constantcontact/services/email_marketing_service.rb +94 -0
  77. data/lib/constantcontact/services/event_spot_service.rb +448 -0
  78. data/lib/constantcontact/services/library_service.rb +281 -0
  79. data/lib/constantcontact/services/list_service.rb +81 -0
  80. data/lib/constantcontact/util/config.rb +180 -0
  81. data/lib/constantcontact/util/helpers.rb +27 -0
  82. data/lib/constantcontact/version.rb +12 -0
  83. data/lib/constantcontact/webhooks/helpers/validator.rb +30 -0
  84. data/lib/constantcontact/webhooks/models/billing_change_notification.rb +27 -0
  85. data/lib/constantcontact/webhooks/webhooks_util.rb +45 -0
  86. data/lib/constantcontact.rb +124 -0
  87. data/spec/constantcontact/api_spec.rb +1560 -0
  88. data/spec/constantcontact/auth/oauth2_spec.rb +125 -0
  89. data/spec/constantcontact/components/contacts/address_spec.rb +18 -0
  90. data/spec/constantcontact/components/contacts/contact_list_spec.rb +18 -0
  91. data/spec/constantcontact/components/contacts/contact_spec.rb +18 -0
  92. data/spec/constantcontact/components/contacts/custom_field_spec.rb +18 -0
  93. data/spec/constantcontact/components/contacts/email_address_spec.rb +18 -0
  94. data/spec/constantcontact/sdk_spec.rb +24 -0
  95. data/spec/constantcontact/services/account_service_spec.rb +46 -0
  96. data/spec/constantcontact/services/activity_service_spec.rb +244 -0
  97. data/spec/constantcontact/services/base_service_spec.rb +50 -0
  98. data/spec/constantcontact/services/campaign_schedule_service_spec.rb +115 -0
  99. data/spec/constantcontact/services/campaign_tracking_service_spec.rb +131 -0
  100. data/spec/constantcontact/services/contact_service_spec.rb +111 -0
  101. data/spec/constantcontact/services/contact_tracking_service_spec.rb +131 -0
  102. data/spec/constantcontact/services/email_marketing_spec.rb +100 -0
  103. data/spec/constantcontact/services/event_spot_spec.rb +423 -0
  104. data/spec/constantcontact/services/library_service_spec.rb +252 -0
  105. data/spec/constantcontact/services/list_service_spec.rb +89 -0
  106. data/spec/constantcontact/webhooks/webhooks_spec.rb +26 -0
  107. metadata +243 -0
@@ -0,0 +1,1012 @@
1
+ #
2
+ # api.rb
3
+ # ConstantContact
4
+ #
5
+ # Copyright (c) 2013 Constant Contact. All rights reserved.
6
+
7
+ module ConstantContact
8
+ class Api
9
+ # Class constructor
10
+ # @param [String] api_key - Constant Contact API Key
11
+ # @param [String] access_token - Constant Contact OAuth2 access token
12
+ # @return
13
+ def initialize(api_key = nil, access_token = nil)
14
+ Services::BaseService.api_key = api_key || Util::Config.get('auth.api_key')
15
+ Services::BaseService.access_token = access_token
16
+ if Services::BaseService.api_key.nil? || Services::BaseService.api_key == ''
17
+ raise ArgumentError.new(Util::Config.get('errors.api_key_missing'))
18
+ end
19
+ if Services::BaseService.access_token.nil? || Services::BaseService.access_token == ''
20
+ raise ArgumentError.new(Util::Config.get('errors.access_token_missing'))
21
+ end
22
+ end
23
+
24
+
25
+ # Get a summary of account information
26
+ # @return [AccountInfo]
27
+ def get_account_info()
28
+ Services::AccountService.get_account_info()
29
+ end
30
+
31
+
32
+ # Get verified addresses for the account
33
+ # @param [String] status - status to filter query results by
34
+ # @return [Array<VerifiedEmailAddress>] an array of email addresses
35
+ def get_verified_email_addresses(status = nil)
36
+ params = {}
37
+ params['status'] = status if status
38
+ Services::AccountService.get_verified_email_addresses(params)
39
+ end
40
+
41
+
42
+ # Get a set of contacts
43
+ # @param [Hash] params - hash of query parameters and values to append to the request.
44
+ # Allowed parameters include:
45
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
46
+ # modified_since - ISO-8601 formatted timestamp.
47
+ # next - the next link returned from a previous paginated call. May only be used by itself.
48
+ # email - the contact by email address to retrieve information for.
49
+ # status - a contact status to filter results by. Must be one of ACTIVE, OPTOUT, REMOVED, UNCONFIRMED.
50
+ # @return [ResultSet<Contact>] a ResultSet of Contacts
51
+ def get_contacts(params = {})
52
+ Services::ContactService.get_contacts(params)
53
+ end
54
+
55
+
56
+ # Get an individual contact
57
+ # @param [Integer] contact_id - Id of the contact to retrieve
58
+ # @return [Contact]
59
+ def get_contact(contact_id)
60
+ Services::ContactService.get_contact(contact_id)
61
+ end
62
+
63
+
64
+ # Get contacts with a specified email eaddress
65
+ # @param [String] email - contact email address to search for
66
+ # @return [ResultSet<Contact>] a ResultSet of Contacts
67
+ def get_contact_by_email(email)
68
+ Services::ContactService.get_contacts({'email' => email})
69
+ end
70
+
71
+
72
+ # Add a new contact to an account
73
+ # @param [Contact] contact - Contact to add
74
+ # @param [Boolean] action_by_visitor - if the action is being taken by the visitor
75
+ # @return [Contact]
76
+ def add_contact(contact, action_by_visitor = false)
77
+ params = {}
78
+ params['action_by'] = 'ACTION_BY_VISITOR' if action_by_visitor
79
+ Services::ContactService.add_contact(contact, params)
80
+ end
81
+
82
+
83
+ # Sets an individual contact to 'REMOVED' status
84
+ # @param [Mixed] contact - Either a Contact id or the Contact itself
85
+ # @raise [IllegalArgumentException] If contact is not an integer or a Contact object
86
+ # @return [Boolean]
87
+ def delete_contact(contact)
88
+ contact_id = to_id(contact, 'Contact')
89
+ Services::ContactService.delete_contact(contact_id)
90
+ end
91
+
92
+
93
+ # Delete a contact from all contact lists
94
+ # @param [Mixed] contact - Contact id or the Contact object itself
95
+ # @raise [IllegalArgumentException] If contact is not an integer or a Contact object
96
+ # @return [Boolean]
97
+ def delete_contact_from_lists(contact)
98
+ contact_id = to_id(contact, 'Contact')
99
+ Services::ContactService.delete_contact_from_lists(contact_id)
100
+ end
101
+
102
+
103
+ # Delete a contact from all contact lists
104
+ # @param [Mixed] contact - Contact id or a Contact object
105
+ # @param [Mixed] list - ContactList id or a ContactList object
106
+ # @raise [IllegalArgumentException] If contact is not an integer or a Contact object
107
+ # @return [Boolean]
108
+ def delete_contact_from_list(contact, list)
109
+ contact_id = to_id(contact, 'Contact')
110
+ list_id = to_id(list, 'ContactList')
111
+ Services::ContactService.delete_contact_from_list(contact_id, list_id)
112
+ end
113
+
114
+
115
+ # Update an individual contact
116
+ # @param [Contact] contact - Contact to update
117
+ # @param [Boolean] action_by_visitor - if the action is being taken by the visitor
118
+ # @return [Contact]
119
+ def update_contact(contact, action_by_visitor = false)
120
+ params = {}
121
+ params['action_by'] = 'ACTION_BY_VISITOR' if action_by_visitor
122
+ Services::ContactService.update_contact(contact, params)
123
+ end
124
+
125
+
126
+ # Get lists
127
+ # @param [Hash] params - hash of query parameters and values to append to the request.
128
+ # Allowed parameters include:
129
+ # - modified_since - ISO-8601 formatted timestamp.
130
+ # @return [Array<ContactList>] Array of ContactList objects
131
+ def get_lists(params = {})
132
+ Services::ListService.get_lists(params)
133
+ end
134
+
135
+
136
+ # Get an individual list
137
+ # @param [Integer] list_id - Id of the list to retrieve
138
+ # @return [ContactList]
139
+ def get_list(list_id)
140
+ Services::ListService.get_list(list_id)
141
+ end
142
+
143
+
144
+ # Add a new list to an account
145
+ # @param [ContactList] list - List to add
146
+ # @return [ContactList]
147
+ def add_list(list)
148
+ Services::ListService.add_list(list)
149
+ end
150
+
151
+
152
+ # Update a contact list
153
+ # @param [ContactList] list - ContactList to update
154
+ # @return [ContactList]
155
+ def update_list(list)
156
+ Services::ListService.update_list(list)
157
+ end
158
+
159
+
160
+ # Get contact that belong to a specific list
161
+ # @param [Mixed] list - Integer id of the list or ContactList object
162
+ # @param [Mixed] param - denotes the number of results per set, limited to 50, or a next parameter provided
163
+ # from a previous getContactsFromList call
164
+ # @raise [IllegalArgumentException] If contact is not an integer or contact
165
+ # @return [Array<Contact>] An array of contacts
166
+ def get_contacts_from_list(list, param = nil)
167
+ list_id = to_id(list, 'ContactList')
168
+ param = determine_param(param)
169
+ Services::ListService.get_contacts_from_list(list_id, param)
170
+ end
171
+
172
+
173
+ # Get a set of campaigns
174
+ # @param [Mixed] params - hash of query parameters and values to append to the request.
175
+ # Allowed parameters include:
176
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
177
+ # modified_since - ISO-8601 formatted timestamp.
178
+ # next - the next link returned from a previous paginated call. May only be used by itself.
179
+ # email - the contact by email address to retrieve information for
180
+ # @return [ResultSet<Campaign>]
181
+ def get_email_campaigns(params = {})
182
+ Services::EmailMarketingService.get_campaigns(params)
183
+ end
184
+
185
+
186
+ # Get an individual campaign
187
+ # @param [Integer] campaign_id - Valid campaign id
188
+ # @return [Campaign]
189
+ def get_email_campaign(campaign_id)
190
+ Services::EmailMarketingService.get_campaign(campaign_id)
191
+ end
192
+
193
+
194
+ # Get the preview of an existing campaign
195
+ # @param [Integer] campaign_id - Valid campaign id
196
+ # @return [CampaignPreview]
197
+ def get_email_campaign_preview(campaign_id)
198
+ Services::EmailMarketingService.get_campaign_preview(campaign_id)
199
+ end
200
+
201
+
202
+ # Delete an individual campaign
203
+ # @param [Mixed] campaign - Id of a campaign or a Campaign object
204
+ # @raise IllegalArgumentException - if a Campaign object or campaign id is not passed
205
+ # @return [Boolean]
206
+ def delete_email_campaign(campaign)
207
+ campaign_id = to_id(campaign, 'Campaign')
208
+ Services::EmailMarketingService.delete_campaign(campaign_id)
209
+ end
210
+
211
+
212
+ # Create a new campaign
213
+ # @param [Campaign] campaign - Campaign to be created
214
+ # @return [Campaign] - created campaign
215
+ def add_email_campaign(campaign)
216
+ Services::EmailMarketingService.add_campaign(campaign)
217
+ end
218
+
219
+
220
+ # Update a specific campaign
221
+ # @param [Campaign] campaign - Campaign to be updated
222
+ # @return [Campaign] - updated campaign
223
+ def update_email_campaign(campaign)
224
+ Services::EmailMarketingService.update_campaign(campaign)
225
+ end
226
+
227
+
228
+ # Schedule a campaign to be sent
229
+ # @param [Mixed] campaign - Id of a campaign or a Campaign object
230
+ # @param [Schedule] schedule - Schedule to be associated with the provided campaign
231
+ # @return [Campaign] - updated campaign
232
+ def add_email_campaign_schedule(campaign, schedule)
233
+ campaign_id = to_id(campaign, 'Campaign')
234
+ Services::CampaignScheduleService.add_schedule(campaign_id, schedule)
235
+ end
236
+
237
+
238
+ # Get an array of schedules associated with a given campaign
239
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
240
+ # @return [Array<Schedule>]
241
+ def get_email_campaign_schedules(campaign)
242
+ campaign_id = to_id(campaign, 'Campaign')
243
+ Services::CampaignScheduleService.get_schedules(campaign_id)
244
+ end
245
+
246
+
247
+ # Get a specific schedule associated with a given campaign
248
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
249
+ # @param [Mixed] schedule - Schedule id or Schedule object itself
250
+ # @raise IllegalArgumentException
251
+ # @return [Schedule]
252
+ def get_email_campaign_schedule(campaign, schedule)
253
+ campaign_id = to_id(campaign, 'Campaign')
254
+ schedule_id = to_id(schedule, 'Schedule')
255
+ Services::CampaignScheduleService.get_schedule(campaign_id, schedule_id)
256
+ end
257
+
258
+
259
+ # Update a specific schedule associated with a given campaign
260
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
261
+ # @param [Schedule] schedule - Schedule to be updated
262
+ # @return [Schedule]
263
+ def update_email_campaign_schedule(campaign, schedule)
264
+ campaign_id = to_id(campaign, 'Campaign')
265
+ Services::CampaignScheduleService.update_schedule(campaign_id, schedule)
266
+ end
267
+
268
+
269
+ # Delete a specific schedule associated with a given campaign
270
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
271
+ # @param [Mixed] schedule - Schedule id or Schedule object itself
272
+ # @raise IllegalArgumentException
273
+ # @return [Boolean]
274
+ def delete_email_campaign_schedule(campaign, schedule)
275
+ campaign_id = to_id(campaign, 'Campaign')
276
+ schedule_id = to_id(schedule, 'Schedule')
277
+ Services::CampaignScheduleService.delete_schedule(campaign_id, schedule_id)
278
+ end
279
+
280
+
281
+ # Send a test send of a campaign
282
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
283
+ # @param [TestSend] test_send - test send details
284
+ # @return [TestSend]
285
+ def send_email_campaign_test(campaign, test_send)
286
+ campaign_id = to_id(campaign, 'Campaign')
287
+ Services::CampaignScheduleService.send_test(campaign_id, test_send)
288
+ end
289
+
290
+
291
+ # Get sends for a campaign
292
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
293
+ # @param [Hash] params - hash of query parameters and values to append to the request.
294
+ # Allowed parameters include:
295
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
296
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
297
+ # next - the next link returned from a previous paginated call. May only be used by itself.
298
+ # @return [ResultSet<SendActivity>]
299
+ def get_email_campaign_sends(campaign, params = {})
300
+ campaign_id = to_id(campaign, 'Campaign')
301
+ Services::CampaignTrackingService.get_sends(campaign_id, params)
302
+ end
303
+
304
+
305
+ # Get bounces for a campaign
306
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
307
+ # @param [Hash] params - hash of query parameters and values to append to the request.
308
+ # Allowed parameters include:
309
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
310
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
311
+ # next - the next link returned from a previous paginated call. May only be used by itself.
312
+ # @return [ResultSet<BounceActivity>]
313
+ def get_email_campaign_bounces(campaign, params = {})
314
+ campaign_id = to_id(campaign, 'Campaign')
315
+ Services::CampaignTrackingService.get_bounces(campaign_id, params)
316
+ end
317
+
318
+
319
+ # Get clicks for a campaign
320
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
321
+ # @param [Hash] params - hash of query parameters and values to append to the request.
322
+ # Allowed parameters include:
323
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
324
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
325
+ # next - the next link returned from a previous paginated call. May only be used by itself.
326
+ # @return [ResultSet<ClickActivity>]
327
+ def get_email_campaign_clicks(campaign, params = {})
328
+ campaign_id = to_id(campaign, 'Campaign')
329
+ Services::CampaignTrackingService.get_clicks(campaign_id, params)
330
+ end
331
+
332
+
333
+ # Get opens for a campaign
334
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
335
+ # @param [Hash] params - hash of query parameters and values to append to the request.
336
+ # Allowed parameters include:
337
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
338
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
339
+ # next - the next link returned from a previous paginated call. May only be used by itself.
340
+ # @return [ResultSet<OpenActivity>]
341
+ def get_email_campaign_opens(campaign, params = {})
342
+ campaign_id = to_id(campaign, 'Campaign')
343
+ Services::CampaignTrackingService.get_opens(campaign_id, params)
344
+ end
345
+
346
+
347
+ # Get forwards for a campaign
348
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
349
+ # @param [Hash] params - hash of query parameters and values to append to the request.
350
+ # Allowed parameters include:
351
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
352
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
353
+ # next - the next link returned from a previous paginated call. May only be used by itself.
354
+ # @return [ResultSet<ForwardActivity>]
355
+ def get_email_campaign_forwards(campaign, params = {})
356
+ campaign_id = to_id(campaign, 'Campaign')
357
+ Services::CampaignTrackingService.get_forwards(campaign_id, params)
358
+ end
359
+
360
+
361
+ # Get unsubscribes for a campaign
362
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
363
+ # @param [Hash] params - hash of query parameters and values to append to the request.
364
+ # Allowed parameters include:
365
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
366
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
367
+ # next - the next link returned from a previous paginated call. May only be used by itself.
368
+ # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity
369
+ def get_email_campaign_unsubscribes(campaign, params = {})
370
+ campaign_id = to_id(campaign, 'Campaign')
371
+ Services::CampaignTrackingService.get_unsubscribes(campaign_id, params)
372
+ end
373
+
374
+
375
+ # Get a reporting summary for a campaign
376
+ # @param [Mixed] campaign - Campaign id or Campaign object itself
377
+ # @return [TrackingSummary]
378
+ def get_email_campaign_summary_report(campaign)
379
+ campaign_id = to_id(campaign, 'Campaign')
380
+ Services::CampaignTrackingService.get_summary(campaign_id)
381
+ end
382
+
383
+
384
+ # Get sends for a Contact
385
+ # @param [Mixed] contact - Contact id or Contact object itself
386
+ # @param [Hash] params - hash of query parameters and values to append to the request.
387
+ # Allowed parameters include:
388
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
389
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
390
+ # next - the next link returned from a previous paginated call. May only be used by itself.
391
+ # @return [ResultSet<SendActivity>]
392
+ def get_contact_sends(contact, params = {})
393
+ contact_id = to_id(contact, 'Contact')
394
+ Services::ContactTrackingService.get_sends(contact_id, params)
395
+ end
396
+
397
+
398
+ # Get bounces for a Contact
399
+ # @param [Mixed] contact - Contact id or Contact object itself
400
+ # @param [Hash] params - hash of query parameters and values to append to the request.
401
+ # Allowed parameters include:
402
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
403
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
404
+ # next - the next link returned from a previous paginated call. May only be used by itself.
405
+ # @return [ResultSet<BounceActivity>]
406
+ def get_contact_bounces(contact, params = {})
407
+ contact_id = to_id(contact, 'Contact')
408
+ Services::ContactTrackingService.get_bounces(contact_id, params)
409
+ end
410
+
411
+
412
+ # Get clicks for a Contact
413
+ # @param [Mixed] contact - Contact id or Contact object itself
414
+ # @param [Hash] params - hash of query parameters and values to append to the request.
415
+ # Allowed parameters include:
416
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
417
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
418
+ # next - the next link returned from a previous paginated call. May only be used by itself.
419
+ # @return [ResultSet<ClickActivity>]
420
+ def get_contact_clicks(contact, params = {})
421
+ contact_id = to_id(contact, 'Contact')
422
+ Services::ContactTrackingService.get_clicks(contact_id, params)
423
+ end
424
+
425
+
426
+ # Get opens for a Contact
427
+ # @param [Mixed] contact - Contact id or Contact object itself
428
+ # @param [Hash] params - hash of query parameters and values to append to the request.
429
+ # Allowed parameters include:
430
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
431
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
432
+ # next - the next link returned from a previous paginated call. May only be used by itself.
433
+ # @return [ResultSet<OpenActivity>]
434
+ def get_contact_opens(contact, params = {})
435
+ contact_id = to_id(contact, 'Contact')
436
+ Services::ContactTrackingService.get_opens(contact_id, params)
437
+ end
438
+
439
+
440
+ # Get forwards for a Contact
441
+ # @param [Mixed] contact - Contact id or Contact object itself
442
+ # @param [Hash] params - hash of query parameters and values to append to the request.
443
+ # Allowed parameters include:
444
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
445
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
446
+ # next - the next link returned from a previous paginated call. May only be used by itself.
447
+ # @return [ResultSet<ForwardActivity>]
448
+ def get_contact_forwards(contact, params = {})
449
+ contact_id = to_id(contact, 'Contact')
450
+ Services::ContactTrackingService.get_forwards(contact_id, params)
451
+ end
452
+
453
+
454
+ # Get unsubscribes for a Contact
455
+ # @param [Mixed] contact - Contact id or Contact object itself
456
+ # @param [Hash] params - hash of query parameters and values to append to the request.
457
+ # Allowed parameters include:
458
+ # limit - Specifies the number of results displayed per page of output, from 1 - 500, default = 50.
459
+ # created_since - Used to retrieve a list of events since the date and time specified (in ISO-8601 format).
460
+ # next - the next link returned from a previous paginated call. May only be used by itself.
461
+ # @return [UnsubscribeActivity] - Containing a results array of UnsubscribeActivity
462
+ def get_contact_unsubscribes(contact, params = {})
463
+ contact_id = to_id(contact, 'Contact')
464
+ Services::ContactTrackingService.get_unsubscribes(contact_id, params)
465
+ end
466
+
467
+
468
+ # Get a reporting summary for a Contact
469
+ # @param [Mixed] contact - Contact id or Contact object itself
470
+ # @return [TrackingSummary]
471
+ def get_contact_summary_report(contact)
472
+ contact_id = to_id(contact, 'Contact')
473
+ Services::ContactTrackingService.get_summary(contact_id)
474
+ end
475
+
476
+
477
+ # Get an array of activities
478
+ # @param [Hash] params - hash of query parameters and values to append to the request.
479
+ # Allowed parameters include:
480
+ # status - Status of the activity, must be one of UNCONFIRMED, PENDING, QUEUED, RUNNING, COMPLETE, ERROR
481
+ # type - Type of activity, must be one of ADD_CONTACTS, REMOVE_CONTACTS_FROM_LISTS, CLEAR_CONTACTS_FROM_LISTS,
482
+ # EXPORT_CONTACTS
483
+ # @return [Array<Activity>]
484
+ def get_activities(params = {})
485
+ Services::ActivityService.get_activities(params)
486
+ end
487
+
488
+
489
+ # Get a single activity by id
490
+ # @param [String] activity_id - Activity id
491
+ # @return [Activity]
492
+ def get_activity(activity_id)
493
+ Services::ActivityService.get_activity(activity_id)
494
+ end
495
+
496
+
497
+ # Add an AddContacts activity to add contacts in bulk
498
+ # @param [AddContacts] add_contacts - Add Contacts Activity
499
+ # @return [Activity]
500
+ def add_create_contacts_activity(add_contacts)
501
+ Services::ActivityService.create_add_contacts_activity(add_contacts)
502
+ end
503
+
504
+
505
+ # Create an Add Contacts Activity from a file. Valid file types are txt, csv, xls, xlsx
506
+ # @param [String] file_name - The name of the file (ie: contacts.csv)
507
+ # @param [String] contents - The content of the file
508
+ # @param [String] lists - Comma separated list of ContactList id's to add the contacts to
509
+ # @return [Activity]
510
+ def add_create_contacts_activity_from_file(file_name, contents, lists)
511
+ Services::ActivityService.create_add_contacts_activity_from_file(file_name, contents, lists)
512
+ end
513
+
514
+
515
+ # Add a ClearLists Activity to remove all contacts from the provided lists
516
+ # @param [Array<Lists>] lists - Add Contacts Activity
517
+ # @return [Activity]
518
+ def add_clear_lists_activity(lists)
519
+ Services::ActivityService.add_clear_lists_activity(lists)
520
+ end
521
+
522
+
523
+ # Add a Remove Contacts From Lists Activity
524
+ # @param [Array<EmailAddress>] email_addresses - email addresses to be removed
525
+ # @param [Array<Lists>] lists - lists to remove the provided email addresses from
526
+ # @return [Activity]
527
+ def add_remove_contacts_from_lists_activity(email_addresses, lists)
528
+ Services::ActivityService.add_remove_contacts_from_lists_activity(email_addresses, lists)
529
+ end
530
+
531
+
532
+ # Add a Remove Contacts From Lists Activity from a file. Valid file types are txt, csv, xls, xlsx
533
+ # @param [String] file_name - The name of the file (ie: contacts.csv)
534
+ # @param [String] contents - The content of the file
535
+ # @param [String] lists - Comma separated list of ContactList id' to add the contacts too
536
+ # @return [Activity]
537
+ def add_remove_contacts_from_lists_activity_from_file(file_name, contents, lists)
538
+ Services::ActivityService.add_remove_contacts_from_lists_activity_from_file(file_name, contents, lists)
539
+ end
540
+
541
+
542
+ # Create an Export Contacts Activity
543
+ # @param [<Array>Contacts] export_contacts - Contacts to be exported
544
+ # @return [Activity]
545
+ def add_export_contacts_activity(export_contacts)
546
+ Services::ActivityService.add_export_contacts_activity(export_contacts)
547
+ end
548
+
549
+
550
+ # Get a list of events
551
+ # @return [ResultSet<Event>]
552
+ def get_events(opts = {})
553
+ Services::EventSpotService.get_events(opts)
554
+ end
555
+
556
+
557
+ # Get an event
558
+ # @param [Event] event - event id or object to be retrieved
559
+ # @return [Event]
560
+ def get_event(event)
561
+ Services::EventSpotService.get_event(event)
562
+ end
563
+
564
+
565
+ # Create an event
566
+ # @param [Hash] event - Event data stored in an object which respods to to_json
567
+ # @return [Event]
568
+ def add_event(event)
569
+ Services::EventSpotService.add_event(event)
570
+ end
571
+
572
+
573
+ # Update an event
574
+ # @param [Event|Hash] event - Event details stored in an object that responds to to_json and has an :id attribute
575
+ # @return [Event]
576
+ def update_event(event)
577
+ Services::EventSpotService.update_event(event)
578
+ end
579
+
580
+
581
+ # Publish an event
582
+ # @param [Event] event - Event to publish
583
+ # @return [Event]
584
+ def publish_event(event)
585
+ Services::EventSpotService.publish_event(event)
586
+ end
587
+
588
+
589
+ # Cancel an event
590
+ # @param [Event] event - Event to cancel
591
+ # @return [Event]
592
+ def cancel_event(event)
593
+ Services::EventSpotService.cancel_event(event)
594
+ end
595
+
596
+
597
+ # Get a list of event fees
598
+ # @param [Event] event - Event to get fees of
599
+ # @return [<Array>EventFee]
600
+ def get_event_fees(event)
601
+ Services::EventSpotService.get_fees(event)
602
+ end
603
+
604
+
605
+ # Get an event fee
606
+ # @param [Event] event - Event fee corresponds to
607
+ # @param [EventFee] fee - Fee to retrieve
608
+ # @return [EventFee]
609
+ def get_event_fee(event, fee)
610
+ Services::EventSpotService.get_fee(event, fee)
611
+ end
612
+
613
+
614
+ # Create an event fee
615
+ # @param [Event] event - Event fee corresponds to
616
+ # @param [Hash] fee - Fee details
617
+ # @return [EventFee]
618
+ def add_event_fee(event, fee)
619
+ Services::EventSpotService.add_fee(event, fee)
620
+ end
621
+
622
+
623
+ # Update an event fee
624
+ # @param [Event] event - Event fee corresponds to
625
+ # @param [EventFee] fee - Fee details
626
+ # @return [EventFee]
627
+ def update_event_fee(event, fee)
628
+ Services::EventSpotService.update_fee(event, fee)
629
+ end
630
+
631
+
632
+ # Delete an event fee
633
+ # @param [Event] event - Event fee corresponds to
634
+ # @param [EventFee] fee - Fee details
635
+ # @return [Boolean]
636
+ def delete_event_fee(event, fee)
637
+ Services::EventSpotService.delete_fee(event, fee)
638
+ end
639
+
640
+
641
+ # Get a set of event registrants
642
+ # @param [Event] event - Event fee corresponds to
643
+ # @return [ResultSet<Registrant>]
644
+ def get_event_registrants(event, opts = {})
645
+ Services::EventSpotService.get_registrants(event, opts)
646
+ end
647
+
648
+
649
+ # Get an event registrant
650
+ # @param [Event] event - Event registrant corresponds to
651
+ # @param [Registrant] registrant - registrant details
652
+ # @return [Registrant]
653
+ def get_event_registrant(event, registrant)
654
+ Services::EventSpotService.get_registrant(event, registrant)
655
+ end
656
+
657
+
658
+ # Get an array of event items for an individual event
659
+ # @param [Integer] event_id - event id to retrieve items for
660
+ # @return [Array<EventItem>]
661
+ def get_event_items(event_id)
662
+ Services::EventSpotService.get_event_items(event_id)
663
+ end
664
+
665
+
666
+ # Get an individual event item
667
+ # @param [Integer] event_id - id of event to retrieve item for
668
+ # @param [Integer] item_id - id of item to be retrieved
669
+ # @return [EventItem]
670
+ def get_event_item(event_id, item_id)
671
+ Services::EventSpotService.get_event_item(event_id, item_id)
672
+ end
673
+
674
+
675
+ # Create a new event item for an event
676
+ # @param [Integer] event_id - id of event to be associated with the event item
677
+ # @param [EventItem] event_item - event item to be created
678
+ # @return [EventItem]
679
+ def add_event_item(event_id, event_item)
680
+ Services::EventSpotService.add_event_item(event_id, event_item)
681
+ end
682
+
683
+
684
+ # Delete a specific event item for an event
685
+ # @param [Integer] event_id - id of event to delete an event item for
686
+ # @param [Integer] item_id - id of event item to be deleted
687
+ # @return [Boolean]
688
+ def delete_event_item(event_id, item_id)
689
+ Services::EventSpotService.delete_event_item(event_id, item_id)
690
+ end
691
+
692
+
693
+ # Update a specific event item for an event
694
+ # @param [Integer] event_id - id of event associated with the event item
695
+ # @param [EventItem] event_item - event item to be updated
696
+ # @return [EventItem]
697
+ def update_event_item(event_id, event_item)
698
+ Services::EventSpotService.update_event_item(event_id, event_item)
699
+ end
700
+
701
+
702
+ # Get an array of attributes for an individual event item
703
+ # @param [Integer] event_id - event id to retrieve item for
704
+ # @param [Integer] item_id - event item id to retrieve attributes for
705
+ # @return [Array<EventItemAttribute>]
706
+ def get_event_item_attributes(event_id, item_id)
707
+ Services::EventSpotService.get_event_item_attributes(event_id, item_id)
708
+ end
709
+
710
+
711
+ # Get an individual event item attribute
712
+ # @param [Integer] event_id - id of event to retrieve item for
713
+ # @param [Integer] item_id - id of item to retrieve attribute for
714
+ # @param [Integer] attribute_id - id of attribute to be retrieved
715
+ # @return [EventItemAttribute]
716
+ def get_event_item_attribute(event_id, item_id, attribute_id)
717
+ Services::EventSpotService.get_event_item_attribute(event_id, item_id, attribute_id)
718
+ end
719
+
720
+
721
+ # Create a new event item attribute for an event item
722
+ # @param [Integer] event_id - id of event to be associated with the event item attribute
723
+ # @param [Integer] item_id - id of event item to be associated with the event item attribute
724
+ # @param [EventItemAttribute] event_item_attribute - event item attribute to be created
725
+ # @return [EventItemAttribute]
726
+ def add_event_item_attribute(event_id, item_id, event_item_attribute)
727
+ Services::EventSpotService.add_event_item_attribute(event_id, item_id, event_item_attribute)
728
+ end
729
+
730
+
731
+ # Delete a specific event item for an event
732
+ # @param [Integer] event_id - id of event to delete an event item attribute for
733
+ # @param [Integer] item_id - id of event item to delete an event item attribute for
734
+ # @param [Integer] attribute_id - id of attribute to be deleted
735
+ # @return [Boolean]
736
+ def delete_event_item_attribute(event_id, item_id, attribute_id)
737
+ Services::EventSpotService.delete_event_item_attribute(event_id, item_id, attribute_id)
738
+ end
739
+
740
+
741
+ # Update a specific event item attribute for an event item
742
+ # @param [Integer] event_id - id of event associated with the event item
743
+ # @param [Integer] item_id - id of event item associated with the event item attribute
744
+ # @param [EventItemAttribute] event_item_attribute - event item to be updated
745
+ # @return [EventItemAttribute]
746
+ def update_event_item_attribute(event_id, item_id, event_item_attribute)
747
+ Services::EventSpotService.update_event_item_attribute(event_id, item_id, event_item_attribute)
748
+ end
749
+
750
+
751
+ # Get an array of promocodes for an individual event
752
+ # @param [Integer] event_id - event id to retrieve promocodes for
753
+ # @return [Array<Promocode>]
754
+ def get_promocodes(event_id)
755
+ Services::EventSpotService.get_promocodes(event_id)
756
+ end
757
+
758
+
759
+ # Get an individual promocode
760
+ # @param [Integer] event_id - id of event to retrieve item for
761
+ # @param [Integer] promocode_id - id of item to be retrieved
762
+ # @return [Promocode]
763
+ def get_promocode(event_id, promocode_id)
764
+ Services::EventSpotService.get_promocode(event_id, promocode_id)
765
+ end
766
+
767
+
768
+ # Create a new promocode for an event
769
+ # @param [Integer] event_id - id of event to be associated with the promocode
770
+ # @param [Promocode] promocode - promocode to be created
771
+ # @return [Promocode]
772
+ def add_promocode(event_id, promocode)
773
+ Services::EventSpotService.add_promocode(event_id, promocode)
774
+ end
775
+
776
+
777
+ # Delete a specific promocode for an event
778
+ # @param [Integer] event_id - id of event to delete a promocode for
779
+ # @param [Integer] promocode_id - id of promocode to be deleted
780
+ # @return [Boolean]
781
+ def delete_promocode(event_id, promocode_id)
782
+ Services::EventSpotService.delete_promocode(event_id, promocode_id)
783
+ end
784
+
785
+
786
+ # Update a specific promocode for an event
787
+ # @param [Integer] event_id - id of event associated with the promocode
788
+ # @param [Promocode] promocode - promocode to be updated
789
+ # @return [Promocode]
790
+ def update_promocode(event_id, promocode)
791
+ Services::EventSpotService.update_promocode(event_id, promocode)
792
+ end
793
+
794
+
795
+ # Retrieve MyLibrary usage information
796
+ # @return [LibrarySummary]
797
+ def get_library_info()
798
+ Services::LibraryService.get_library_info()
799
+ end
800
+
801
+
802
+ # Retrieve a list of MyLibrary folders
803
+ # @param [Hash] params - hash of query parameters and values to append to the request.
804
+ # Allowed parameters include:
805
+ # sort_by - The method to sort by, valid values are :
806
+ # CREATED_DATE - sorts by date folder was added, ascending (earliest to latest)
807
+ # CREATED_DATE_DESC - (default) sorts by date folder was added, descending (latest to earliest)
808
+ # MODIFIED_DATE - sorts by date folder was last modified, ascending (earliest to latest)
809
+ # MODIFIED_DATE_DESC - sorts by date folder was last modified, descending (latest to earliest)
810
+ # NAME - sorts alphabetically by folder name, a to z
811
+ # NAME_DESC - sorts alphabetically by folder name, z to a
812
+ # limit - Specifies the number of results displayed per page of output, from 1 - 50, default = 50.
813
+ # @return [ResultSet<LibraryFolder>]
814
+ def get_library_folders(params = {})
815
+ Services::LibraryService.get_library_folders(params)
816
+ end
817
+
818
+
819
+ # Create a new MyLibrary folder
820
+ # @param [LibraryFolder] folder - Library Folder to be created
821
+ # @return [LibraryFolder]
822
+ def add_library_folder(folder)
823
+ Services::LibraryService.add_library_folder(folder)
824
+ end
825
+
826
+
827
+ # Retrieve a specific MyLibrary folder using the folder_id path parameter
828
+ # @param [String] folder_id - The ID for the folder to return
829
+ # @return [LibraryFolder]
830
+ def get_library_folder(folder_id)
831
+ Services::LibraryService.get_library_folder(folder_id)
832
+ end
833
+
834
+
835
+ # Update a specific MyLibrary folder
836
+ # @param [LibraryFolder] folder - MyLibrary folder to be updated
837
+ # @return [LibraryFolder]
838
+ def update_library_folder(folder)
839
+ Services::LibraryService.update_library_folder(folder)
840
+ end
841
+
842
+
843
+ # Delete a MyLibrary folder
844
+ # @param [String] folder_id - The ID for the MyLibrary folder to delete
845
+ # @return [Boolean]
846
+ def delete_library_folder(folder_id)
847
+ Services::LibraryService.delete_library_folder(folder_id)
848
+ end
849
+
850
+
851
+ # Retrieve all files in the Trash folder
852
+ # @param [Hash] params - hash of query parameters and values to append to the request.
853
+ # Allowed parameters include:
854
+ # type - Specifies the type of files to retrieve, valid values are : ALL, IMAGES, or DOCUMENTS
855
+ # sort_by - The method to sort by, valid values are :
856
+ # ADDED_DATE - sorts by date folder was added, ascending (earliest to latest)
857
+ # ADDED_DATE_DESC - (default) sorts by date folder was added, descending (latest to earliest)
858
+ # MODIFIED_DATE - sorts by date folder was last modified, ascending (earliest to latest)
859
+ # MODIFIED_DATE_DESC - sorts by date folder was last modified, descending (latest to earliest)
860
+ # NAME - sorts alphabetically by file name, a to z
861
+ # NAME_DESC - sorts alphabetically by file name, z to a
862
+ # SIZE - sorts by file size, smallest to largest
863
+ # SIZE_DESC - sorts by file size, largest to smallest
864
+ # DIMENSION - sorts by file dimensions (hxw), smallest to largest
865
+ # DIMENSION_DESC - sorts by file dimensions (hxw), largest to smallest
866
+ # limit - Specifies the number of results displayed per page of output, from 1 - 50, default = 50.
867
+ # @return [ResultSet<LibraryFile>]
868
+ def get_library_trash(params = {})
869
+ Services::LibraryService.get_library_trash(params)
870
+ end
871
+
872
+
873
+ # Permanently deletes all files in the Trash folder
874
+ # @return [Boolean]
875
+ def delete_library_trash()
876
+ Services::LibraryService.delete_library_trash()
877
+ end
878
+
879
+
880
+ # Retrieve a collection of Library files in the Constant Contact account
881
+ # @param [Hash] params - hash of query parameters and values to append to the request.
882
+ # Allowed parameters include:
883
+ # type - Specifies the type of files to retrieve, valid values are : ALL, IMAGES, or DOCUMENTS
884
+ # source - Specifies to retrieve files from a particular source, valid values are :
885
+ # ALL - (default) files from all sources
886
+ # MyComputer
887
+ # StockImage
888
+ # Facebook
889
+ # Instagram
890
+ # Shutterstock
891
+ # Mobile
892
+ # limit - Specifies the number of results displayed per page of output, from 1 - 1000, default = 50.
893
+ # @return [ResultSet<LibraryFile>]
894
+ def get_library_files(params = {})
895
+ Services::LibraryService.get_library_files(params)
896
+ end
897
+
898
+
899
+ # Retrieves all files from a MyLibrary folder specified by the folder_id path parameter
900
+ # @param [String] folder_id - Specifies the folder from which to retrieve files
901
+ # @param [Hash] params - hash of query parameters and values to append to the request.
902
+ # Allowed parameters include:
903
+ # limit - Specifies the number of results displayed per page of output, from 1 - 50, default = 50.
904
+ # @return [ResultSet<LibraryFile>]
905
+ def get_library_files_by_folder(folder_id, params = {})
906
+ Services::LibraryService.get_library_files_by_folder(folder_id, params)
907
+ end
908
+
909
+
910
+ # Retrieve a MyLibrary file using the file_id path parameter
911
+ # @param [String] file_id - Specifies the MyLibrary file for which to retrieve information
912
+ # @return [LibraryFile]
913
+ def get_library_file(file_id)
914
+ Services::LibraryService.get_library_file(file_id)
915
+ end
916
+
917
+
918
+ # Adds a new MyLibrary file using the multipart content-type
919
+ # @param [String] file_name - The name of the file (ie: dinnerplate-special.jpg)
920
+ # @param [String] folder_id - Folder id to add the file to
921
+ # @param [String] description - The description of the file provided by user
922
+ # @param [String] source - indicates the source of the original file;
923
+ # image files can be uploaded from the following sources :
924
+ # MyComputer, StockImage, Facebook - MyLibrary Plus customers only,
925
+ # Instagram - MyLibrary Plus customers only, Shutterstock, Mobile
926
+ # @param [String] file_type - Specifies the file type, valid values are: JPEG, JPG, GIF, PDF, PNG
927
+ # @param [String] contents - The content of the file
928
+ # @return [LibraryFile]
929
+ def add_library_file(file_name, folder_id, description, source, file_type, contents)
930
+ Services::LibraryService.add_library_file(file_name, folder_id, description, source, file_type, contents)
931
+ end
932
+
933
+
934
+ # Update information for a specific MyLibrary file
935
+ # @param [LibraryFile] file - Library File to be updated
936
+ # @return [LibraryFile]
937
+ def update_library_file(file)
938
+ Services::LibraryService.update_library_file(file)
939
+ end
940
+
941
+
942
+ # Delete one or more MyLibrary files specified by the fileId path parameter;
943
+ # separate multiple file IDs with a comma.
944
+ # Deleted files are moved from their current folder into the system Trash folder, and its status is set to Deleted.
945
+ # @param [String] file_id - Specifies the MyLibrary file to delete
946
+ # @return [Boolean]
947
+ def delete_library_file(file_id)
948
+ Services::LibraryService.delete_library_file(file_id)
949
+ end
950
+
951
+
952
+ # Retrieve the upload status for one or more MyLibrary files using the file_id path parameter;
953
+ # separate multiple file IDs with a comma
954
+ # @param [String] file_id - Specifies the files for which to retrieve upload status information
955
+ # @return [Array<UploadStatus>]
956
+ def get_library_files_upload_status(file_id)
957
+ Services::LibraryService.get_library_files_upload_status(file_id)
958
+ end
959
+
960
+
961
+ # Move one or more MyLibrary files to a different folder in the user's account
962
+ # specify the destination folder using the folder_id path parameter.
963
+ # @param [String] folder_id - Specifies the destination MyLibrary folder to which the files will be moved
964
+ # @param [String] file_id - Specifies the files to move, in a string of comma separated file ids (e.g. 8,9)
965
+ # @return [Array<MoveResults>]
966
+ def move_library_files(folder_id, file_id)
967
+ Services::LibraryService.move_library_files(folder_id, file_id)
968
+ end
969
+
970
+
971
+
972
+ private
973
+
974
+
975
+ # Get the id of object, or attempt to convert the argument to an int
976
+ # @param [Mixed] item - object or a numeric value
977
+ # @param [String] class_name - class name to test the given object against
978
+ # @raise IllegalArgumentException - if the item is not an instance of the class name given, or cannot be
979
+ # converted to a numeric value
980
+ # @return [Integer]
981
+ def to_id(item, class_name)
982
+ item_id = nil
983
+ if item.is_a?(Integer)
984
+ item_id = item
985
+ elsif item.class.to_s.split('::').last == class_name
986
+ item_id = item.id
987
+ else
988
+ raise Exceptions::IllegalArgumentException.new(sprintf(Util::Config.get('errors.id_or_object'), class_name))
989
+ end
990
+ item_id
991
+ end
992
+
993
+
994
+ # Append the limit parameter, if the value is an integer
995
+ # @param [String] param - parameter value
996
+ # @return [Hash] the parameters as a hash object
997
+ def determine_param(param)
998
+ params = {}
999
+ if param
1000
+ param = param.to_s
1001
+ if param[0, 1] == '?'
1002
+ hash_params = CGI::parse(param[1..-1])
1003
+ params = Hash[*hash_params.collect {|key, value| [key, value.first] }.flatten]
1004
+ else
1005
+ params['limit'] = param
1006
+ end
1007
+ end
1008
+ params
1009
+ end
1010
+
1011
+ end
1012
+ end