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