public async Task <Mini> ParseFromUrl(Uri url) { if (!CanParse(url)) { return(null); } string thingId = GetThingIdFromUrl(url); ThingiverseModel.Thing thing = await _thingiverseClient.GetThing(thingId); if (thing is null) { return(null); } Creator creator = new Creator { Name = thing.creator.name }; ThingiverseSource source = new ThingiverseSource(creator, thing.creator.public_url); creator.Sites.Add(source); Mini mini = new Mini { Name = thing.name, Status = Status.Unindexed, Cost = 0, Link = thing.public_url, Creator = creator }; if (thing.default_image != null) { mini.Thumbnail = thing.default_image.sizes.FirstOrDefault(i => i.type == "preview" && i.size == "featured").url; } else { mini.Thumbnail = thing.thumbnail; } mini.Sources.Add(new MiniSourceSite(mini, source, url)); return(mini); }
public async Task <ThingiverseModel.Thing> GetThing(string thingId) { HttpResponseMessage response = await _httpClient.GetAsync($"things/{thingId}/?access_token={_apiKey}"); HttpContent responseContent = response.Content; if (response.StatusCode == System.Net.HttpStatusCode.OK) { using (StreamReader reader = new StreamReader(await responseContent.ReadAsStreamAsync())) { string result = await reader.ReadToEndAsync(); ThingiverseModel.Thing thing = JsonConvert.DeserializeObject <ThingiverseModel.Thing>(result); return(thing); } } return(null); }