-
Notifications
You must be signed in to change notification settings - Fork 42
/
Segment.cs
112 lines (100 loc) · 3.93 KB
/
Segment.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
namespace createsend_dotnet
{
public class Segment : CreateSendBase
{
public Segment(AuthenticationDetails auth, string segmentID)
: base(auth)
{
SegmentID = segmentID;
}
public string SegmentID { get; set; }
public static string Create(
AuthenticationDetails auth, string listID, string title, SegmentRuleGroups ruleGroups)
{
return HttpHelper.Post<Dictionary<string, object>, string, ErrorResult<RuleErrorResults>>(
auth, string.Format("/segments/{0}.json", listID), null,
new Dictionary<string, object>()
{
{ "ListID", listID },
{ "Title", title },
{ "RuleGroups", ruleGroups }
});
}
public void Update(string title, SegmentRuleGroups ruleGroups)
{
HttpPut<Dictionary<string, object>, string>(
string.Format("/segments/{0}.json", SegmentID), null,
new Dictionary<string, object>()
{
{ "Title", title },
{ "RuleGroups", ruleGroups }
});
}
public void AddRuleGroup(SegmentRuleGroup ruleGroup)
{
HttpPost<Dictionary<string, object>, string>(
string.Format("/segments/{0}/rules.json", SegmentID), null,
new Dictionary<string, object>()
{
{ "Rules", ruleGroup.Rules }
});
}
public PagedCollection<SubscriberDetail> Subscribers(
int page = 1,
int pageSize = 1000,
string orderField = "email",
string orderDirection = "asc",
bool includeTrackingPreference = false)
{
return Subscribers("", page, pageSize, orderField,
orderDirection, includeTrackingPreference);
}
public PagedCollection<SubscriberDetail> Subscribers(
DateTime fromDate,
int page,
int pageSize,
string orderField,
string orderDirection,
bool includeTrackingPreference)
{
return Subscribers(fromDate.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
page, pageSize, orderField, orderDirection, includeTrackingPreference);
}
private PagedCollection<SubscriberDetail> Subscribers(
string fromDate,
int page,
int pageSize,
string orderField,
string orderDirection,
bool includeTrackingPreference)
{
NameValueCollection queryArguments = new NameValueCollection();
queryArguments.Add("date", fromDate);
queryArguments.Add("page", page.ToString());
queryArguments.Add("pagesize", pageSize.ToString());
queryArguments.Add("orderfield", orderField);
queryArguments.Add("orderdirection", orderDirection);
queryArguments.Add("includeTrackingPreference", includeTrackingPreference.ToString());
return HttpGet<PagedCollection<SubscriberDetail>>(
string.Format("/segments/{0}/active.json", SegmentID), queryArguments);
}
public SegmentDetail Details()
{
return HttpGet<SegmentDetail>(
string.Format("/segments/{0}.json", SegmentID), null);
}
public void ClearRules()
{
HttpDelete(
string.Format("/segments/{0}/rules.json", SegmentID), null);
}
public void Delete()
{
HttpDelete(string.Format("/segments/{0}.json", SegmentID), null);
}
}
}