コード例 #1
0
        private async Task <PNResult <PNRemoveMessageActionResult> > RemoveMessageAction(string channel, long messageTimetoken, long actionTimetoken, string messageActionUuid, Dictionary <string, object> externalQueryParam)
        {
            PNResult <PNRemoveMessageActionResult> ret = new PNResult <PNRemoveMessageActionResult>();

            if (string.IsNullOrEmpty(channel) || string.IsNullOrEmpty(channel.Trim()))
            {
                PNStatus status = new PNStatus();
                status.Error     = true;
                status.ErrorData = new PNErrorData("Missing Channel or MessageAction", new ArgumentException("Missing Channel or MessageAction"));
                ret.Status       = status;
                return(ret);
            }

            if (string.IsNullOrEmpty(config.SubscribeKey) || string.IsNullOrEmpty(config.SubscribeKey.Trim()) || config.SubscribeKey.Length <= 0)
            {
                PNStatus status = new PNStatus();
                status.Error     = true;
                status.ErrorData = new PNErrorData("Invalid subscribe key", new MissingMemberException("Invalid subscribe key"));
                ret.Status       = status;
                return(ret);
            }

            IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : "");

            Uri request = urlBuilder.BuildRemoveMessageActionRequest("DELETE", "", channel, messageTimetoken, actionTimetoken, messageActionUuid, externalQueryParam);

            RequestState <PNRemoveMessageActionResult> requestState = new RequestState <PNRemoveMessageActionResult>();

            requestState.Channels          = new[] { channel };
            requestState.ResponseType      = PNOperationType.PNRemoveMessageActionOperation;
            requestState.Reconnect         = false;
            requestState.EndPointOperation = this;

            Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false);

            ret.Status = JsonAndStatusTuple.Item2;
            string json = JsonAndStatusTuple.Item1;

            if (!string.IsNullOrEmpty(json))
            {
                List <object>               resultList      = ProcessJsonResponse(requestState, json);
                ResponseBuilder             responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog);
                PNRemoveMessageActionResult responseResult  = responseBuilder.JsonToObject <PNRemoveMessageActionResult>(resultList, true);
                if (responseResult != null)
                {
                    ret.Result = responseResult;
                }
            }

            return(ret);
        }
コード例 #2
0
        internal static PNRemoveMessageActionResult GetObject(List <object> listObject)
        {
            Dictionary <string, object> removeMsgActionDicObj = JsonDataParseInternalUtil.ConvertToDictionaryObject(listObject[0]);
            PNRemoveMessageActionResult result = null;

            if (removeMsgActionDicObj != null && removeMsgActionDicObj.ContainsKey("status"))
            {
                int status;
                int.TryParse(removeMsgActionDicObj["status"].ToString(), out status);
                if (status == 200)
                {
                    result = new PNRemoveMessageActionResult();
                }
            }

            return(result);
        }