public async Task <Stream> GetMessageContent(string id, MessageEntity.Message message, UserAccountEntity userAccountEntity) { try { var authenticationManager = new AuthenticationManager(); var user = userAccountEntity.GetUserEntity(); if (userAccountEntity.GetAccessToken().Equals("refresh")) { await authenticationManager.RefreshAccessToken(userAccountEntity); } var content = "image-data-0"; string url = string.Format("https://{0}-gmsg.np.community.playstation.net/groupMessaging/v1/messageGroups/{1}/messages/{2}?contentKey={3}&npLanguage={4}", user.Region, id, message.messageUid, content, user.Language); var theAuthClient = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, url); request.Headers.CacheControl = new CacheControlHeaderValue { NoCache = true }; request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", userAccountEntity.GetAccessToken()); var response = await theAuthClient.SendAsync(request); var responseContent = await response.Content.ReadAsStreamAsync(); return(responseContent); } catch (Exception) { return(null); } }
public async Task <Stream> GetImageMessageContent(string id, MessageEntity.Message message, UserAccountEntity userAccountEntity) { try { var user = userAccountEntity.GetUserEntity(); const string content = "image-data-0"; var url = string.Format(EndPoints.MessageContent, user.Region, id, message.messageUid, content, user.Language); url += "&r=" + Guid.NewGuid(); var theAuthClient = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, url); request.Headers.CacheControl = new CacheControlHeaderValue { NoCache = true }; request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", userAccountEntity.GetAccessToken()); var response = await theAuthClient.SendAsync(request); var responseContent = await response.Content.ReadAsStreamAsync(); return(responseContent); } catch (Exception ex) { throw new Exception("Failed to get image message content", ex); } }
private async void MessagesListView_OnItemClick(object sender, ItemClickEventArgs e) { string messageId = string.Format("~{0},{1}", _userName, App.UserAccountEntity.GetUserEntity().OnlineId); MessageProgressBar.Visibility = Visibility.Visible; if (UserMessagePopup.IsOpen) { MessageProgressBar.Visibility = Visibility.Collapsed; return; } UserMessageImage.Source = null; var messageItem = e.ClickedItem as FriendPageViewModel.MessageGroupItem; if (messageItem == null) { MessageProgressBar.Visibility = Visibility.Collapsed; return; } MessageEntity.Message message = messageItem.Message; if (message == null) { MessageProgressBar.Visibility = Visibility.Collapsed; return; } if (!message.contentKeys.Contains("image-data-0")) { MessageProgressBar.Visibility = Visibility.Collapsed; return; } try { var messageManager = new MessageManager(); Stream imageBytes = await messageManager.GetMessageContent(messageId, message, App.UserAccountEntity); BitmapImage image = await DecodeImage(imageBytes); UserMessageImage.Source = image; } catch (Exception) { MessageProgressBar.Visibility = Visibility.Collapsed; UserMessageImage.Source = null; return; } MessageProgressBar.Visibility = Visibility.Collapsed; UserMessagePopup.HorizontalOffset = (Window.Current.Bounds.Width - 400) / 2; UserMessagePopup.VerticalOffset = (Window.Current.Bounds.Height - 600) / 2; UserMessagePopup.IsOpen = true; }
private async void MessagesListView_OnItemClick(object sender, ItemClickEventArgs e) { var messageItem = e.ClickedItem as MessagePageViewModel.MessageGroupItem; if (messageItem == null) { return; } MessageEntity.Message message = messageItem.Message; if (message == null) { return; } UserMessageGrid.DataContext = message; if (message.contentKeys == null) { MessageImageGrid.Visibility = Visibility.Collapsed; return; } if (!message.contentKeys.Contains("image-data-0")) { MessageImageGrid.Visibility = Visibility.Collapsed; return; } MessageImageGrid.Visibility = Visibility.Visible; MessageImage.Visibility = Visibility.Collapsed; LoadingProgressRing.Visibility = Visibility.Visible; try { var messageManager = new MessageManager(); Stream imageBytes = await messageManager.GetMessageContent(_messageGroup.MessageGroupId, message, App.UserAccountEntity); BitmapImage image = await DecodeImage(imageBytes); MessageImage.Source = image; } catch (Exception) { MessageImageGrid.Visibility = Visibility.Collapsed; } LoadingProgressRing.Visibility = Visibility.Collapsed; MessageImage.Visibility = Visibility.Visible; }