Exemple #1
0
        internal static PNSetUuidMetadataResult GetObject(List <object> listObject)
        {
            Dictionary <string, object> setUuidDicObj = (listObject != null && listObject.Count >= 2) ? JsonDataParseInternalUtil.ConvertToDictionaryObject(listObject[1]) : null;
            PNSetUuidMetadataResult     result        = null;

            if (setUuidDicObj != null && setUuidDicObj.ContainsKey("data"))
            {
                result = new PNSetUuidMetadataResult();

                Dictionary <string, object> setUuidDataDic = JsonDataParseInternalUtil.ConvertToDictionaryObject(setUuidDicObj["data"]);
                if (setUuidDataDic != null && setUuidDataDic.Count > 0)
                {
                    result.Uuid       = setUuidDataDic.ContainsKey("id") && setUuidDataDic["id"] != null ? setUuidDataDic["id"].ToString() : null;
                    result.Name       = setUuidDataDic.ContainsKey("name") && setUuidDataDic["name"] != null ? setUuidDataDic["name"].ToString() : null;
                    result.ExternalId = setUuidDataDic.ContainsKey("externalId") && setUuidDataDic["externalId"] != null ? setUuidDataDic["externalId"].ToString() : null;
                    result.ProfileUrl = setUuidDataDic.ContainsKey("profileUrl") && setUuidDataDic["profileUrl"] != null ? setUuidDataDic["profileUrl"].ToString() : null;
                    result.Email      = setUuidDataDic.ContainsKey("email") && setUuidDataDic["email"] != null ? setUuidDataDic["email"].ToString() : null;
                    result.Updated    = setUuidDataDic.ContainsKey("updated") && setUuidDataDic["updated"] != null ? setUuidDataDic["updated"].ToString() : "";
                    if (setUuidDataDic.ContainsKey("custom"))
                    {
                        result.Custom = JsonDataParseInternalUtil.ConvertToDictionaryObject(setUuidDataDic["custom"]);
                    }
                }
            }

            return(result);
        }
        private async Task <PNResult <PNSetUuidMetadataResult> > SetUuidMetadata(string uuid, bool includeCustom, Dictionary <string, object> externalQueryParam)
        {
            if (string.IsNullOrEmpty(uuid))
            {
                uuid = config.Uuid;
            }
            PNResult <PNSetUuidMetadataResult> ret = new PNResult <PNSetUuidMetadataResult>();

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

            requestState.ResponseType      = PNOperationType.PNSetUuidMetadataOperation;
            requestState.Reconnect         = false;
            requestState.EndPointOperation = this;

            requestState.UsePatchMethod = true;

            Dictionary <string, object> messageEnvelope = new Dictionary <string, object>();

            messageEnvelope.Add("name", uuidName);
            if (uuidExternalId != null)
            {
                messageEnvelope.Add("externalId", uuidExternalId);
            }
            if (uuidProfileUrl != null)
            {
                messageEnvelope.Add("profileUrl", uuidProfileUrl);
            }
            if (uuidEmail != null)
            {
                messageEnvelope.Add("email", uuidEmail);
            }
            if (uuidCustom != null)
            {
                messageEnvelope.Add("custom", uuidCustom);
            }
            string patchMessage = jsonLibrary.SerializeToJsonString(messageEnvelope);

            byte[] patchData = Encoding.UTF8.GetBytes(patchMessage);

            IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : "");
            Uri request = urlBuilder.BuildSetUuidMetadataRequest("PATCH", patchMessage, uuid, includeCustom, externalQueryParam);

            Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false, patchData).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);
                PNSetUuidMetadataResult responseResult  = responseBuilder.JsonToObject <PNSetUuidMetadataResult>(resultList, true);
                if (responseResult != null)
                {
                    ret.Result = responseResult;
                }
            }

            return(ret);
        }