Skip to content

Commit

Permalink
Merge pull request #76 from campaignmonitor/EL-360
Browse files Browse the repository at this point in the history
EL-360 -- Update to cater for the subscriber endpoints
  • Loading branch information
YahyaZ authored Feb 10, 2022
2 parents 6a0bbd0 + 1a04ce6 commit b7eb6a8
Show file tree
Hide file tree
Showing 17 changed files with 109 additions and 2 deletions.
10 changes: 9 additions & 1 deletion HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
# createsend-python history

## v7.0.0 - 19 Nov, 2021
## v7.0.0 - 15 Dec, 2021
* Upgrades to Createsend API v3.3 which includes new breaking changes
* Breaking: 'client.campaigns' now returned an object to support pagination (use .Results to get the array of campaigns)
* Added 'Tags' as another field that is returned in 'client.scheduled', 'client.drafts' and client.campaigns'
* Added 'Name' as another field that is returned in 'campaign.summary'
* Add new support for 'client.tags' endpoint (ie: getting list of tags for the client)
* Add support for pagination, filtering and sorting to 'client.campaigns' endpoint
* Add Python 3.10 to `tox.ini`
* Adding support for returning ListJoinedDate for each subscriber.
* List.Active()
* List.Bounced()
* List.Unsubscribed()
* List.Unconfirmed()
* List.Deleted()
* Segment.Subscribers()
* Subscriber.Get()

## v6.1.2 - 10 Feb, 2021
* Add `excludemessagebody` parameter for Transactional message details endpoint
Expand Down
33 changes: 33 additions & 0 deletions samples/lists.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from createsend import *

auth = {
'access_token': 'YOUR_ACCESS_TOKEN',
'refresh_token': 'YOUR_REFRESH_TOKEN' }
listId = 'YOUR_LIST_ID'

list = List(auth, listId)

# Get list of active subscribers in a list
print("List of active subscribers:")
for cm in list.active().Results:
print(" - %s" % cm.EmailAddress)

# Get list of bounced subscribers in a list
print("List of bounced subscribers:")
for cm in list.bounced().Results:
print(" - %s" % cm.EmailAddress)

# Get list of unconfirmed subscribers in a list
print("List of unconfirmed subscribers:")
for cm in list.unconfirmed().Results:
print(" - %s" % cm.EmailAddress)

# Get list of unsubscribed subscribers in a list
print("List of unsubscribed subscribers:")
for cm in list.unsubscribed().Results:
print(" - %s" % cm.EmailAddress)

# Get list of deleted subscribers in a list
print("List of deleted subscribers:")
for cm in list.deleted().Results:
print(" - %s" % cm.EmailAddress)
13 changes: 13 additions & 0 deletions samples/segments.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from createsend import *

auth = {
'access_token': 'YOUR_ACCESS_TOKEN',
'refresh_token': 'YOUR_REFRESH_TOKEN' }
segmentId = 'YOUR_SEGMENT_ID'

segment = Segment(auth, segmentId)

# Get list of active subscribers in a segment
print("List of active subscribers:")
for cm in segment.subscribers().Results:
print(" - %s" % cm.EmailAddress)
14 changes: 14 additions & 0 deletions samples/subscribers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from createsend import *

auth = {
'access_token': 'YOUR_ACCESS_TOKEN',
'refresh_token': 'YOUR_REFRESH_TOKEN' }
listId = 'YOUR_LIST_ID'
emailAddress = 'YOUR_SUBSCRIBER_EMAIL_ADDRESS'

subscriber = Subscriber(auth, listId, emailAddress)

# Get the details for a subscriber
subscriberDetail = subscriber.get()
for property, value in vars(subscriberDetail).items():
print(property, ":", value)
5 changes: 5 additions & 0 deletions test/fixtures/active_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Person One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-24 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down Expand Up @@ -33,6 +34,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Two",
"Date": "2010-10-25 12:17:00",
"ListJoinedDate": "2010-10-25 12:17:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -46,6 +48,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Three",
"Date": "2010-10-25 12:52:00",
"ListJoinedDate": "2010-10-25 12:52:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -59,6 +62,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Four",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -67,6 +71,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Five",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Person One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-24 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down Expand Up @@ -34,6 +35,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Two",
"Date": "2010-10-25 12:17:00",
"ListJoinedDate": "2010-10-25 12:17:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -48,6 +50,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Three",
"Date": "2010-10-25 12:52:00",
"ListJoinedDate": "2010-10-25 12:52:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -62,6 +65,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Four",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": "",
Expand All @@ -71,6 +75,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Five",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": "Gmail",
Expand All @@ -84,4 +89,4 @@
"RecordsOnThisPage": 5,
"TotalNumberOfRecords": 5,
"NumberOfPages": 1
}
}
1 change: 1 addition & 0 deletions test/fixtures/bounced_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Bounced One",
"Date": "2010-10-25 13:11:00",
"ListJoinedDate": "2010-10-25 13:11:00",
"State": "Bounced",
"CustomFields": [],
"ReadsEmailWith": ""
Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/deleted_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Deleted One",
"Date": "2010-10-25 13:11:00",
"ListJoinedDate": "2010-10-25 13:11:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand All @@ -12,6 +13,7 @@
"EmailAddress": "[email protected]",
"Name": "Subscriber",
"Date": "2010-10-25 13:04:00",
"ListJoinedDate": "2010-10-25 13:04:00",
"State": "Deleted",
"CustomFields": [
{
Expand All @@ -25,6 +27,7 @@
"EmailAddress": "[email protected]",
"Name": "Example One",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -33,6 +36,7 @@
"EmailAddress": "[email protected]",
"Name": "Example Two",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -41,6 +45,7 @@
"EmailAddress": "[email protected]",
"Name": "Example Three",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand Down
2 changes: 2 additions & 0 deletions test/fixtures/segment_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
"EmailAddress": "[email protected]",
"Name": "Person One",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": []
},
{
"EmailAddress": "[email protected]",
"Name": "Person Two",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": []
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Person One",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ConsentToTrack": "Yes"
Expand All @@ -12,6 +13,7 @@
"EmailAddress": "[email protected]",
"Name": "Person Two",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ConsentToTrack": "No"
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/subscriber_details.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"EmailAddress": "[email protected]",
"Name": "Subscriber One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-25 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"EmailAddress": "[email protected]",
"Name": "Subscriber One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-25 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down
2 changes: 2 additions & 0 deletions test/fixtures/unconfirmed_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Unconfirmed One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-25 10:28:00",
"State": "Unconfirmed",
"CustomFields": [
{
Expand All @@ -17,6 +18,7 @@
"EmailAddress": "[email protected]",
"Name": "Unconfirmed Two",
"Date": "2010-10-25 12:17:00",
"ListJoinedDate": "2010-10-25 12:17:00",
"State": "Unconfirmed",
"CustomFields": [
{
Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/unsubscribed_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "[email protected]",
"Name": "Unsub One",
"Date": "2010-10-25 13:11:00",
"ListJoinedDate": "2010-10-25 13:11:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand All @@ -12,6 +13,7 @@
"EmailAddress": "[email protected]",
"Name": "Subscriber",
"Date": "2010-10-25 13:04:00",
"ListJoinedDate": "2010-10-25 13:04:00",
"State": "Unsubscribed",
"CustomFields": [
{
Expand All @@ -25,6 +27,7 @@
"EmailAddress": "[email protected]",
"Name": "Example One",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -33,6 +36,7 @@
"EmailAddress": "[email protected]",
"Name": "Example Two",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -41,6 +45,7 @@
"EmailAddress": "[email protected]",
"Name": "Example Three",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand Down
5 changes: 5 additions & 0 deletions test/test_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ def test_active(self):
"[email protected]")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-25 10:28:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-24 10:28:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(len(res.Results[0].CustomFields), 5)
self.assertEquals(res.Results[0].CustomFields[0].Key, "website")
Expand Down Expand Up @@ -177,6 +178,7 @@ def test_active_with_tracking_preference_included(self):
"[email protected]")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-25 10:28:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-24 10:28:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(len(res.Results[0].CustomFields), 5)
self.assertEquals(res.Results[0].CustomFields[0].Key, "website")
Expand Down Expand Up @@ -226,6 +228,7 @@ def test_unsubscribed(self):
res.Results[0].EmailAddress, "[email protected]")
self.assertEquals(res.Results[0].Name, "Unsub One")
self.assertEquals(res.Results[0].Date, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].State, "Unsubscribed")
self.assertEquals(len(res.Results[0].CustomFields), 0)
self.assertEquals(res.Results[0].ReadsEmailWith, "Gmail")
Expand All @@ -247,6 +250,7 @@ def test_deleted(self):
res.Results[0].EmailAddress, "[email protected]")
self.assertEquals(res.Results[0].Name, "Deleted One")
self.assertEquals(res.Results[0].Date, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].State, "Deleted")
self.assertEquals(len(res.Results[0].CustomFields), 0)
self.assertEquals(res.Results[0].ReadsEmailWith, "Gmail")
Expand All @@ -268,6 +272,7 @@ def test_bounced(self):
"[email protected]")
self.assertEquals(res.Results[0].Name, "Bounced One")
self.assertEquals(res.Results[0].Date, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].State, "Bounced")
self.assertEquals(len(res.Results[0].CustomFields), 0)
self.assertEquals(res.Results[0].ReadsEmailWith, "")
Expand Down
2 changes: 2 additions & 0 deletions test/test_segment.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ def test_subscribers(self):
self.assertEquals(res.Results[0].EmailAddress, "[email protected]")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(res.Results[0].CustomFields, [])

Expand All @@ -66,6 +67,7 @@ def test_subscribers_with_tracking_information_included(self):
self.assertEquals(res.Results[0].EmailAddress, "[email protected]")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(res.Results[0].CustomFields, [])
self.assertEquals(res.Results[0].ConsentToTrack, "Yes")
Expand Down
Loading

0 comments on commit b7eb6a8

Please sign in to comment.