Esempio n. 1
0
        public DiscordEmbed Build(CachedTweet tweet)
        {
            var polandTimeZone    = TZConvert.GetTimeZoneInfo("Europe/Warsaw");
            var createdAtWithKind = DateTime.SpecifyKind(tweet.CreatedAt, DateTimeKind.Unspecified);
            var createdAtUtc      = TimeZoneInfo.ConvertTimeToUtc(createdAtWithKind, polandTimeZone);
            var date = createdAtUtc.ToString("F", CultureInfo.InvariantCulture);

            var embed = new DiscordEmbedBuilder
            {
                Title       = $"{tweet.CreatedByDisplayName} - Twitter",
                Url         = tweet.Url,
                Description = HttpUtility.HtmlDecode(tweet.FullText),
                Color       = new DiscordColor(Constants.EmbedColor),
                ImageUrl    = tweet.ImageUrl,
                Thumbnail   = new DiscordEmbedBuilder.EmbedThumbnail
                {
                    Url = tweet.AvatarUrl
                },
                Footer = new DiscordEmbedBuilder.EmbedFooter
                {
                    Text = $"{date} UTC"
                }
            };

            return(embed);
        }
        public async Task CreateAndDelete()
        {
            var id     = 152L;
            var userId = 15;

            var tweet = new CachedTweet
            {
                UserId    = userId,
                Id        = id,
                Text      = "text data",
                FullText  = "full text data",
                CreatedAt = DateTime.UtcNow
            };

            var dal = new CachedTweetsPostgresDal(_settings);
            await dal.CreateTweetAsync(id, userId, tweet);

            var result = await dal.GetTweetAsync(id);

            Assert.IsNotNull(result);

            await dal.DeleteTweetAsync(id);

            result = await dal.GetTweetAsync(id);

            Assert.IsNull(result);
        }
Esempio n. 3
0
        public void AddCachedTweets(IEnumerable <ITweetModel> tweets)
        {
            lock (locker)
            {
                foreach (var tweet in tweets)
                {
                    #region cache tweets
                    var entity = context.CachedTweets.FirstOrDefault(t => t.Id == tweet.Id);
                    if (entity == null)
                    {
                        entity = new CachedTweet {
                            Id = tweet.Id
                        };
                        context.CachedTweets.InsertOnSubmit(entity);
                    }
                    entity.Data = SerializeObject(tweet);
                    #endregion

                    #region cache users
                    var user = context.CachedUsers.FirstOrDefault(u => u.Id == tweet.User.ScreenName);
                    if (user == null)
                    {
                        user = new CachedUser {
                            Id = tweet.User.ScreenName
                        };
                        context.CachedUsers.InsertOnSubmit(user);
                    }
                    user.Data = SerializeObject(tweet.User);

                    #region retweet users
                    if (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null)
                    {
                        var origin = context.CachedUsers.FirstOrDefault(u => u.Id == tweet.RetweetedStatus.User.ScreenName);
                        if (origin == null)
                        {
                            origin = new CachedUser {
                                Id = tweet.RetweetedStatus.User.ScreenName
                            };
                            context.CachedUsers.InsertOnSubmit(origin);
                        }
                        origin.Data = SerializeObject(tweet.RetweetedStatus.User);
                    }
                    #endregion
                    #endregion
                }
                context.SubmitChanges();
            }
        }
Esempio n. 4
0
        public async Task CreateTweetAsync(long tweetId, int userId, CachedTweet tweet)
        {
            if (tweetId == default)
            {
                throw new ArgumentException("tweetId");
            }
            if (userId == default)
            {
                throw new ArgumentException("userId");
            }

            var serializedData = JsonConvert.SerializeObject(tweet);

            using (var dbConnection = Connection)
            {
                dbConnection.Open();

                await dbConnection.ExecuteAsync(
                    $"INSERT INTO {_settings.CachedTweetsTableName} (id,twitterUserId,data) VALUES(@id,@twitterUserId,CAST(@data as json))",
                    new { id = tweetId, twitterUserId = userId, data = serializedData });
            }
        }