Skip to content

Commit 57917aa

Browse files
authored
Merge pull request #3 from PSWinCom/release-2.0.11
Release 2.0.11
2 parents 82ec5fc + 244c9eb commit 57917aa

3 files changed

Lines changed: 38 additions & 26 deletions

File tree

PSWinCom.Gateway.Client.Tests/SendingMessages.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,6 @@ namespace PSWinCom.Gateway.Client.Tests
1212
public class SendingMessages : SendingMessagesBase
1313
{
1414

15-
[Test, ExpectedException(typeof(ArgumentException))]
16-
public void Should_not_accept_an_empty_list_of_messages()
17-
{
18-
client.Send(new Sms[] { });
19-
}
20-
2115
[Test]
2216
public void Should_include_username_and_password()
2317
{
@@ -256,6 +250,16 @@ public void Should_handle_batch_status()
256250
response.Status.ShouldEqual(BatchStatus.Fail);
257251
response.StatusText.ShouldEqual("Username or password is incorrect");
258252
}
253+
254+
[Test]
255+
public void Should_allow_sending_no_messages_for_authorization_purposes()
256+
{
257+
Transport_returns_batch_status("OK", "");
258+
var response = client.Send();
259+
response.Status.ShouldEqual(BatchStatus.Ok);
260+
response.StatusText.ShouldEqual("");
261+
}
262+
259263
}
260264

261265
[TestFixture]

PSWinCom.Gateway.Client/GatewayClientBase.cs

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,37 @@ public virtual GatewayResponse Send(IEnumerable<Message> messages)
3232

3333
public virtual GatewayResponse Send(string sessionData, IEnumerable<Message> messages)
3434
{
35-
if (messages.Count() == 0)
36-
throw new ArgumentException("Message list must contain at least one message", "messages");
37-
3835
var result = new GatewayResponse();
3936

40-
var thisBatchSize = BatchSize > 0 ? BatchSize : messages.Count();
4137

42-
var skip = 0;
43-
while (messages.Count() > skip)
38+
if (messages.Count() == 0)
4439
{
45-
var messageList = messages.Skip(skip).Take(thisBatchSize).ToList();
46-
var transportResult = Transport.Send(BuildPayload(sessionData, messageList));
47-
var batchResult = GetSendResult(messageList, transportResult);
48-
49-
if (batchResult.Status == BatchStatus.Ok)
50-
result.Results = result.Results == null ? batchResult.Results : result.Results.Union(batchResult.Results);
51-
else
40+
var transportResult = Transport.Send(BuildPayload(sessionData, messages));
41+
var authResult = GetSendResult(messages, transportResult);
42+
result.Status = authResult.Status;
43+
result.StatusText = authResult.StatusText;
44+
}
45+
else
46+
{
47+
var thisBatchSize = BatchSize > 0 ? BatchSize : messages.Count();
48+
var skip = 0;
49+
while (messages.Count() > skip)
5250
{
53-
result.Status = batchResult.Status;
54-
result.StatusText = batchResult.StatusText;
51+
var messageList = messages.Skip(skip).Take(thisBatchSize).ToList();
52+
var transportResult = Transport.Send(BuildPayload(sessionData, messageList));
53+
var batchResult = GetSendResult(messageList, transportResult);
54+
55+
if (batchResult.Status == BatchStatus.Ok)
56+
result.Results = result.Results == null ? batchResult.Results : result.Results.Union(batchResult.Results);
57+
else
58+
{
59+
result.Status = batchResult.Status;
60+
result.StatusText = batchResult.StatusText;
61+
}
62+
63+
skip += thisBatchSize;
5564
}
5665

57-
skip += thisBatchSize;
5866
}
5967

6068
return result;
@@ -76,12 +84,11 @@ protected XDocument BuildPayload(string sessionData, IEnumerable<Message> messag
7684
private IEnumerable<XElement> GetMessageElements(IEnumerable<Message> messages)
7785
{
7886
var numInSession = 1;
79-
foreach (var msg in messages)
87+
return messages.Select((msg) =>
8088
{
8189
msg.NumInSession = numInSession++;
82-
XElement msgElement = new XElement("MSG", GetMessagePropertyElements(msg));
83-
yield return msgElement;
84-
}
90+
return new XElement("MSG", GetMessagePropertyElements(msg));
91+
});
8592
}
8693

8794
private IEnumerable<XElement> GetMessagePropertyElements(Message msg)

version.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
2.0.8
22
2.0.9
33
2.0.10
4+
2.0.11

0 commit comments

Comments
 (0)