Esempio n. 1
0
        public static PNMessageActionsResult ExtractMessageAction(Dictionary <string, object> objDataDict)
        {
            PNMessageActionsResult pnMessageActionsResult = new PNMessageActionsResult();
            long   actionTimetoken;
            string log;

            Utility.TryCheckKeyAndParseLong(objDataDict, "actionTimetoken", "actionTimetoken", out log, out actionTimetoken);

            pnMessageActionsResult.ActionTimetoken = actionTimetoken;
            pnMessageActionsResult.ActionType      = Utility.ReadMessageFromResponseDictionary(objDataDict, "type");
            pnMessageActionsResult.ActionValue     = Utility.ReadMessageFromResponseDictionary(objDataDict, "value");

            long messageTimetoken;

            Utility.TryCheckKeyAndParseLong(objDataDict, "messageTimetoken", "messageTimetoken", out log, out messageTimetoken);
            pnMessageActionsResult.MessageTimetoken = messageTimetoken;
            pnMessageActionsResult.UUID             = Utility.ReadMessageFromResponseDictionary(objDataDict, "uuid");

            return(pnMessageActionsResult);
        }
        protected override void CreatePubNubResponse(object deSerializedResult, RequestState requestState)
        {
            PNGetMessageActionsResult pnGetMessageActionsResult = new PNGetMessageActionsResult();

            pnGetMessageActionsResult.Data = new List <PNMessageActionsResult>();
            pnGetMessageActionsResult.More = new PNGetMessageActionsMore();
            PNStatus pnStatus = new PNStatus();

            try{
                Dictionary <string, object> dictionary = deSerializedResult as Dictionary <string, object>;

                if (dictionary != null)
                {
                    object objData;
                    dictionary.TryGetValue("data", out objData);
                    if (objData != null)
                    {
                        object[] objArr = objData as object[];
                        foreach (object data in objArr)
                        {
                            Dictionary <string, object> objDataDict = data as Dictionary <string, object>;
                            if (objDataDict != null)
                            {
                                PNMessageActionsResult pnMessageActionsResult = MessageActionsHelpers.ExtractMessageAction(objDataDict);
                                pnGetMessageActionsResult.Data.Add(pnMessageActionsResult);
                            }
                            else
                            {
                                pnStatus = base.CreateErrorResponseFromException(new PubNubException("objDataDict null"), requestState, PNStatusCategory.PNUnknownCategory);
                            }
                        }
                    }
                    else
                    {
                        pnStatus = base.CreateErrorResponseFromException(new PubNubException("objData null"), requestState, PNStatusCategory.PNUnknownCategory);
                    }
                    object objMore;
                    dictionary.TryGetValue("more", out objMore);
                    if (objMore != null)
                    {
                        Dictionary <string, object> objMoreDict = objMore as Dictionary <string, object>;
                        string log;
                        long   start;
                        Utility.TryCheckKeyAndParseLong(objMoreDict, "start", "start", out log, out start);
                        pnGetMessageActionsResult.More.Start = start;

                        int limit;
                        Utility.TryCheckKeyAndParseInt(objMoreDict, "limit", "limit", out log, out limit);
                        pnGetMessageActionsResult.More.Limit = limit;

                        long end;
                        Utility.TryCheckKeyAndParseLong(objMoreDict, "end", "end", out log, out end);
                        pnGetMessageActionsResult.More.End = start;

                        pnGetMessageActionsResult.More.URL = Utility.ReadMessageFromResponseDictionary(objMoreDict, "url");
                    }
                }
            } catch (Exception ex) {
                pnGetMessageActionsResult = null;
                pnStatus = base.CreateErrorResponseFromException(ex, requestState, PNStatusCategory.PNUnknownCategory);
            }
            Callback(pnGetMessageActionsResult, pnStatus);
        }