Skip to content

Commit 687a75b

Browse files
authored
Merge pull request #41 from CallFire/develop
Develop
2 parents 755e8d1 + d3d8396 commit 687a75b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+753
-129
lines changed

CallfireApiClient.nuspec

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?><package>
22
<metadata>
33
<id>CallfireApiClient</id>
4-
<version>1.1.11</version>
4+
<version>1.1.12</version>
55
<title>CallFire API v2 client</title>
66
<authors>
77
Vladimir Mikhailov
@@ -15,6 +15,12 @@
1515
<description>C# client library for integration with Callfire REST API v2 services</description>
1616
<releaseNotes>Callfire API client Changelog
1717
=============================
18+
Version 1.1.12 - Dec 28 2016
19+
- updated CallRecord dto to include originateTime, answerTime, duration, callerName and switchId fields
20+
- updated Webhook dto to include singleUse parameter
21+
- minor extension of requests objects for upload and find sounds api, get contacts history api and find tollfree numbers api
22+
- temporary turning dnc api off due to full remake of callfire dnc apis
23+
1824
Version 1.1.11 - Nov 18 2016
1925
- added deleteCampaignSound api
2026
- added getCreditsHistory api

Changelog.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
Callfire API client Changelog
22
=============================
3+
Version 1.1.12 - Dec 28 2016
4+
- updated CallRecord dto to include originateTime, answerTime, duration, callerName and switchId fields
5+
- updated Webhook dto to include singleUse parameter
6+
- minor extension of requests objects for upload and find sounds api, get contacts history api and find tollfree numbers api
7+
- temporary turning dnc api off due to full remake of callfire dnc apis
8+
39
Version 1.1.11 - Nov 18 2016
410
- added deleteCampaignSound api
511
- added getCreditsHistory api

src/CallfireApiClient.IntegrationTests/Api/CallsTexts/CallsApiIntegrationTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ public void FindCalls()
3434
States = { StateType.FINISHED, StateType.READY },
3535
IntervalBegin = DateTime.UtcNow.AddMonths(-2),
3636
IntervalEnd = DateTime.UtcNow,
37-
Limit = 3
37+
Limit = 1
3838
};
3939

4040
Page<Call> calls = Client.CallsApi.Find(request);
4141
Console.WriteLine("Calls: " + calls);
4242

43-
Assert.AreEqual(3, calls.Items.Count);
43+
Assert.AreEqual(1, calls.Items.Count);
4444
}
4545

4646
[Test]

src/CallfireApiClient.IntegrationTests/Api/Campaigns/CampaignSoundsApiIntegrationTest.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@ public class CampaignSoundsApiIntegrationTest : AbstractIntegrationTest
1313
[Test]
1414
public void TestFind()
1515
{
16-
FindSoundsRequest request = new FindSoundsRequest { Limit = 3, Filter = "sample" };
16+
FindSoundsRequest request = new FindSoundsRequest
17+
{
18+
Limit = 3,
19+
Filter = "sample",
20+
IncludeScrubbed = true,
21+
IncludePending = true,
22+
IncludeArchived = true
23+
};
1724
Page<CampaignSound> campaignSounds = Client.CampaignSoundsApi.Find(request);
1825

1926
Assert.AreEqual(4, campaignSounds.TotalCount);
@@ -92,11 +99,17 @@ public void TestUploadMp3WavFilesAndGetThem()
9299
pathToSaveNewFile = existingFilePath.Replace("train.wav", "wav_sound.wav");
93100
File.WriteAllBytes(pathToSaveNewFile, ms.ToArray());
94101

95-
CampaignSound mp3Resource = Client.CampaignSoundsApi.UploadAndGetSoundDetails(mp3FilePath, soundName);
102+
CampaignSound mp3Resource = Client.CampaignSoundsApi.UploadAndGetSoundDetails(mp3FilePath, soundName, "id,name,created,lengthInSeconds,status,duplicate");
96103
Assert.True(mp3Resource.Name.Contains("mp3_test"));
97104
Assert.AreEqual(1, mp3Resource.LengthInSeconds);
98105
Assert.True((bool) mp3Resource.Duplicate);
99106

107+
mp3Resource = Client.CampaignSoundsApi.UploadAndGetSoundDetails(mp3FilePath);
108+
Assert.True((bool)mp3Resource.Duplicate);
109+
110+
mp3Resource = Client.CampaignSoundsApi.UploadAndGetSoundDetails(mp3FilePath, soundName);
111+
Assert.True((bool)mp3Resource.Duplicate);
112+
100113
CampaignSound wavResource = Client.CampaignSoundsApi.UploadAndGetSoundDetails(wavFilePath);
101114
Assert.NotNull(wavResource.Id);
102115
}

src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextBroadcastsApiIntegrationTest.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,19 @@ public void CrudOperations()
5353
[Test]
5454
public void StartStopArchiveCampaign()
5555
{
56-
var campaign = Client.TextBroadcastsApi.Get(8729792003);
56+
var broadcast = new TextBroadcast
57+
{
58+
Name = "text_broadcast",
59+
Message = "test_msg",
60+
Recipients = new List<TextRecipient>
61+
{
62+
new TextRecipient { PhoneNumber = "14246525473" }
63+
}
64+
};
65+
66+
ResourceId id = Client.TextBroadcastsApi.Create(broadcast, false);
67+
68+
var campaign = Client.TextBroadcastsApi.Get(id.Id);
5769
Console.WriteLine(campaign);
5870
Assert.NotNull(campaign);
5971
// start

src/CallfireApiClient.IntegrationTests/Api/Contacts/ContactsApiIntegrationTest.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,27 @@ public void ContactsCRUD()
7373
}
7474

7575
[Test]
76-
public void GetContactHistory()
76+
public void GetObsoleteContactHistory()
7777
{
7878
var request = new GetByIdRequest { Id = 1, Limit = 5 };
7979
var contactHistory = Client.ContactsApi.GetHistory(request);
8080
Assert.AreEqual(2, contactHistory.Calls.Count);
8181

8282
Console.WriteLine("ContactHistory:" + contactHistory);
8383
}
84+
85+
[Test]
86+
public void GetContactHistory()
87+
{
88+
var request = new GetByIdRequest { Id = 1, Limit = 5 };
89+
var contactHistory = Client.ContactsApi.GetHistory(1, 0, 0);
90+
Assert.AreEqual(2, contactHistory.Calls.Count);
91+
92+
contactHistory = Client.ContactsApi.GetHistory(1);
93+
Assert.AreEqual(2, contactHistory.Calls.Count);
94+
95+
Console.WriteLine("ContactHistory:" + contactHistory);
96+
}
8497
}
8598
}
8699

src/CallfireApiClient.IntegrationTests/Api/Contacts/DncApiIntegrationTest.cs

Lines changed: 79 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,63 +3,110 @@
33
using CallfireApiClient.Api.Contacts.Model;
44
using CallfireApiClient.Api.Contacts.Model.Request;
55
using CallfireApiClient.Api.Common.Model;
6+
using System.Collections.Generic;
67

78
namespace CallfireApiClient.IntegrationTests.Api.Contacts
89
{
910
[TestFixture]
1011
public class DncApiIntegrationTest : AbstractIntegrationTest
1112
{
13+
//TODO vmalinovskiy: uncomment when dnc apis will be tested and available on docs site
14+
/*
1215
[Test]
1316
public void FindDncs()
1417
{
15-
var request = new FindDncContactsRequest();
18+
var request = new FindDncNumbersRequest()
19+
{
20+
Text = true,
21+
Limit = 1,
22+
Numbers = new List<string> { "12135551189" }
23+
};
24+
1625
Page<DoNotContact> dncs = Client.DncApi.Find(request);
1726
Console.WriteLine("Page of credentials:" + dncs);
1827
1928
Assert.NotNull(dncs);
20-
Assert.GreaterOrEqual(dncs.Items.Count, 0);
29+
Assert.AreEqual(dncs.Items.Count, 1);
2130
}
2231
2332
[Test]
24-
public void UpdateDnc()
33+
public void CrudAndGetDnc()
2534
{
26-
long listId = 2021478003;
27-
string number = "13234324554";
28-
string prefix = "13234";
29-
30-
DoNotContact dncToUpdate = new DoNotContact
35+
CreateDncsRequest crRequest = new CreateDncsRequest()
3136
{
32-
ListId = listId,
33-
Text = true,
3437
Call = true,
35-
Number = number
38+
Text = true,
39+
Numbers = new List<string> { "12135551188" },
40+
Source = "testSource"
3641
};
37-
Client.DncApi.Update(dncToUpdate);
42+
Client.DncApi.Create(crRequest);
43+
44+
DoNotContact dnc = Client.DncApi.Get("12135551188");
45+
Assert.AreEqual(dnc.Number, "12135551188");
46+
Assert.AreEqual(dnc.Call, true);
47+
Assert.AreEqual(dnc.Text, true);
3848
39-
var request = new FindDncContactsRequest
49+
UpdateDncRequest updRequest = new UpdateDncRequest()
4050
{
41-
DncListId = listId,
42-
Prefix = prefix,
43-
CallDnc = true,
44-
TextDnc = true,
45-
Limit = 1,
46-
Offset = 0
51+
Call = true,
52+
Text = false,
53+
Number = "12135551188"
4754
};
48-
Page<DoNotContact> dnc = Client.DncApi.Find(request);
49-
Assert.NotNull(dnc);
50-
Assert.AreEqual(dnc.Items.Count, 1);
51-
Assert.AreEqual(dnc.Items[0].ListId, listId);
52-
Assert.AreEqual(dnc.Items[0].Number, number);
53-
Assert.AreEqual(dnc.Items[0].Text, true);
54-
Assert.AreEqual(dnc.Items[0].Call, true);
55+
Client.DncApi.Update(updRequest);
56+
57+
dnc = Client.DncApi.Get("12135551188");
58+
Assert.AreEqual(dnc.Call, true);
59+
Assert.AreEqual(dnc.Text, false);
60+
61+
Client.DncApi.Delete("12135551188");
5562
56-
//get back initial db stage as before test
57-
dncToUpdate.Text = true;
58-
dncToUpdate.Call = true;
59-
Client.DncApi.Update(dncToUpdate);
63+
dnc = Client.DncApi.Get("12135551188");
64+
Assert.AreEqual(dnc.Call, false);
65+
Assert.AreEqual(dnc.Text, false);
6066
}
6167
62-
}
68+
[Test]
69+
public void DeleteDncsFromSource()
70+
{
71+
CreateDncsRequest crRequest = new CreateDncsRequest()
72+
{
73+
Call = true,
74+
Text = true,
75+
Numbers = new List<string> { "12135551189" },
76+
Source = "testSourceForDeleteDncs"
77+
};
78+
Client.DncApi.Create(crRequest);
79+
80+
FindDncNumbersRequest request = new FindDncNumbersRequest()
81+
{
82+
Source = "testSourceForDeleteDncs"
83+
};
84+
Page<DoNotContact> dncContacts = Client.DncApi.Find(request);
85+
Assert.True(dncContacts.Items.Count > 0);
6386
64-
}
87+
Client.DncApi.DeleteDncsFromSource("testSourceForDeleteDncs");
88+
89+
dncContacts = Client.DncApi.Find(request);
90+
Assert.True(dncContacts.Items.Count == 0);
91+
}
6592
93+
[Test]
94+
public void FindUniversalDncs()
95+
{
96+
FindUniversalDncsRequest request = new FindUniversalDncsRequest()
97+
{
98+
ToNumber = "12135551188",
99+
FromNumber = "18442800143"
100+
};
101+
102+
var uDncs = Client.DncApi.FindUniversalDncs(request);
103+
Assert.AreEqual("18442800143", uDncs[0].FromNumber);
104+
Assert.AreEqual("12135551188", uDncs[0].ToNumber);
105+
Assert.NotNull(uDncs[0].InboundCall);
106+
Assert.NotNull(uDncs[0].InboundText);
107+
Assert.NotNull(uDncs[0].OutboundCall);
108+
Assert.NotNull(uDncs[0].OutboundText);
109+
}
110+
*/
111+
}
112+
}

src/CallfireApiClient.IntegrationTests/Api/Webhooks/WebhooksApiIntegrationTest.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ public void CrudOperations()
1717
Name = "test_name1",
1818
Callback = "test_callback",
1919
Resource = ResourceType.TEXT_BROADCAST,
20-
Events = new HashSet<ResourceEvent> { ResourceEvent.STARTED }
20+
Events = new HashSet<ResourceEvent> { ResourceEvent.STARTED },
21+
SingleUse = true
2122
};
2223
var resourceId1 = api.Create(webhook);
2324
Assert.NotNull(resourceId1.Id);
@@ -28,7 +29,7 @@ public void CrudOperations()
2829
{
2930
Limit = 30L,
3031
Name = "test_name1",
31-
Fields = "items(id,callback,name,resource,events)"
32+
Fields = "items(id,callback,name,resource,events,singleUse)"
3233
};
3334
var page = api.Find(findRequest);
3435
Assert.That(page.Items.Count > 1);
@@ -37,12 +38,15 @@ public void CrudOperations()
3738
Assert.AreEqual(ResourceType.TEXT_BROADCAST, page.Items[0].Resource);
3839
Assert.AreEqual(1, page.Items[0].Events.Count);
3940
Assert.NotNull(page.Items[0].Id);
41+
Assert.True(page.Items[0].SingleUse.GetValueOrDefault());
4042

4143
webhook = page.Items[0];
4244
webhook.Name = "test_name2";
45+
webhook.SingleUse = false;
4346
api.Update(webhook);
4447
Webhook updated = api.Get((long)webhook.Id);
4548
Assert.AreEqual(webhook.Resource, updated.Resource);
49+
Assert.False(page.Items[0].SingleUse.GetValueOrDefault());
4650

4751
api.Delete((long)resourceId1.Id);
4852
api.Delete((long)resourceId2.Id);

src/CallfireApiClient.Tests/Api/Campaigns/CampaignSoundsApiTest.cs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ public void TestFind()
2121
{
2222
Limit = 5,
2323
Offset = 0,
24-
Filter = "1234"
24+
Filter = "1234",
25+
IncludeArchived = true,
26+
IncludePending = true,
27+
IncludeScrubbed = true
2528
};
2629

2730
Page<CampaignSound> sounds = Client.CampaignSoundsApi.Find(request);
@@ -31,6 +34,9 @@ public void TestFind()
3134
Assert.That(restRequest.Value.Parameters, Has.Some.Matches<Parameter>(p => p.Name.Equals("limit") && p.Value.Equals("5")));
3235
Assert.That(restRequest.Value.Parameters, Has.Some.Matches<Parameter>(p => p.Name.Equals("offset") && p.Value.Equals("0")));
3336
Assert.That(restRequest.Value.Parameters, Has.Some.Matches<Parameter>(p => p.Name.Equals("filter") && p.Value.Equals("1234")));
37+
Assert.That(restRequest.Value.Parameters, Has.Some.Matches<Parameter>(p => p.Name.Equals("includeArchived") && p.Value.Equals("True")));
38+
Assert.That(restRequest.Value.Parameters, Has.Some.Matches<Parameter>(p => p.Name.Equals("includePending") && p.Value.Equals("True")));
39+
Assert.That(restRequest.Value.Parameters, Has.Some.Matches<Parameter>(p => p.Name.Equals("includeScrubbed") && p.Value.Equals("True")));
3440
}
3541

3642
[Test]
@@ -68,7 +74,6 @@ public void TestGet()
6874

6975
Assert.That(Serializer.Serialize(campaignSound), Is.EqualTo(expectedJson));
7076
Assert.AreEqual(Method.GET, restRequest.Value.Method);
71-
Assert.That(restRequest.Value.Parameters, Has.None.Matches<Parameter>(p => p.Name.Equals("FIELDS") && p.Value.Equals(FIELDS)));
7277
Assert.That(restRequest.Value.Resource, Is.StringEnding("/11"));
7378
}
7479

@@ -86,7 +91,19 @@ public void TestUpload()
8691
}
8792

8893
[Test]
89-
public void TestUploadAndGetSoundDetails()
94+
public void TestUploadAndGetSoundDetailsWithoutFileName()
95+
{
96+
string expectedJson = GetJsonPayload("/campaigns/campaignSoundsApi/response/uploadSoundWithDetails.json");
97+
var restRequest = MockRestResponse(expectedJson);
98+
99+
string mp3FilePath = "Resources/File-examples/train.mp3";
100+
CampaignSound sound = Client.CampaignSoundsApi.UploadAndGetSoundDetails(mp3FilePath);
101+
Assert.That(Serializer.Serialize(sound), Is.EqualTo(expectedJson));
102+
Assert.AreEqual(Method.POST, restRequest.Value.Method);
103+
}
104+
105+
[Test]
106+
public void TestUploadAndGetSoundDetailsWithFileName()
90107
{
91108
string expectedJson = GetJsonPayload("/campaigns/campaignSoundsApi/response/uploadSoundWithDetails.json");
92109
var restRequest = MockRestResponse(expectedJson);
@@ -97,6 +114,19 @@ public void TestUploadAndGetSoundDetails()
97114
Assert.AreEqual(Method.POST, restRequest.Value.Method);
98115
}
99116

117+
[Test]
118+
public void TestUploadAndGetSoundDetailsWithFileNameAndFields()
119+
{
120+
string expectedJson = GetJsonPayload("/campaigns/campaignSoundsApi/response/uploadSoundWithDetails.json");
121+
var restRequest = MockRestResponse(expectedJson);
122+
123+
string mp3FilePath = "Resources/File-examples/train.mp3";
124+
CampaignSound sound = Client.CampaignSoundsApi.UploadAndGetSoundDetails(mp3FilePath, "fname", FIELDS);
125+
Assert.That(restRequest.Value.Parameters, Has.None.Matches<Parameter>(p => p.Name.Equals("FIELDS") && p.Value.Equals(FIELDS)));
126+
Assert.That(Serializer.Serialize(sound), Is.EqualTo(expectedJson));
127+
Assert.AreEqual(Method.POST, restRequest.Value.Method);
128+
}
129+
100130
[Test]
101131
public void TestRecordViaPhone()
102132
{

0 commit comments

Comments
 (0)