diff --git a/ChatController/ChatController.csproj b/ChatController/ChatController.csproj index 3449ee1..404b57b 100644 --- a/ChatController/ChatController.csproj +++ b/ChatController/ChatController.csproj @@ -45,6 +45,9 @@ + + ..\..\BeWo\packages\RestSharp.105.2.3\lib\net45\RestSharp.dll + @@ -140,6 +143,7 @@ + diff --git a/ChatController/ChatKlassen/ChatMessage.cs b/ChatController/ChatKlassen/ChatMessage.cs index 3113f7c..3c701d1 100644 --- a/ChatController/ChatKlassen/ChatMessage.cs +++ b/ChatController/ChatKlassen/ChatMessage.cs @@ -8,8 +8,10 @@ namespace ChatController.ChatKlassen { public class ChatMessage { + public long FileSize { get; set; } + //Chat-Ansicht - public ChatMessage(string username, string message, DateTime sendtime, bool isme, long pGroupId) + public ChatMessage(string username, string message, DateTime sendtime, bool isme, long pGroupId, long fileSize) { Username = username; UserMessage = message; @@ -24,7 +26,7 @@ namespace ChatController.ChatKlassen } // Image-Ansicht - public ChatMessage(string username, string message, DateTime sendtime, bool isme, ImageSource image, string originalImage, string imageName, long pGroupId) + public ChatMessage(string username, string message, DateTime sendtime, bool isme, ImageSource image, string originalImage, string imageName, long pGroupId, long fileSize) { Username = username; UserMessage = message; @@ -43,7 +45,7 @@ namespace ChatController.ChatKlassen } //Dokumenten-Ansicht - public ChatMessage(string pUsername, string pMessageText, DateTime pSendTime, string pSmallerImagePath, bool pIsLoggedInUsersMessage, string pUrl, long pGroupId) + public ChatMessage(string pUsername, string pMessageText, DateTime pSendTime, string pSmallerImagePath, bool pIsLoggedInUsersMessage, string pUrl, long pGroupId, long fileSize) { Username = pUsername; UserMessage = pMessageText; @@ -133,6 +135,11 @@ namespace ChatController.ChatKlassen public static bool IsHyperlink(string word) { + if(word == null) + { + return false; + } + try { if (word.IndexOfAny(@":.\/".ToCharArray()) != -1) diff --git a/ChatController/HauptKlassen/Chat.cs b/ChatController/HauptKlassen/Chat.cs index 5ca4149..c34f8a6 100644 --- a/ChatController/HauptKlassen/Chat.cs +++ b/ChatController/HauptKlassen/Chat.cs @@ -116,6 +116,7 @@ namespace ChatController.HauptKlassen if (!string.IsNullOrEmpty(serverResponse)) { + Debug.WriteLine(serverResponse); _UserMessages = JsonConvert.DeserializeObject(serverResponse); if (_UserMessages.Response.HasMorePages) @@ -337,7 +338,8 @@ namespace ChatController.HauptKlassen { var username = ""; - var user = ChatDaten.AngemeldeterUser.Response.Values.FirstOrDefault(); + //var user = ChatDaten.AngemeldeterUser.Response.Values.FirstOrDefault(); + var user = ChatDaten.AngemeldeterUser.Response.User; if(user != null) { username = $"{user.Firstname} {user.Lastname}"; @@ -345,7 +347,7 @@ namespace ChatController.HauptKlassen var time = DateTime.Now; - Messages.Add(new ChatMessage(username, pMessage, time, true, pGroupId)); + Messages.Add(new ChatMessage(username, pMessage, time, true, pGroupId, 0)); } catch (Exception e) @@ -474,7 +476,7 @@ namespace ChatController.HauptKlassen filename = filename.Replace(".bmp", ".jpg"); - Messages.Add(new ChatMessage(message.User_Name, filename, sendTime, true, bitmapImage, pFile, filename, pGroupId)); + Messages.Add(new ChatMessage(message.User_Name, filename, sendTime, true, bitmapImage, pFile, filename, pGroupId, file.LongLength)); } } @@ -483,7 +485,7 @@ namespace ChatController.HauptKlassen } else { - Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFile), sendTime, message.Smaller_Image, true, pFile, pGroupId)); + Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFile), sendTime, message.Smaller_Image, true, pFile, pGroupId, 0)); } } @@ -516,11 +518,11 @@ namespace ChatController.HauptKlassen memoryStream.Close(); ImageSource logo = bitmapImage; - Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFileName), sendtime, true, logo, pFileName, Path.GetFileName(pFileName), pGroupId)); + Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFileName), sendtime, true, logo, pFileName, Path.GetFileName(pFileName), pGroupId, memoryStream.Length)); } else { - Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFileName), sendtime, message.Smaller_Image, true, pFileName, pGroupId)); + Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFileName), sendtime, message.Smaller_Image, true, pFileName, pGroupId, 0)); } } @@ -1294,12 +1296,12 @@ namespace ChatController.HauptKlassen if (!string.IsNullOrEmpty(message.File)) { Messages.Add(Constants.ImageFileExtensions.Contains(Path.GetExtension(message.File).ToUpperInvariant()) ? //SmallerImage ist null - new ChatMessage(message.User_Name, messageText, formattedTime, isLoggedInUsersMessage, DownloadImage(message.Smaller_Image), message.File, message.Original_Filename, message.GroupId) : - new ChatMessage(message.User_Name, messageText, formattedTime, message.Smaller_Image, isLoggedInUsersMessage, message.File, message.GroupId)); + new ChatMessage(message.User_Name, messageText, formattedTime, isLoggedInUsersMessage, DownloadImage(message.Smaller_Image), message.File, message.Original_Filename, message.GroupId, message.FileSize) : + new ChatMessage(message.User_Name, messageText, formattedTime, message.Smaller_Image, isLoggedInUsersMessage, message.File, message.GroupId, message.FileSize)); } else { - Messages.Add(new ChatMessage(message.User_Name, message.Text, formattedTime, isLoggedInUsersMessage, message.GroupId)); + Messages.Add(new ChatMessage(message.User_Name, message.Text, formattedTime, isLoggedInUsersMessage, message.GroupId, message.FileSize)); } } } diff --git a/ChatController/HauptKlassen/Login.cs b/ChatController/HauptKlassen/Login.cs index b39acf9..8109f7a 100644 --- a/ChatController/HauptKlassen/Login.cs +++ b/ChatController/HauptKlassen/Login.cs @@ -1,25 +1,25 @@ using System; using System.Collections.Generic; -using System.IO; +using System.Linq; using System.Net; -using System.Text; using System.Web; using System.Windows; using ChatController.LoginKlassen; using ChatController.Utilities; using Newtonsoft.Json; +using RestSharp; namespace ChatController.HauptKlassen { public class Login { - private string _Url = ""; + private string _Url = string.Empty; - private readonly string _NewUrl = "https://dict.ownchat.de/api/server/resolve/1/"; + private const string _NewUrl = "https://dict.ownchat.de/api/server/resolve/1/"; - public string ServerUrl { get; set; } = ""; - private string _AuthToken = ""; + public string ServerUrl { get; set; } = string.Empty; + private string _AuthToken = string.Empty; private readonly string _UserName; private readonly string _Password; @@ -80,16 +80,12 @@ namespace ChatController.HauptKlassen { GetGroups(); } - - + if (_gruppeholenverbindungsaufbauOK) { - var maxUploadSize = GetMaiximumAllowedFileUploadSize(_AuthToken,_Tenant); - var ubergabe = new ChatDatenUebergabe(_serverconect, _LoggedInUser, _AllGroups, ServerUrl, _AuthToken, _UserId, _Tenant,_ApiKey, maxUploadSize); - - return ubergabe; + return new ChatDatenUebergabe(_serverconect, _LoggedInUser, _AllGroups, ServerUrl, _AuthToken, _UserId, _Tenant, _ApiKey, maxUploadSize); } } @@ -210,85 +206,62 @@ namespace ChatController.HauptKlassen { var endurl = _Url + "/api/user/loginwithchatcode"; - var postdaten = ""; + var requestBody = postparameter.Keys.Aggregate(string.Empty, (current, key) => current + HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&"); - var i = 0; - foreach (var key in postparameter.Keys) + var client = new RestClient(endurl); + var request = new RestRequest(Method.POST); + + request.AddHeader("content-type", "application/x-www-form-urlencoded"); + request.AddParameter(Constants.CustomerId, _Tenant, ParameterType.HttpHeader); + request.AddParameter("application/x-www-form-urlencoded", requestBody, ParameterType.RequestBody); + + var response = client.Post(request); + + if (response.StatusCode == HttpStatusCode.OK) { - postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&"; - } + var userDaten = JsonConvert.DeserializeObject(response.Content); - var webRequest = WebRequest.Create(endurl); - - webRequest.Method = "POST"; - webRequest.ContentType = "application/x-www-form-urlencoded"; - webRequest.Headers[Constants.CustomerId] = _Tenant; - - var daten = Encoding.ASCII.GetBytes(postdaten); - - webRequest.ContentLength = daten.Length; - - var requestStream = webRequest.GetRequestStream(); - - requestStream.Write(daten, 0, daten.Length); - - requestStream.Close(); - - var myHttpWebResponse = (HttpWebResponse)webRequest.GetResponse(); - - var responseStream = myHttpWebResponse.GetResponseStream(); - - var myStreamReader = new StreamReader(responseStream, Encoding.Default); - - var pageContent = myStreamReader.ReadToEnd(); - - if (!string.IsNullOrEmpty(pageContent)) - { - var jsonDaten = JsonConvert.DeserializeObject(pageContent); - - if (jsonDaten.Success) + if(userDaten.Success) { - foreach (var datev in jsonDaten.Response) - { - _AuthToken = datev.Value.Token; - _UserId = datev.Value.Oid; - } + _AuthToken = userDaten.Response.User.Token; + _UserId = userDaten.Response.User.Oid; - _LoggedInUser = jsonDaten; + _LoggedInUser = userDaten; _ownchatVerbindungsaufbauOK = true; } else { - if (jsonDaten.Errors.chatcode_failed != null) + if(userDaten.Errors.chatcode_failed != null) { - if (_ShouldShowMessageBox) + if(_ShouldShowMessageBox) { - MessageBox.Show("Fehler: " + jsonDaten.Errors.chatcode_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Error); - } - }else if (jsonDaten.Errors.login_failed != null) - { - if (_ShouldShowMessageBox) - { - MessageBox.Show("Fehler: " + jsonDaten.Errors.login_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Error); + MessageBox.Show("Fehler: " + userDaten.Errors.chatcode_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Error); } } - + else if(userDaten.Errors.login_failed != null) + { + if(_ShouldShowMessageBox) + { + MessageBox.Show("Fehler: " + userDaten.Errors.login_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + _ownchatVerbindungsaufbauOK = false; } } - - myStreamReader.Close(); - responseStream.Close(); - - } - catch (Exception e) + else { - if (_ShouldShowMessageBox) - { - MessageBox.Show("Fehler:" + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); - } + MessageBox.Show(response.Content, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } + } + catch (Exception e) + { + if (_ShouldShowMessageBox) + { + MessageBox.Show("Fehler:" + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); + } + } } private void GetGroups() @@ -306,7 +279,7 @@ namespace ChatController.HauptKlassen using (var response = request.GetResponse()) { var serverResponse = Utils.ReadStream(response); - + if (!string.IsNullOrEmpty(serverResponse)) { var jsonDaten = JsonConvert.DeserializeObject(serverResponse); diff --git a/ChatController/LoginKlassen/UserDaten.cs b/ChatController/LoginKlassen/UserDaten.cs index 97946aa..4f6bcfa 100644 --- a/ChatController/LoginKlassen/UserDaten.cs +++ b/ChatController/LoginKlassen/UserDaten.cs @@ -1,31 +1,33 @@ -using System.Collections.Generic; +using Newtonsoft.Json; namespace ChatController.LoginKlassen { - public class UserDaten + public class UserDaten { - public Dictionary Response { get; set; } + public string Token { get; set; } + + public OwnChatLoginResponse Response { get; set; } + public string Message { get; set; } + public Tetserror Errors { get; set; } + public bool Success { get; set; } } public class InputTest { - public TestInput User { get; set; } + public OwnChatLoginResponse User { get; set; } } - public class TestInput + public class OwnChatLoginResponse { - public long? Oid { get; set; } - public string UserId { get; set; } - public string Firstname { get; set; } - public string Lastname { get; set; } - public string Mobile { get; set; } - public string Picture { get; set; } - public bool Is_Employee { get; set; } + [JsonProperty("file_upload_max_size")] + public long FileUploadMaxSize { get; set; } + public string Token { get; set; } + public OwnChatUser User { get; set; } } public class Tetserror @@ -33,4 +35,24 @@ namespace ChatController.LoginKlassen public string[] chatcode_failed{ get; set; } public string[] login_failed { get; set; } } + + public class OwnChatUser + { + public long Oid { get; set; } + + public string UserId { get; set; } + + public string Firstname { get; set; } + + public string Lastname { get; set; } + + public string Mobile { get; set; } + + public string Picture { get; set; } + + [JsonProperty("is_employee")] + public bool IsEmployee { get; set; } + + public string Token { get; set; } + } } diff --git a/ChatController/LoginKlassen/UserMessages.cs b/ChatController/LoginKlassen/UserMessages.cs index 8f4ac83..c07e329 100644 --- a/ChatController/LoginKlassen/UserMessages.cs +++ b/ChatController/LoginKlassen/UserMessages.cs @@ -1,4 +1,6 @@ -namespace ChatController.LoginKlassen +using Newtonsoft.Json; + +namespace ChatController.LoginKlassen { public class UserMessages { @@ -31,5 +33,8 @@ public string User_Name { get; set; } public string User_Picture { get; set; } public long GroupId { get; set; } + + [JsonProperty("file_size")] + public long FileSize { get; set; } } } diff --git a/ChatController/Utilities/Utils.cs b/ChatController/Utilities/Utils.cs index 75ad089..41b6484 100644 --- a/ChatController/Utilities/Utils.cs +++ b/ChatController/Utilities/Utils.cs @@ -6,10 +6,12 @@ using System.Linq; using System.Net; using System.Reflection; using System.Runtime.InteropServices; +using System.Text; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Media.Imaging; +using RestSharp; using MessageBox = System.Windows.MessageBox; using PixelFormat = System.Drawing.Imaging.PixelFormat; @@ -55,40 +57,46 @@ namespace ChatController.Utilities { if (!string.IsNullOrEmpty(pPathToImageFile)) { - Bitmap bitmap; - var request = WebRequest.Create(pPathToImageFile); - using (var response = request.GetResponse()) + Bitmap bitmap = null; + + var client = new RestClient(pPathToImageFile); + var request = new RestRequest(Method.GET) { - using (var stream = response.GetResponseStream()) + ResponseWriter = stream => { - if (stream != null) + try { bitmap = new Bitmap(stream); } - else + catch (ArgumentException) { - return GetDefaultImageSource(pIsGroup, pIsEmployee); + bitmap = null; } } - } + }; - using (var memoryStream = new MemoryStream()) + client.DownloadData(request); + + if (bitmap != null) { - bitmap.Save(memoryStream, ImageFormat.Png); + using (var memoryStream = new MemoryStream()) + { + bitmap.Save(memoryStream, ImageFormat.Png); - memoryStream.Position = 0; + memoryStream.Position = 0; - var bitmapImage = new BitmapImage(); + var bitmapImage = new BitmapImage(); - bitmapImage.BeginInit(); - bitmapImage.CacheOption = BitmapCacheOption.OnLoad; - bitmapImage.StreamSource = memoryStream; - bitmapImage.EndInit(); + bitmapImage.BeginInit(); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.StreamSource = memoryStream; + bitmapImage.EndInit(); - memoryStream.Dispose(); - memoryStream.Close(); + memoryStream.Dispose(); + memoryStream.Close(); - return bitmapImage; + return bitmapImage; + } } }