constantcontact 2.0.1 → 2.1.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 +4 -4
- data/README.md +7 -1
- data/constantcontact.gemspec +1 -1
- data/lib/constantcontact/components/activities/add_contacts.rb +67 -57
- data/lib/constantcontact/components/activities/add_contacts_import_data.rb +4 -3
- data/lib/constantcontact/util/config.rb +3 -0
- data/lib/constantcontact/version.rb +1 -1
- data/spec/constantcontact/api_spec.rb +65 -21
- data/spec/constantcontact/services/activity_service_spec.rb +65 -21
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f28974a36aa166d1ec1e5aa197fb2d528ccd244d
|
|
4
|
+
data.tar.gz: a3343897602d9c14ba3a09d4aadbf4383f8917f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e928981912c3b26ae556ede64e13dd75a421dbf75a84ad60f0bbfda6ad1ac2182381732ccf5ce3e54bb12249feb13322b2bd5804f2e1b3fa7be920630847b59e
|
|
7
|
+
data.tar.gz: 4aebc30eb29335a52a6a541ac23b071bac5bf02f55bcd7aa469d6c8a124fde72d19a76e3c1e674b5f919d54bd7e2672fd77d5942cb66633ef21ec92740780dd0
|
data/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Installation
|
|
|
9
9
|
====
|
|
10
10
|
Via bundler:
|
|
11
11
|
```ruby
|
|
12
|
-
gem 'constantcontact', '~> 2.0
|
|
12
|
+
gem 'constantcontact', '~> 2.1.0'
|
|
13
13
|
```
|
|
14
14
|
Otherwise:
|
|
15
15
|
```bash
|
|
@@ -27,6 +27,12 @@ ConstantContact::Util::Config.configure do |config|
|
|
|
27
27
|
end
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
Documentation
|
|
31
|
+
=====
|
|
32
|
+
SDK Documentation is hosted at http://constantcontact.github.io/ruby-sdk
|
|
33
|
+
|
|
34
|
+
API Documentation is located at http://developer.constantcontact.com/docs/developer-guides/api-documentation-index.html
|
|
35
|
+
|
|
30
36
|
Getting Started
|
|
31
37
|
====
|
|
32
38
|
AppConnect requires an OAuth access token which will give your app access to Constant Contact data and services for the accout that granted that access token.
|
data/constantcontact.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "constantcontact"
|
|
8
|
-
s.version = '2.0
|
|
8
|
+
s.version = '2.1.0'
|
|
9
9
|
s.platform = Gem::Platform::RUBY
|
|
10
10
|
s.authors = ["ConstantContact"]
|
|
11
11
|
s.homepage = "http://www.constantcontact.com"
|
|
@@ -30,85 +30,95 @@ module ConstantContact
|
|
|
30
30
|
if column_names.empty?
|
|
31
31
|
used_columns = [Util::Config.get('activities_columns.email')]
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
contacts.each do |contact|
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
if !contact.first_name.nil?
|
|
36
|
+
used_columns << Util::Config.get('activities_columns.first_name')
|
|
37
|
+
end
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
if !contact.middle_name.nil?
|
|
40
|
+
used_columns << Util::Config.get('activities_columns.middle_name')
|
|
41
|
+
end
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
if !contact.last_name.nil?
|
|
44
|
+
used_columns << Util::Config.get('activities_columns.last_name')
|
|
45
|
+
end
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
if !contact.birthday_day.nil?
|
|
48
|
+
used_columns << Util::Config.get('activities_columns.birthday_day')
|
|
49
|
+
end
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
if !contact.birthday_month.nil?
|
|
52
|
+
used_columns << Util::Config.get('activities_columns.birthday_month')
|
|
53
|
+
end
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
if !contact.anniversary.nil?
|
|
56
|
+
used_columns << Util::Config.get('activities_columns.anniversary')
|
|
57
|
+
end
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
if !contact.job_title.nil?
|
|
60
|
+
used_columns << Util::Config.get('activities_columns.job_title')
|
|
61
|
+
end
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
if !contact.company_name.nil?
|
|
64
|
+
used_columns << Util::Config.get('activities_columns.company_name')
|
|
65
|
+
end
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
if !contact.work_phone.nil?
|
|
68
|
+
used_columns << Util::Config.get('activities_columns.work_phone')
|
|
69
|
+
end
|
|
68
70
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
if !contact.home_phone.nil?
|
|
72
|
+
used_columns << Util::Config.get('activities_columns.home_phone')
|
|
73
|
+
end
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
used_columns << Util::Config.get('activities_columns.address3')
|
|
75
|
-
end
|
|
75
|
+
contact.addresses.each do |address|
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
if !address.line1.nil?
|
|
78
|
+
used_columns << Util::Config.get('activities_columns.address1')
|
|
79
|
+
end
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
if !address.line2.nil?
|
|
82
|
+
used_columns << Util::Config.get('activities_columns.address2')
|
|
83
|
+
end
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
if !address.line3.nil?
|
|
86
|
+
used_columns << Util::Config.get('activities_columns.address3')
|
|
87
|
+
end
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
if !address.city.nil?
|
|
90
|
+
used_columns << Util::Config.get('activities_columns.city')
|
|
91
|
+
end
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
if !address.state_code.nil?
|
|
94
|
+
used_columns << Util::Config.get('activities_columns.state')
|
|
95
|
+
end
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
if !address.country_code.nil?
|
|
98
|
+
used_columns << Util::Config.get('activities_columns.country')
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
if !address.postal_code.nil?
|
|
102
|
+
used_columns << Util::Config.get('activities_columns.postal_code')
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
if !address.sub_postal_code.nil?
|
|
106
|
+
used_columns << Util::Config.get('activities_columns.sub_postal_code')
|
|
107
|
+
end
|
|
108
|
+
end
|
|
100
109
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
# Custom Fields
|
|
111
|
+
if !contact.custom_fields.nil?
|
|
112
|
+
contact.custom_fields.each do |custom_field|
|
|
113
|
+
if custom_field.name.match('custom_field_')
|
|
114
|
+
custom_field_number = custom_field.name[13, custom_field.name.length]
|
|
115
|
+
used_columns << Util::Config.get('activities_columns.custom_field_' + custom_field_number)
|
|
116
|
+
end
|
|
107
117
|
end
|
|
108
118
|
end
|
|
109
119
|
end
|
|
110
120
|
|
|
111
|
-
@column_names = used_columns
|
|
121
|
+
@column_names = used_columns.uniq
|
|
112
122
|
end
|
|
113
123
|
end
|
|
114
124
|
|
|
@@ -8,15 +8,16 @@ module ConstantContact
|
|
|
8
8
|
module Components
|
|
9
9
|
class AddContactsImportData < Component
|
|
10
10
|
attr_accessor :first_name, :middle_name, :last_name, :job_title, :company_name,
|
|
11
|
-
:work_phone, :home_phone, :
|
|
11
|
+
:work_phone, :home_phone, :birthday_month, :birthday_day, :anniversary,
|
|
12
|
+
:email_addresses, :addresses, :custom_fields
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
# Constructor to create an AddContactsImportData object from the given hash
|
|
15
16
|
# @param [Hash] props - properties to create object from
|
|
16
17
|
# @return [AddContactsImportData]
|
|
17
18
|
def initialize(props = {})
|
|
18
|
-
|
|
19
|
-
send("#{
|
|
19
|
+
props.each do |key, value|
|
|
20
|
+
send("#{key}=", value) if respond_to? key
|
|
20
21
|
end
|
|
21
22
|
end
|
|
22
23
|
|
|
@@ -100,6 +100,9 @@ module ConstantContact
|
|
|
100
100
|
:first_name => 'FIRST NAME',
|
|
101
101
|
:middle_name => 'MIDDLE NAME',
|
|
102
102
|
:last_name => 'LAST NAME',
|
|
103
|
+
:birthday_day => 'BIRTHDAY_DAY',
|
|
104
|
+
:birthday_month => 'BIRTHDAY_MONTH',
|
|
105
|
+
:anniversary => 'ANNIVERSARY',
|
|
103
106
|
:job_title => 'JOB TITLE',
|
|
104
107
|
:company_name => 'COMPANY NAME',
|
|
105
108
|
:work_phone => 'WORK PHONE',
|
|
@@ -1132,44 +1132,88 @@ describe ConstantContact::Api do
|
|
|
1132
1132
|
|
|
1133
1133
|
describe "#add_create_contacts_activity" do
|
|
1134
1134
|
it "adds an AddContacts activity to add contacts in bulk" do
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
json_contacts = load_file('contacts_response.json')
|
|
1135
|
+
json_request = load_file('add_contacts_request.json')
|
|
1136
|
+
json_response = load_file('add_contacts_response.json')
|
|
1138
1137
|
net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
|
|
1139
1138
|
|
|
1140
|
-
response = RestClient::Response.create(
|
|
1139
|
+
response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
|
|
1141
1140
|
RestClient.stub(:post).and_return(response)
|
|
1142
1141
|
|
|
1143
|
-
|
|
1142
|
+
contacts = []
|
|
1143
|
+
|
|
1144
|
+
# first contact
|
|
1145
|
+
import = ConstantContact::Components::AddContactsImportData.new({
|
|
1146
|
+
:first_name => "John",
|
|
1147
|
+
:last_name => "Smith",
|
|
1148
|
+
:birthday_month => "1",
|
|
1149
|
+
:birthday_day => "25",
|
|
1150
|
+
:anniversary => "03/12/2005",
|
|
1151
|
+
:job_title => "",
|
|
1152
|
+
:company_name => "My Company",
|
|
1153
|
+
:home_phone => "5555551212"
|
|
1154
|
+
})
|
|
1155
|
+
|
|
1156
|
+
# add emails
|
|
1157
|
+
import.add_email("user1@example.com")
|
|
1158
|
+
|
|
1159
|
+
# add addresses
|
|
1144
1160
|
address = ConstantContact::Components::Address.create(
|
|
1145
|
-
:line1
|
|
1146
|
-
:
|
|
1147
|
-
:
|
|
1161
|
+
:line1 => "123 Partridge Lane",
|
|
1162
|
+
:line2 => "Apt. 3",
|
|
1163
|
+
:city => "Anytown",
|
|
1164
|
+
:address_type => "PERSONAL",
|
|
1165
|
+
:state_code => "NH",
|
|
1166
|
+
:country_code => "US",
|
|
1167
|
+
:postal_code => "02145"
|
|
1148
1168
|
)
|
|
1149
1169
|
import.add_address(address)
|
|
1150
1170
|
|
|
1171
|
+
contacts << import
|
|
1172
|
+
|
|
1173
|
+
# second contact
|
|
1174
|
+
import = ConstantContact::Components::AddContactsImportData.new({
|
|
1175
|
+
:first_name => "Jane",
|
|
1176
|
+
:last_name => "Doe",
|
|
1177
|
+
:job_title => "",
|
|
1178
|
+
:company_name => "Acme, Inc.",
|
|
1179
|
+
:home_phone => "5555551213"
|
|
1180
|
+
})
|
|
1181
|
+
|
|
1182
|
+
# add emails
|
|
1183
|
+
import.add_email("user2@example.com")
|
|
1184
|
+
|
|
1185
|
+
# add addresses
|
|
1186
|
+
address = ConstantContact::Components::Address.create(
|
|
1187
|
+
:line1 => "456 Jones Road",
|
|
1188
|
+
:city => "AnyTownShip",
|
|
1189
|
+
:address_type => "PERSONAL",
|
|
1190
|
+
:state_code => "DE",
|
|
1191
|
+
:country_code => "US",
|
|
1192
|
+
:postal_code => "01234"
|
|
1193
|
+
)
|
|
1194
|
+
import.add_address(address)
|
|
1195
|
+
|
|
1196
|
+
# add custom fields
|
|
1151
1197
|
custom_field = ConstantContact::Components::CustomField.create(
|
|
1152
|
-
:name
|
|
1153
|
-
:value => "
|
|
1198
|
+
:name => "custom_field_6",
|
|
1199
|
+
:value => "Blue Jeans"
|
|
1200
|
+
)
|
|
1201
|
+
import.add_custom_field(custom_field)
|
|
1202
|
+
|
|
1203
|
+
custom_field = ConstantContact::Components::CustomField.create(
|
|
1204
|
+
:name => "custom_field_12",
|
|
1205
|
+
:value => "Special Order"
|
|
1154
1206
|
)
|
|
1155
1207
|
import.add_custom_field(custom_field)
|
|
1156
|
-
import.add_email("abc@def.com")
|
|
1157
1208
|
|
|
1158
|
-
contacts = []
|
|
1159
1209
|
contacts << import
|
|
1160
|
-
contacts_objects = JSON.parse(json_contacts)
|
|
1161
|
-
contacts_objects['results'].each do |contact|
|
|
1162
|
-
contacts << ConstantContact::Components::Contact.create(contact)
|
|
1163
|
-
end
|
|
1164
1210
|
|
|
1165
|
-
lists = []
|
|
1166
|
-
lists_objects = JSON.parse(json_lists)
|
|
1167
|
-
lists_objects.each do |list|
|
|
1168
|
-
lists << ConstantContact::Components::ContactList.create(list)
|
|
1169
|
-
end
|
|
1211
|
+
lists = ['4', '5', '6']
|
|
1170
1212
|
|
|
1171
1213
|
add_contact = ConstantContact::Components::AddContacts.new(contacts, lists)
|
|
1172
1214
|
|
|
1215
|
+
JSON.parse(json_request).should eq(JSON.parse(JSON.generate(add_contact)))
|
|
1216
|
+
|
|
1173
1217
|
activity = @api.add_create_contacts_activity(add_contact)
|
|
1174
1218
|
activity.should be_kind_of(ConstantContact::Components::Activity)
|
|
1175
1219
|
activity.type.should eq('ADD_CONTACTS')
|
|
@@ -41,44 +41,88 @@ describe ConstantContact::Services::ActivityService do
|
|
|
41
41
|
|
|
42
42
|
describe "#create_add_contacts_activity" do
|
|
43
43
|
it "creates an Add Contacts Activity" do
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
json_contacts = load_file('contacts_response.json')
|
|
44
|
+
json_request = load_file('add_contacts_request.json')
|
|
45
|
+
json_response = load_file('add_contacts_response.json')
|
|
47
46
|
net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
|
|
48
47
|
|
|
49
|
-
response = RestClient::Response.create(
|
|
48
|
+
response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
|
|
50
49
|
RestClient.stub(:post).and_return(response)
|
|
51
50
|
|
|
52
|
-
|
|
51
|
+
contacts = []
|
|
52
|
+
|
|
53
|
+
# first contact
|
|
54
|
+
import = ConstantContact::Components::AddContactsImportData.new({
|
|
55
|
+
:first_name => "John",
|
|
56
|
+
:last_name => "Smith",
|
|
57
|
+
:birthday_month => "1",
|
|
58
|
+
:birthday_day => "25",
|
|
59
|
+
:anniversary => "03/12/2005",
|
|
60
|
+
:job_title => "",
|
|
61
|
+
:company_name => "My Company",
|
|
62
|
+
:home_phone => "5555551212"
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
# add emails
|
|
66
|
+
import.add_email("user1@example.com")
|
|
67
|
+
|
|
68
|
+
# add addresses
|
|
69
|
+
address = ConstantContact::Components::Address.create(
|
|
70
|
+
:line1 => "123 Partridge Lane",
|
|
71
|
+
:line2 => "Apt. 3",
|
|
72
|
+
:city => "Anytown",
|
|
73
|
+
:address_type => "PERSONAL",
|
|
74
|
+
:state_code => "NH",
|
|
75
|
+
:country_code => "US",
|
|
76
|
+
:postal_code => "02145"
|
|
77
|
+
)
|
|
78
|
+
import.add_address(address)
|
|
79
|
+
|
|
80
|
+
contacts << import
|
|
81
|
+
|
|
82
|
+
# second contact
|
|
83
|
+
import = ConstantContact::Components::AddContactsImportData.new({
|
|
84
|
+
:first_name => "Jane",
|
|
85
|
+
:last_name => "Doe",
|
|
86
|
+
:job_title => "",
|
|
87
|
+
:company_name => "Acme, Inc.",
|
|
88
|
+
:home_phone => "5555551213"
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
# add emails
|
|
92
|
+
import.add_email("user2@example.com")
|
|
93
|
+
|
|
94
|
+
# add addresses
|
|
53
95
|
address = ConstantContact::Components::Address.create(
|
|
54
|
-
:line1
|
|
55
|
-
:city
|
|
56
|
-
:
|
|
96
|
+
:line1 => "456 Jones Road",
|
|
97
|
+
:city => "AnyTownShip",
|
|
98
|
+
:address_type => "PERSONAL",
|
|
99
|
+
:state_code => "DE",
|
|
100
|
+
:country_code => "US",
|
|
101
|
+
:postal_code => "01234"
|
|
57
102
|
)
|
|
58
103
|
import.add_address(address)
|
|
59
104
|
|
|
105
|
+
# add custom fields
|
|
60
106
|
custom_field = ConstantContact::Components::CustomField.create(
|
|
61
|
-
:name
|
|
62
|
-
:value => "
|
|
107
|
+
:name => "custom_field_6",
|
|
108
|
+
:value => "Blue Jeans"
|
|
109
|
+
)
|
|
110
|
+
import.add_custom_field(custom_field)
|
|
111
|
+
|
|
112
|
+
custom_field = ConstantContact::Components::CustomField.create(
|
|
113
|
+
:name => "custom_field_12",
|
|
114
|
+
:value => "Special Order"
|
|
63
115
|
)
|
|
64
116
|
import.add_custom_field(custom_field)
|
|
65
|
-
import.add_email("abc@def.com")
|
|
66
117
|
|
|
67
|
-
contacts = []
|
|
68
118
|
contacts << import
|
|
69
|
-
contacts_objects = JSON.parse(json_contacts)
|
|
70
|
-
contacts_objects['results'].each do |contact|
|
|
71
|
-
contacts << ConstantContact::Components::Contact.create(contact)
|
|
72
|
-
end
|
|
73
119
|
|
|
74
|
-
lists = []
|
|
75
|
-
lists_objects = JSON.parse(json_lists)
|
|
76
|
-
lists_objects.each do |list|
|
|
77
|
-
lists << ConstantContact::Components::ContactList.create(list)
|
|
78
|
-
end
|
|
120
|
+
lists = ['4', '5', '6']
|
|
79
121
|
|
|
80
122
|
add_contact = ConstantContact::Components::AddContacts.new(contacts, lists)
|
|
81
123
|
|
|
124
|
+
JSON.parse(json_request).should eq(JSON.parse(JSON.generate(add_contact)))
|
|
125
|
+
|
|
82
126
|
activity = ConstantContact::Services::ActivityService.create_add_contacts_activity(add_contact)
|
|
83
127
|
activity.should be_kind_of(ConstantContact::Components::Activity)
|
|
84
128
|
activity.type.should eq('ADD_CONTACTS')
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: constantcontact
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ConstantContact
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-06-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rest-client
|