@@ -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 )
0 commit comments