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); }
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); }
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)); }