public StatusViewModel GetStatusViewModelByStatusId(string statusId)
        {
            Status status = this.GetStatusByStatusId(statusId);
            IStatusLocationRepository sttLocation          = new StatusLocationRepository(this._db);
            IStatusMessageRepository  sttMessageRepository = new StatusMessageRepository(this._db);
            IStatusImageRepository    sttImageRepository   = new StatusImageRepository(this._db);
            IUserRepository           userRepository       = new UserRepository(this._db);
            ILikeRepository           likeRepository       = new LikeRepository(this._db);
            IShareRepository          shareRepository      = new ShareRepository(this._db);
            ICommentRepository        commentRepository    = new CommentRepository(this._db);

            var message          = sttMessageRepository.GetMessageByStatusId(statusId);
            var messageProcessed = ProcessComment.ProcessMessage(message);

            LinkPreview linkPreview = ProcessMessage.GetFirstLinkPreview(message);

            var userOwner = userRepository.GetUserById(status.UserId);

            var statusViewModel = new
                                  StatusViewModel
            {
                StatusId      = statusId,
                TimePost      = status.TimePost,
                Location      = sttLocation.GetLocationForStatus(statusId),
                Message       = messageProcessed,
                Images        = sttImageRepository.GetListImage(statusId),
                UserOwner     = userOwner,
                LinkPreview   = linkPreview,
                NumShared     = shareRepository.GetNumShare(statusId),
                ListUserLiked = likeRepository.GetListUserLiked(statusId)
            };

            return(statusViewModel);
        }
Esempio n. 2
0
        public async Task <LinkPreview> CallApi(string url)
        {
            var linkPreview = new LinkPreview();

            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync($"{endpoint}?key={this.apiKey}&q={url}"))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    linkPreview = JsonConvert.DeserializeObject <LinkPreview>(apiResponse);
                }
            }
            return(linkPreview);
        }
Esempio n. 3
0
        public void AddLinkPreviewInDb(LinkPreview linkPreview)
        {
            var context = new ValidationContext(linkPreview, null, null);
            var results = new List <ValidationResult>();

            linkPreview.Id = Guid.NewGuid();
            if (Validator.TryValidateObject(linkPreview, context, results, true))
            {
                Context.LinkPreview.Add(linkPreview);
                Context.SaveChanges();
                var errors = Context.GetValidationErrors();
                if (errors.Any())
                {
                    foreach (var error in errors)
                    {
                        System.Diagnostics.Debug.WriteLine(error.ToString());
                    }
                }
            }
        }
 public async Task StorePreview(LinkPreview preview, Guid guid)
 {
     var json = JsonSerializer.Serialize(preview);
     await _redis.StoreStringAsync($"{guid}:linkpreview", json, TimeSpan.FromMinutes(20));
 }