Example #1
0
        private async Task <IReadOnlyCollection <T> > GetItemsAsync <T>(ItemKind kind, Dictionary <string, object> query)
            where T : IItem
        {
            // Unsafe workaround for no interface deserialization
            string path = $"item/{kind.ToString().ToCamelCase()}{query.AsQueryString()}";

            IReadOnlyCollection <T> response;

            if (typeof(T) != typeof(IItem))
            {
                var result = await _httpClient.GetFromJsonAsync <Response <T> >(path);

                response = result.Items;
            }
            else
            {
                var     kindType     = _kindMap[kind];
                var     responseType = typeof(Response <>).MakeGenericType(kindType);
                dynamic result       = await _httpClient.GetFromJsonAsync(path, responseType);

                response = result.Items;
            }

            return(response);
        }
Example #2
0
        public async Task <IItem> GetItemAsync(string id, ItemKind kind)
        {
            var kindType = _kindMap[kind];
            var response = await _httpClient.GetFromJsonAsync($"item/{kind.ToString().ToCamelCase()}/{id}", kindType);

            return(response as IItem);
        }