Beispiel #1
0
        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);
        }