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.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/README.md +136 -0
- data/constantcontact-ruby.gemspec +31 -0
- data/lib/constantcontact/api.rb +1012 -0
- data/lib/constantcontact/auth/oauth2.rb +105 -0
- data/lib/constantcontact/auth/session_data_store.rb +69 -0
- data/lib/constantcontact/components/account/account_address.rb +26 -0
- data/lib/constantcontact/components/account/account_info.rb +38 -0
- data/lib/constantcontact/components/account/verified_email_address.rb +26 -0
- data/lib/constantcontact/components/activities/activity.rb +43 -0
- data/lib/constantcontact/components/activities/activity_error.rb +26 -0
- data/lib/constantcontact/components/activities/add_contacts.rb +127 -0
- data/lib/constantcontact/components/activities/add_contacts_import_data.rb +46 -0
- data/lib/constantcontact/components/activities/export_contacts.rb +30 -0
- data/lib/constantcontact/components/component.rb +48 -0
- data/lib/constantcontact/components/contacts/address.rb +27 -0
- data/lib/constantcontact/components/contacts/contact.rb +92 -0
- data/lib/constantcontact/components/contacts/contact_list.rb +26 -0
- data/lib/constantcontact/components/contacts/custom_field.rb +26 -0
- data/lib/constantcontact/components/contacts/email_address.rb +33 -0
- data/lib/constantcontact/components/contacts/note.rb +26 -0
- data/lib/constantcontact/components/email_marketing/campaign.rb +83 -0
- data/lib/constantcontact/components/email_marketing/campaign_preview.rb +29 -0
- data/lib/constantcontact/components/email_marketing/click_through_details.rb +27 -0
- data/lib/constantcontact/components/email_marketing/message_footer.rb +29 -0
- data/lib/constantcontact/components/email_marketing/schedule.rb +27 -0
- data/lib/constantcontact/components/email_marketing/test_send.rb +45 -0
- data/lib/constantcontact/components/event_spot/contact.rb +27 -0
- data/lib/constantcontact/components/event_spot/event.rb +69 -0
- data/lib/constantcontact/components/event_spot/event_address.rb +29 -0
- data/lib/constantcontact/components/event_spot/event_fee.rb +27 -0
- data/lib/constantcontact/components/event_spot/event_item.rb +36 -0
- data/lib/constantcontact/components/event_spot/event_item_attribute.rb +26 -0
- data/lib/constantcontact/components/event_spot/event_track.rb +31 -0
- data/lib/constantcontact/components/event_spot/guest.rb +31 -0
- data/lib/constantcontact/components/event_spot/guest_section.rb +34 -0
- data/lib/constantcontact/components/event_spot/notification_option.rb +27 -0
- data/lib/constantcontact/components/event_spot/online_meeting.rb +28 -0
- data/lib/constantcontact/components/event_spot/payment_address.rb +29 -0
- data/lib/constantcontact/components/event_spot/payment_summary.rb +33 -0
- data/lib/constantcontact/components/event_spot/promocode.rb +25 -0
- data/lib/constantcontact/components/event_spot/registrant.rb +52 -0
- data/lib/constantcontact/components/event_spot/registrant_fee.rb +29 -0
- data/lib/constantcontact/components/event_spot/registrant_field.rb +27 -0
- data/lib/constantcontact/components/event_spot/registrant_order.rb +39 -0
- data/lib/constantcontact/components/event_spot/registrant_promo_code.rb +31 -0
- data/lib/constantcontact/components/event_spot/registrant_promo_code_info.rb +27 -0
- data/lib/constantcontact/components/event_spot/registrant_section.rb +34 -0
- data/lib/constantcontact/components/event_spot/sale_item.rb +29 -0
- data/lib/constantcontact/components/library/file/library_file.rb +27 -0
- data/lib/constantcontact/components/library/folder/library_folder.rb +26 -0
- data/lib/constantcontact/components/library/info/library_summary.rb +26 -0
- data/lib/constantcontact/components/library/info/move_results.rb +26 -0
- data/lib/constantcontact/components/library/info/upload_status.rb +26 -0
- data/lib/constantcontact/components/result_set.rb +50 -0
- data/lib/constantcontact/components/tracking/bounce_activity.rb +28 -0
- data/lib/constantcontact/components/tracking/click_activity.rb +26 -0
- data/lib/constantcontact/components/tracking/forward_activity.rb +26 -0
- data/lib/constantcontact/components/tracking/open_activity.rb +26 -0
- data/lib/constantcontact/components/tracking/send_activity.rb +27 -0
- data/lib/constantcontact/components/tracking/tracking_activity.rb +26 -0
- data/lib/constantcontact/components/tracking/tracking_summary.rb +27 -0
- data/lib/constantcontact/components/tracking/unsubscribe_activity.rb +27 -0
- data/lib/constantcontact/exceptions/ctct_exception.rb +25 -0
- data/lib/constantcontact/exceptions/illegal_argument_exception.rb +11 -0
- data/lib/constantcontact/exceptions/oauth2_exception.rb +11 -0
- data/lib/constantcontact/exceptions/webhooks_exception.rb +11 -0
- data/lib/constantcontact/services/account_service.rb +39 -0
- data/lib/constantcontact/services/activity_service.rb +136 -0
- data/lib/constantcontact/services/base_service.rb +68 -0
- data/lib/constantcontact/services/campaign_schedule_service.rb +101 -0
- data/lib/constantcontact/services/campaign_tracking_service.rb +152 -0
- data/lib/constantcontact/services/contact_service.rb +105 -0
- data/lib/constantcontact/services/contact_tracking_service.rb +152 -0
- data/lib/constantcontact/services/email_marketing_service.rb +94 -0
- data/lib/constantcontact/services/event_spot_service.rb +448 -0
- data/lib/constantcontact/services/library_service.rb +281 -0
- data/lib/constantcontact/services/list_service.rb +81 -0
- data/lib/constantcontact/util/config.rb +180 -0
- data/lib/constantcontact/util/helpers.rb +27 -0
- data/lib/constantcontact/version.rb +12 -0
- data/lib/constantcontact/webhooks/helpers/validator.rb +30 -0
- data/lib/constantcontact/webhooks/models/billing_change_notification.rb +27 -0
- data/lib/constantcontact/webhooks/webhooks_util.rb +45 -0
- data/lib/constantcontact.rb +124 -0
- data/spec/constantcontact/api_spec.rb +1560 -0
- data/spec/constantcontact/auth/oauth2_spec.rb +125 -0
- data/spec/constantcontact/components/contacts/address_spec.rb +18 -0
- data/spec/constantcontact/components/contacts/contact_list_spec.rb +18 -0
- data/spec/constantcontact/components/contacts/contact_spec.rb +18 -0
- data/spec/constantcontact/components/contacts/custom_field_spec.rb +18 -0
- data/spec/constantcontact/components/contacts/email_address_spec.rb +18 -0
- data/spec/constantcontact/sdk_spec.rb +24 -0
- data/spec/constantcontact/services/account_service_spec.rb +46 -0
- data/spec/constantcontact/services/activity_service_spec.rb +244 -0
- data/spec/constantcontact/services/base_service_spec.rb +50 -0
- data/spec/constantcontact/services/campaign_schedule_service_spec.rb +115 -0
- data/spec/constantcontact/services/campaign_tracking_service_spec.rb +131 -0
- data/spec/constantcontact/services/contact_service_spec.rb +111 -0
- data/spec/constantcontact/services/contact_tracking_service_spec.rb +131 -0
- data/spec/constantcontact/services/email_marketing_spec.rb +100 -0
- data/spec/constantcontact/services/event_spot_spec.rb +423 -0
- data/spec/constantcontact/services/library_service_spec.rb +252 -0
- data/spec/constantcontact/services/list_service_spec.rb +89 -0
- data/spec/constantcontact/webhooks/webhooks_spec.rb +26 -0
- metadata +243 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
#
|
2
|
+
# contact.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class Contact < Component
|
10
|
+
|
11
|
+
attr_accessor :id, :status, :first_name, :middle_name, :last_name, :confirmed, :email_addresses,
|
12
|
+
:prefix_name, :job_title, :addresses, :company_name, :home_phone,
|
13
|
+
:work_phone, :cell_phone, :fax, :custom_fields, :lists,
|
14
|
+
:source_details, :notes, :source
|
15
|
+
|
16
|
+
|
17
|
+
# Factory method to create a Contact object from a json string
|
18
|
+
# @param [Hash] props - properties to create object from
|
19
|
+
# @return [Contact]
|
20
|
+
def self.create(props)
|
21
|
+
obj = Contact.new
|
22
|
+
if props
|
23
|
+
props.each do |key, value|
|
24
|
+
if key == 'email_addresses'
|
25
|
+
if value
|
26
|
+
obj.email_addresses = []
|
27
|
+
value.each do |email_address|
|
28
|
+
obj.email_addresses << Components::EmailAddress.create(email_address)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
elsif key == 'addresses'
|
32
|
+
if value
|
33
|
+
obj.addresses = []
|
34
|
+
value.each do |address|
|
35
|
+
obj.addresses << Components::Address.create(address)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
elsif key == 'notes'
|
39
|
+
if value
|
40
|
+
obj.notes = []
|
41
|
+
value.each do |note|
|
42
|
+
obj.notes << Components::Note.create(note)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
elsif key == 'custom_fields'
|
46
|
+
if value
|
47
|
+
obj.custom_fields = []
|
48
|
+
value.each do |custom_field|
|
49
|
+
obj.custom_fields << Components::CustomField.create(custom_field)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
elsif key == 'lists'
|
53
|
+
if value
|
54
|
+
obj.lists = []
|
55
|
+
value.each do |contact_list|
|
56
|
+
obj.lists << Components::ContactList.create(contact_list)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
else
|
60
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
obj
|
65
|
+
end
|
66
|
+
|
67
|
+
# Setter
|
68
|
+
# @param [ContactList] contact_list
|
69
|
+
def add_list(contact_list)
|
70
|
+
@lists = [] if @lists.nil?
|
71
|
+
@lists << contact_list
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# Setter
|
76
|
+
# @param [EmailAddress] email_address
|
77
|
+
def add_email(email_address)
|
78
|
+
@email_addresses = [] if @email_addresses.nil?
|
79
|
+
@email_addresses << email_address
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
# Setter
|
84
|
+
# @param [Address] address
|
85
|
+
def add_address(address)
|
86
|
+
@addresses = [] if @addresses.nil?
|
87
|
+
@addresses << address
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# contact_list.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class ContactList < Component
|
10
|
+
attr_accessor :id, :name, :status, :contact_count
|
11
|
+
|
12
|
+
# Factory method to create a ContactList object from a json string
|
13
|
+
# @param [Hash] props - properties to create object from
|
14
|
+
# @return [ContactList]
|
15
|
+
def self.create(props)
|
16
|
+
obj = ContactList.new
|
17
|
+
if props
|
18
|
+
props.each do |key, value|
|
19
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
20
|
+
end
|
21
|
+
end
|
22
|
+
obj
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# custom_field.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class CustomField < Component
|
10
|
+
attr_accessor :name, :value
|
11
|
+
|
12
|
+
# Factory method to create a CustomField object from a json string
|
13
|
+
# @param [Hash] props - properties to create object from
|
14
|
+
# @return [CustomField]
|
15
|
+
def self.create(props)
|
16
|
+
obj = CustomField.new
|
17
|
+
if props
|
18
|
+
props.each do |key, value|
|
19
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
20
|
+
end
|
21
|
+
end
|
22
|
+
obj
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# email_address.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class EmailAddress < Component
|
10
|
+
attr_accessor :id, :status, :confirm_status, :opt_in_source, :opt_in_date, :opt_out_date, :email_address
|
11
|
+
|
12
|
+
# Class constructor
|
13
|
+
# @param [String] email_address
|
14
|
+
# @return [EmailAddress]
|
15
|
+
def initialize(email_address = nil)
|
16
|
+
@email_address = email_address if email_address
|
17
|
+
end
|
18
|
+
|
19
|
+
# Factory method to create an EmailAddress object from a json string
|
20
|
+
# @param [Hash] props - properties to create object from
|
21
|
+
# @return [EmailAddress]
|
22
|
+
def self.create(props)
|
23
|
+
obj = EmailAddress.new
|
24
|
+
if props
|
25
|
+
props.each do |key, value|
|
26
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
27
|
+
end
|
28
|
+
end
|
29
|
+
obj
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# note.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class Note < Component
|
10
|
+
attr_accessor :id, :note, :created_date, :modified_date
|
11
|
+
|
12
|
+
# Factory method to create a Note object from a json string
|
13
|
+
# @param [String] props - properties to create object from
|
14
|
+
# @return Note
|
15
|
+
def self.create(props)
|
16
|
+
note = Note.new
|
17
|
+
if props
|
18
|
+
props.each do |key, value|
|
19
|
+
note.send("#{key}=", value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
note
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#
|
2
|
+
# campaign.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class Campaign < Component
|
10
|
+
attr_accessor :id, :name, :subject, :status, :from_name, :from_email, :reply_to_email, :template_type,
|
11
|
+
:created_date, :modified_date, :last_run_date, :next_run_date,
|
12
|
+
:is_permission_reminder_enabled, :permission_reminder_text,
|
13
|
+
:is_view_as_webpage_enabled, :view_as_web_page_text, :view_as_web_page_link_text,
|
14
|
+
:greeting_salutations, :greeting_name, :greeting_string, :email_content, :text_content,
|
15
|
+
:message_footer, :tracking_summary, :email_content_format, :style_sheet, :sent_to_contact_lists,
|
16
|
+
:click_through_details, :permalink_url
|
17
|
+
|
18
|
+
|
19
|
+
# Factory method to create a Campaign object from an array
|
20
|
+
# @param [Hash] props - properties to create object from
|
21
|
+
# @return [Campaign]
|
22
|
+
def self.create(props)
|
23
|
+
campaign = Campaign.new
|
24
|
+
if props
|
25
|
+
props.each do |key, value|
|
26
|
+
if key == 'message_footer'
|
27
|
+
campaign.message_footer = Components::MessageFooter.create(value)
|
28
|
+
elsif key == 'tracking_summary'
|
29
|
+
campaign.tracking_summary = Components::TrackingSummary.create(value)
|
30
|
+
elsif key == 'sent_to_contact_lists'
|
31
|
+
if value
|
32
|
+
campaign.sent_to_contact_lists = []
|
33
|
+
value.each do |sent_to_contact_list|
|
34
|
+
campaign.sent_to_contact_lists << Components::ContactList.create(sent_to_contact_list)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
elsif key == 'click_through_details'
|
38
|
+
if value
|
39
|
+
campaign.click_through_details = []
|
40
|
+
value.each do |click_through_details|
|
41
|
+
campaign.click_through_details << Components::ClickThroughDetails.create(click_through_details)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
else
|
45
|
+
campaign.send("#{key}=", value) if campaign.respond_to? key
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
campaign
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# Factory method to create a Campaign object from an array
|
54
|
+
# @param [Hash] props - hash of initial properties to set
|
55
|
+
# @return [Campaign]
|
56
|
+
def self.create_summary(props)
|
57
|
+
campaign = Campaign.new
|
58
|
+
if props
|
59
|
+
props.each do |key, value|
|
60
|
+
campaign.send("#{key}=", value) if campaign.respond_to? key
|
61
|
+
end
|
62
|
+
end
|
63
|
+
campaign
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
# Add a contact list to set of lists associated with this email
|
68
|
+
# @param [Mixed] contact_list - Contact list id, or ContactList object
|
69
|
+
def add_list(contact_list)
|
70
|
+
if contact_list.instance_of?(ContactList)
|
71
|
+
list = contact_list
|
72
|
+
elsif contact_list.to_i.to_s == contact_list
|
73
|
+
list = ContactList.new(contact_list)
|
74
|
+
else
|
75
|
+
raise Exceptions::IllegalArgumentException, sprintf(Util::Config.get('errors.id_or_object'), 'ContactList')
|
76
|
+
end
|
77
|
+
|
78
|
+
@sent_to_contact_lists << list
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# campaign_preview.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class CampaignPreview < Component
|
10
|
+
attr_accessor :from_email, :preview_email_content, :preview_text_content,
|
11
|
+
:reply_to_email, :subject
|
12
|
+
|
13
|
+
|
14
|
+
# Factory method to create a CampaignPreview object from an array
|
15
|
+
# @param [Hash] props - properties to create object from
|
16
|
+
# @return [CampaignPreview]
|
17
|
+
def self.create(props)
|
18
|
+
obj = CampaignPreview.new
|
19
|
+
if props
|
20
|
+
props.each do |key, value|
|
21
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
22
|
+
end
|
23
|
+
end
|
24
|
+
obj
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# click_through_details.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class ClickThroughDetails < Component
|
10
|
+
attr_accessor :url, :url_uid, :click_count
|
11
|
+
|
12
|
+
|
13
|
+
# Factory method to create an ClickThroughDetails object from an array
|
14
|
+
# @param [Hash] props - properties to create object from
|
15
|
+
# @return [ClickThroughDetails]
|
16
|
+
def self.create(props)
|
17
|
+
obj = ClickThroughDetails.new
|
18
|
+
if props
|
19
|
+
props.each do |key, value|
|
20
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
21
|
+
end
|
22
|
+
end
|
23
|
+
obj
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# message_footer.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class MessageFooter < Component
|
10
|
+
attr_accessor :city, :state, :country, :organization_name, :address_line_1,
|
11
|
+
:address_line_2, :address_line_3, :international_state,
|
12
|
+
:postal_code, :include_forward_email, :forward_email_link_text,
|
13
|
+
:include_subscribe_link, :subscribe_link_text
|
14
|
+
|
15
|
+
# Factory method to create a MessageFooter object from an array
|
16
|
+
# @param [Hash] props - properties to create object from
|
17
|
+
# @return [MessageFooter]
|
18
|
+
def self.create(props)
|
19
|
+
obj = MessageFooter.new
|
20
|
+
if props
|
21
|
+
props.each do |key, value|
|
22
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
23
|
+
end
|
24
|
+
end
|
25
|
+
obj
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# schedule.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class Schedule < Component
|
10
|
+
attr_accessor :id, :scheduled_date
|
11
|
+
|
12
|
+
|
13
|
+
# Factory method to create a Schedule object from an array
|
14
|
+
# @param [Hash] props - properties to create object from
|
15
|
+
# @return [Schedule]
|
16
|
+
def self.create(props)
|
17
|
+
obj = Schedule.new
|
18
|
+
if props
|
19
|
+
props.each do |key, value|
|
20
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
21
|
+
end
|
22
|
+
end
|
23
|
+
obj
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# test_send.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class TestSend < Component
|
10
|
+
attr_accessor :format, :personal_message, :email_addresses
|
11
|
+
|
12
|
+
|
13
|
+
# Factory method to create a TestSend object from an array
|
14
|
+
# @param [Hash] props - properties to create object from
|
15
|
+
# @return [TestSend]
|
16
|
+
def self.create(props)
|
17
|
+
obj = TestSend.new
|
18
|
+
if props
|
19
|
+
props.each do |key, value|
|
20
|
+
if key == 'email_addresses'
|
21
|
+
if value
|
22
|
+
obj.email_addresses = []
|
23
|
+
value.each do |email_address|
|
24
|
+
obj.email_addresses << email_address
|
25
|
+
end
|
26
|
+
end
|
27
|
+
else
|
28
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
obj
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
# Add an email address to the set of addresses to send the test send too
|
37
|
+
# @param [String] email_address
|
38
|
+
def add_email(email_address)
|
39
|
+
@email_addresses = [] if @email_addresses.nil?
|
40
|
+
@email_addresses << email_address
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# contact.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
module EventSpot
|
10
|
+
class Contact < Component
|
11
|
+
attr_accessor :email_address, :name, :organization_name, :phone_number
|
12
|
+
|
13
|
+
# Factory method to create an event host Contact object from a hash
|
14
|
+
# @param [Hash] props - hash of properties to create object from
|
15
|
+
# @return [Campaign]
|
16
|
+
def self.create(props)
|
17
|
+
obj = Contact.new
|
18
|
+
props.each do |key, value|
|
19
|
+
key = key.to_s
|
20
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
21
|
+
end if props
|
22
|
+
obj
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#
|
2
|
+
# event.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class Event < Component
|
10
|
+
attr_accessor :active_date, :address, :are_registrants_public, :cancelled_date, :contact, :created_date,
|
11
|
+
:currency_type, :deleted_date, :description, :end_date, :google_analytics_key, :google_merchant_id,
|
12
|
+
:id, :is_calendar_displayed, :is_checkin_available, :is_home_page_displayed,
|
13
|
+
:is_listed_in_external_directory, :is_map_displayed, :is_virtual_event, :location, :meta_data_tags,
|
14
|
+
:name, :notification_options, :online_meeting, :payable_to, :payment_address, :payment_options,
|
15
|
+
:paypal_account_email, :registration_url, :start_date, :status, :theme_name, :time_zone_description,
|
16
|
+
:time_zone_id, :title, :total_registered_count, :track_information, :twitter_hash_tag, :type,
|
17
|
+
:updated_date
|
18
|
+
|
19
|
+
# Factory method to create an Event object from a hash
|
20
|
+
# @param [Hash] props - hash of properties to create object from
|
21
|
+
# @return [Event]
|
22
|
+
def self.create(props)
|
23
|
+
obj = Event.new
|
24
|
+
if props
|
25
|
+
props.each do |key, value|
|
26
|
+
key = key.to_s
|
27
|
+
if key == 'address'
|
28
|
+
obj.address = Components::EventSpot::EventAddress.create(value)
|
29
|
+
elsif key == 'contact'
|
30
|
+
obj.contact = Components::EventSpot::Contact.create(value)
|
31
|
+
elsif key == 'notification_options'
|
32
|
+
value ||= []
|
33
|
+
obj.notification_options = value.collect{|option| Components::EventSpot::NotificationOption.create(option) }
|
34
|
+
elsif key == 'online_meeting'
|
35
|
+
obj.online_meeting = Components::EventSpot::OnlineMeeting.create(value)
|
36
|
+
elsif key == 'payment_adress'
|
37
|
+
obj.payment_adress = Components::EventSpot::PaymentAddress.create(value)
|
38
|
+
elsif key == 'track_information'
|
39
|
+
value ||= []
|
40
|
+
obj.track_information = Components::EventSpot::EventTrack.create(value)
|
41
|
+
else
|
42
|
+
obj.send("#{key}=", value) if obj.respond_to?("#{key}=")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
obj
|
47
|
+
end
|
48
|
+
|
49
|
+
# Factory method to create a summary Event object from a hash
|
50
|
+
# @param [Hash] props - hash of properties to create object from
|
51
|
+
# @return [Event]
|
52
|
+
def self.create_summary(props)
|
53
|
+
obj = Event.new
|
54
|
+
if props
|
55
|
+
props.each do |key, value|
|
56
|
+
key = key.to_s
|
57
|
+
if key == 'address'
|
58
|
+
obj.address = Components::EventSpot::EventAddress.create(value)
|
59
|
+
else
|
60
|
+
obj.send("#{key}=", value) if obj.respond_to?("#{key}=")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
obj
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# event_address.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
module EventSpot
|
10
|
+
class EventAddress < Component
|
11
|
+
attr_accessor :city, :country, :country_code, :latitude, :line1, :line2, :line3, :longitude, :postal_code,
|
12
|
+
:state, :state_code
|
13
|
+
|
14
|
+
# Factory method to create an EventAddress object from a json string
|
15
|
+
# @param [Hash] props - properties to create object from
|
16
|
+
# @return [EventAddress]
|
17
|
+
def self.create(props)
|
18
|
+
obj = EventAddress.new
|
19
|
+
if props
|
20
|
+
props.each do |key, value|
|
21
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
22
|
+
end
|
23
|
+
end
|
24
|
+
obj
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# event_fee.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class EventFee < Component
|
10
|
+
attr_accessor :early_fee, :fee, :fee_scope, :id, :label, :late_fee
|
11
|
+
|
12
|
+
# Factory method to create an event Fee object from a hash
|
13
|
+
# @param [Hash] props - hash of properties to create object from
|
14
|
+
# @return [EventFee]
|
15
|
+
def self.create(props)
|
16
|
+
obj = EventFee.new
|
17
|
+
if props
|
18
|
+
props.each do |key, value|
|
19
|
+
key = key.to_s
|
20
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
21
|
+
end
|
22
|
+
end
|
23
|
+
obj
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#
|
2
|
+
# event_item.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class EventItem < Component
|
10
|
+
attr_accessor :attributes, :default_quantity_available, :default_quantity_total, :description,
|
11
|
+
:id, :name, :per_registrant_limit, :price, :show_quantity_available
|
12
|
+
|
13
|
+
# Factory method to create an EventItem object from a hash
|
14
|
+
# @param [Hash] props - properties to create object from
|
15
|
+
# @return [EventItem]
|
16
|
+
def self.create(props)
|
17
|
+
obj = EventItem.new
|
18
|
+
if props
|
19
|
+
props.each do |key, value|
|
20
|
+
if key == 'attributes'
|
21
|
+
if value
|
22
|
+
obj.attributes = []
|
23
|
+
value.each do |attribute|
|
24
|
+
obj.attributes << Components::EventItemAttribute.create(attribute)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
else
|
28
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
obj
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# event_item_attribute.rb
|
3
|
+
# ConstantContact
|
4
|
+
#
|
5
|
+
# Copyright (c) 2013 Constant Contact. All rights reserved.
|
6
|
+
|
7
|
+
module ConstantContact
|
8
|
+
module Components
|
9
|
+
class EventItemAttribute < Component
|
10
|
+
attr_accessor :id, :name, :quantity_available, :quantity_total
|
11
|
+
|
12
|
+
# Factory method to create an EventItemAttribute object from a hash
|
13
|
+
# @param [Hash] props - properties to create object from
|
14
|
+
# @return [EventItemAttribute]
|
15
|
+
def self.create(props)
|
16
|
+
obj = EventItemAttribute.new
|
17
|
+
if props
|
18
|
+
props.each do |key, value|
|
19
|
+
obj.send("#{key}=", value) if obj.respond_to? key
|
20
|
+
end
|
21
|
+
end
|
22
|
+
obj
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|