/// <summary> /// Sending actions in a group /// </summary> /// <param name="groupId">The GroupId</param> /// <param name="sendActionRequest">The SendActionRequest</param> /// <returns>SendActionResponse</returns> public List <SendActionResponse> SendAction(string groupId, SendActionRequest sendActionRequest) { List <string> senderSubsList = null; List <string> allSubsNumbers = sendActionRequest.Subscribers; List <SendActionResponse> allResponses = new List <SendActionResponse>(); string request; if (sendActionRequest.Subscribers == null || sendActionRequest.Subscribers.Count == 0) { request = JsonConvert.SerializeObject(sendActionRequest); SendActionResponse response = SendSingleAction(groupId, request); allResponses.Add(response); } else { for (int i = 0; i <= allSubsNumbers.Count / Constants.MAX_SUBSCRIBER_COUNT; i++) { senderSubsList = allSubsNumbers.GetRange(Constants.MAX_SUBSCRIBER_COUNT * i, i == allSubsNumbers.Count / Constants.MAX_SUBSCRIBER_COUNT ? allSubsNumbers.Count - Constants.MAX_SUBSCRIBER_COUNT * i : Constants.MAX_SUBSCRIBER_COUNT); sendActionRequest.Subscribers = senderSubsList; request = JsonConvert.SerializeObject(sendActionRequest); SendActionResponse response = SendSingleAction(groupId, request); allResponses.Add(response); } } return(allResponses); }
private SendActionResponse SendSingleAction(string groupId, string request) { NameValueCollection header = new NameValueCollection { { Constants.ACCESS_TOKEN_STRING, this.Session.GetAccessToken() } }; SendActionResponse response = AsyncHelpers.RunSync <SendActionResponse>(() => APICallHandler.PostAsync <SendActionResponse>(header, string.Format(Constants.SEND_ACTION_IN_GROUP_URL, Session.GetApiEndPoint(), groupId), request)); if (!ErrorValidator.IsResponseValid(response) && ErrorValidator.IsAccessTokenExpired(response)) { header.Remove(Constants.ACCESS_TOKEN_STRING); header.Add(Constants.ACCESS_TOKEN_STRING, Session.GenerateAccessToken()); response = AsyncHelpers.RunSync <SendActionResponse>(() => APICallHandler.PostAsync <SendActionResponse>(header, string.Format(Constants.SEND_ACTION_IN_GROUP_URL, Session.GetApiEndPoint(), groupId), request)); } return(response); }