Exemple #1
0
        public async Task <Thing> GetThingById(string id, CancellationToken token, IProgress <float> progress, bool ignoreCache)
        {
            if (!ignoreCache && _cacheProvider != null)
            {
                var cachedThing = await _cacheProvider.GetThingById(id);

                if (cachedThing != null)
                {
                    return(cachedThing);
                }
            }

            var targetUri = string.Format("/by_id/{0}.json", id);
            var thingStr  = await GetAuthedString(targetUri, token, progress);

            Thing result = null;

            if (thingStr.StartsWith("{\"kind\": \"Listing\""))
            {
                var listing = JsonConvert.DeserializeObject <Listing>(thingStr);
                result = listing.Data.Children.First();
            }
            else
            {
                result = JsonConvert.DeserializeObject <Thing>(thingStr);
            }

            if (_cacheProvider != null)
            {
                await _cacheProvider.SetThing(result);
            }

            return(result);
        }