Пример #1
0
 protected void ReadChanges(Stream stream, CloudChangeResult result)
 {
     try
     {
         using (var reader = new StreamReader(stream, Encoding.UTF8))
         {
             while (!reader.EndOfStream)
             {
                 var line = reader.ReadLine();
                 if (line.StartsWith("{\"end\""))
                 {
                     result.AddResults(new List <CloudNode>(), false);
                     return;
                 }
                 var data = Deserialize <CloudChangesResultData>(line);
                 if (data.HasError)
                 {
                     result.SetError(data.StatusCode, data.Error, data.ErrorDescription);
                     return;
                 }
                 result.AddResults(data.Nodes, true);
             }
         }
     }
     catch (Exception ex)
     {
         result.SetError(ex);
     }
 }
Пример #2
0
        public async Task <CloudChangeResult> GetChanges(CloudChangesRequest parameters = null)
        {
            const string path = "changes";

            try
            {
                var url      = CreateMetaUrl(path);
                var postData = parameters == null || parameters.IsEmpty() ? "" : this.SerializeObject(parameters);
                var message  = await PostMessage(url, new StringContent(postData, Encoding.UTF8, "text/json"));

                var stream = await message.Content.ReadAsStreamAsync();

                var gZip   = new GZipStream(stream, CompressionMode.Decompress);
                var result = new CloudChangeResult
                {
                    HasMore = true,
                };
                Task.Run(() => ReadChanges(gZip, result));
                return(result);
            }
            catch (Exception ex)
            {
                return(new CloudChangeResult
                {
                    Error = ex.ToString(),
                    ErrorDescription = ex.Message.ToString(),
                });
            }
        }