示例#1
0
        private async Task <SyncStack> GetResultAsync(string Init = "false", SyncType SyncType = SyncType.All, string ContentTypeUid = null, DateTime?StartFrom = null, string SyncToken = null, string PaginationToken = null, string Locale = null)
        {
            //mainJson = null;
            Dictionary <string, object> mainJson = new Dictionary <string, object>();

            if (Init != "false")
            {
                mainJson.Add("init", "true");
                mainJson.Add("environment", this.Config.Environment);
            }
            if (StartFrom != null)
            {
                DateTime startFrom = StartFrom ?? DateTime.MinValue;
                mainJson.Add("start_from", startFrom.ToString("yyyy-MM-ddTHH\\:mm\\:ss.sssZ"));
            }
            if (SyncToken != null)
            {
                mainJson.Add("sync_token", SyncToken);
            }
            if (PaginationToken != null)
            {
                mainJson.Add("pagination_token", PaginationToken);
            }
            if (ContentTypeUid != null)
            {
                mainJson.Add("content_type_uid", ContentTypeUid);
            }
            if (Locale != null)
            {
                mainJson.Add("locale", Locale);
            }
            if (SyncType.HasFlag(SyncType.All))
            {
            }
            if (SyncType.HasFlag(SyncType.All))
            {
                mainJson.Add("type", "entry_published,asset_published,entry_unpublished,asset_unpublished,entry_deleted,asset_deleted,content_type_deleted");
            }
            else
            {
                List <string> Type = new List <string>();
                if (SyncType.HasFlag(SyncType.EntryDeleted))
                {
                    Type.Add("entry_deleted");
                }
                if (SyncType.HasFlag(SyncType.EntryPublished))
                {
                    Type.Add("entry_published");
                }
                if (SyncType.HasFlag(SyncType.EntryUnpublished))
                {
                    Type.Add("entry_unpublished");
                }
                if (SyncType.HasFlag(SyncType.AssetDeleted))
                {
                    Type.Add("asset_deleted");
                }
                if (SyncType.HasFlag(SyncType.AssetPublished))
                {
                    Type.Add("asset_published");
                }
                if (SyncType.HasFlag(SyncType.AssetUnpublished))
                {
                    Type.Add("asset_unpublished");
                }
                if (SyncType.HasFlag(SyncType.ContentTypeDeleted))
                {
                    Type.Add("content_type_deleted");
                }
                mainJson.Add("type", String.Join(",", Type.ToArray()));
            }

            try
            {
                HttpRequestHandler requestHandler = new HttpRequestHandler();
                string             js             = await requestHandler.ProcessRequest(_SyncUrl, _LocalHeaders, mainJson);

                SyncStack stackSyncOutput = JsonConvert.DeserializeObject <SyncStack>(js);
                return(stackSyncOutput);
            }
            catch (Exception ex)
            {
                throw GetContentstackError(ex);
            }
        }