コード例 #1
0
            public async Task Handle(Command message)
            {
                string url = "https://api.instagram.com/v1/tags/feirapreta/media/recent?access_token=7207542169.480fb87.1cc924b10c4b43a5915543675bd5f736";

                WebResponse response = processWebRequest(url);

                using (var sr = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    var json = JObject.Parse(await sr.ReadToEndAsync());

                    if (json["data"] == null)
                    {
                        throw new HttpException(404, "Sem publicações existentes");
                    }

                    var medias = json["data"].ToList();

                    foreach (var media in medias)
                    {
                        var listTags = media["tags"].ToList();

                        if (listTags.Count == 0)
                        {
                            continue;
                        }

                        var person = await db.Person.SingleOrDefaultAsync(p => p.UsernameInstagram == media["user"]["username"].ToString());

                        if (person == null)
                        {
                            continue;
                        }

                        var tags = new List <String>();

                        foreach (var tag in listTags)
                        {
                            tags.Add(tag.ToString());
                        }

                        if (await db.Publication.SingleOrDefaultAsync(p => p.Link == media["link"].ToString()) != null)
                        {
                            continue;
                        }

                        if (tags.Contains("feirapreta") && tags.Contains("produto"))
                        {
                            Domain.Publication publication = new Domain.Publication
                            {
                                ImageLowResolution      = media["images"]["low_resolution"]["url"].ToString(),
                                ImageStandardResolution = media["images"]["standard_resolution"]["url"].ToString(),
                                ImageThumbnail          = media["images"]["thumbnail"]["url"].ToString(),
                                PersonId             = person.Id,
                                CreatedDate          = DateTime.Now,
                                IsHighlight          = false,
                                CreatedDateInstagram = DateTime.Now,
                                Subtitle             = media["caption"]["text"].ToString(),
                                Link = media["link"].ToString()
                            };

                            db.Publication.Add(publication);

                            foreach (var t in tags)
                            {
                                var command = new Tag.Create.Command
                                {
                                    Nome          = t,
                                    PublicationId = publication.Id
                                };

                                await mediator.Send(command);
                            }

                            await db.SaveChangesAsync();
                        }
                    }
                };
            }
コード例 #2
0
ファイル: Create.cs プロジェクト: danielkenji01/FeiraPreta
            public async Task Handle(Command message)
            {
                if (message.Link == null || message.Link.Trim() == "")
                {
                    throw new HttpException(400, "Link não pode ser nulo");
                }

                var exists = await db.Publication.SingleOrDefaultAsync(p => p.Link == message.Link);

                if (exists != null)
                {
                    if (exists.DeletedDate.HasValue)
                    {
                        exists.DeletedDate = null;
                        exists.IsHighlight = false;
                    }
                    else
                    {
                        throw new HttpException(409, "Link já existente");
                    }
                }
                else
                {
                    int firstIndex = message.Link.IndexOf("p/");
                    int lastIndex  = message.Link.LastIndexOf("/");

                    string shortcode = message.Link.Substring(firstIndex + 2, lastIndex - firstIndex - 2);

                    string url = "https://api.instagram.com/v1/media/shortcode/" + shortcode + "?access_token=7207542169.480fb87.1cc924b10c4b43a5915543675bd5f736";

                    WebResponse response = processWebRequest(url);

                    Domain.Publication publication = new Domain.Publication();

                    using (var sr = new System.IO.StreamReader(response.GetResponseStream()))
                    {
                        var json = JObject.Parse(await sr.ReadToEndAsync());

                        if (json["data"] == null)
                        {
                            throw new HttpException(404, "Link inválido");
                        }

                        var person = await db.Person.SingleOrDefaultAsync(p => p.UsernameInstagram == json["data"]["user"]["username"].ToString());

                        if (person == null)
                        {
                            throw new HttpException(400, "Empreendedor não está cadastrado");
                        }

                        publication = new Domain.Publication
                        {
                            ImageLowResolution      = json["data"]["images"]["low_resolution"]["url"].ToString(),
                            ImageStandardResolution = json["data"]["images"]["standard_resolution"]["url"].ToString(),
                            ImageThumbnail          = json["data"]["images"]["thumbnail"]["url"].ToString(),
                            PersonId             = person.Id,
                            CreatedDate          = DateTime.Now,
                            IsHighlight          = false,
                            CreatedDateInstagram = DateTime.Now,
                            Subtitle             = json["data"]["caption"]["text"].ToString(),
                            Link = message.Link
                        };

                        db.Publication.Add(publication);

                        var tags = json["data"]["tags"];

                        foreach (var t in tags)
                        {
                            var command = new Tag.Create.Command
                            {
                                Nome          = t.ToString(),
                                PublicationId = publication.Id
                            };

                            await mediator.Send(command);
                        }
                    };
                }

                await db.SaveChangesAsync();
            }