Example #1
0
        public DirectMessage(Mastonet.Entities.Status cDirectMessage, Mastonet.Entities.Account cRecipient)
        {
            CreatedAt = cDirectMessage.CreatedAt;

            var urlEntities = new List <string>();
            var text        = cDirectMessage.Content.Replace("<br />", "\n");

            text = Status.LinkRegex.Replace(text, match =>
            {
                var userMention = cDirectMessage.Mentions.Where(x => x.Url == match.Groups[2].Value || x.Url.Replace("/@", "/users/") == match.Groups[2].Value).ToArray();
                if (userMention.Length != 0)
                {
                    return(" @" + userMention.First().AccountName + " ");
                }

                urlEntities.Add(match.Groups[2].Value);
                return(" " + match.Groups[1]?.Value + match.Groups[3].Value + " ");
            });
            text = Status.ContentRegex.Replace(text, "").Trim();
            text = EmojiPatterns.LightValidEmoji.Replace(text,
                                                         x => EmojiPatterns.EmojiDictionary.TryGetValue(x.Groups[2].Value, out string val) ? val : x.Value);
            Text = text;

            Entities = new Entities(cDirectMessage.MediaAttachments, cDirectMessage.Mentions, cDirectMessage.Tags,
                                    urlEntities, cDirectMessage.Content);

            Id                = cDirectMessage.Id;
            Recipient         = new User(cRecipient);
            Sender            = new User(cDirectMessage.Account);
            PossiblySensitive = cDirectMessage.Sensitive ?? false;
        }
Example #2
0
        public RetweetInformation(Mastonet.Entities.Status cOrigStatus)
        {
            if (cOrigStatus.Reblog == null)
            {
                return;
            }

            User      = new User(cOrigStatus.Account);
            Id        = cOrigStatus.Id;
            CreatedAt = cOrigStatus.CreatedAt;
        }
Example #3
0
        public Status(Mastonet.Entities.Status cOrigStatus)
        {
            var cStatus = cOrigStatus;

            if (cStatus.Reblog != null)
            {
                cStatus = cStatus.Reblog;
            }

            CreatedAt           = cStatus.CreatedAt;
            FavoriteCount       = cStatus.FavouritesCount;
            RetweetCount        = cStatus.ReblogCount;
            InReplyToStatusId   = cStatus.InReplyToId ?? 0;
            InReplyToScreenName = "";
            InReplyToUserId     = cStatus.InReplyToAccountId ?? 0;
            Id = cStatus.Id;

            var urlEntities = new List <string>();
            var text        = cStatus.Content.Replace("<br />", "\n");

            text = LinkRegex.Replace(text, match =>
            {
                var userMention = cStatus.Mentions.Where(x => x.Url == match.Groups[2].Value || x.Url.Replace("/@", "/users/") == match.Groups[2].Value).ToArray();
                if (userMention.Length != 0)
                {
                    return(" @" + userMention.First().AccountName + " ");
                }

                urlEntities.Add(match.Groups[2].Value);
                return(" " + match.Groups[1]?.Value + match.Groups[3].Value + " ");
            });
            text = ContentRegex.Replace(text, "").Trim();
            text = EmojiPatterns.LightValidEmoji.Replace(text,
                                                         x => EmojiPatterns.EmojiDictionary.TryGetValue(x.Groups[2].Value, out string val) ? val : x.Value);
            Text = text;

            Entities = new Entities(cStatus.MediaAttachments, cStatus.Mentions, cStatus.Tags, urlEntities, text);

            User                  = cStatus.Account != null ? new User(cStatus.Account) : null;
            IsFavorited           = cStatus.Favourited ?? false;
            IsRetweeted           = cStatus.Reblogged ?? false;
            PossiblySensitive     = cStatus.Sensitive ?? false;
            RetweetInformation    = cOrigStatus.Reblog != null ? new RetweetInformation(cOrigStatus) : null;
            HasRetweetInformation = cOrigStatus.Reblog != null;
            MentionStatus         = null;
            QuotedStatus          = null;
            QuotedStatusId        = 0;
            Url    = cStatus.Url;
            Source = cStatus.Application != null ? cStatus.Application.Name : "Web";
        }
Example #4
0
        public Toot(Mastonet.Entities.Status toot)
        {
            InitializeComponent();
            // Icon
            var bitmapImage = new BitmapImage();

            bitmapImage.BeginInit();
            bitmapImage.UriSource = new Uri(toot.Account.AvatarUrl);
            bitmapImage.EndInit();

            iconImage.Source = bitmapImage;
            // Name
            nameTextBlock.Text = $"{toot.Account.DisplayName} (@{toot.Account.AccountName})";

            // Content
            mainContent.Text = ParseContent(toot.Content);

            // date
            dateTextBlock.Text = toot.CreatedAt.AddHours(9).ToString();
        }
Example #5
0
        /// <summary>
        /// Mastonet の Status を MastodonStatus に変換する
        /// </summary>
        public static MastodonStatus ToMastodonStatus(this Mastonet.Entities.Status self)
        {
            if (self == null)
            {
                return(null);
            }

            return(new MastodonStatus(
                       id: self.Id,
                       reblog: self.Reblog.ToMastodonStatus(),
                       content: self.Content,
                       favorited: self.Favourited ?? false,
                       reblogged: self.Reblogged ?? false,
                       account: self.Account.ToMastodonAccount(),
                       replyToId: self.InReplyToId,
                       replyToAccountId: self.InReplyToAccountId,
                       mediaAttachments: self.MediaAttachments.Select(x => x.ToMastodonAttachment()),
                       tags: self.Tags.Select(x => x.ToMastodonTag()),
                       createdAt: self.CreatedAt
                       ));
        }