Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }