329 lines
11 KiB
C#
329 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web;
|
|
using System.Windows;
|
|
using ChatController.Klassen;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace ChatController.HauptKlassen
|
|
{
|
|
public class Login
|
|
{
|
|
private string _url = ""; //"https://bewoplaner.beyondsoft.de/voucher_check.php"; // alt
|
|
|
|
private string _newUrl = "https://dict.ownchat.de/api/server/resolve/1/"; //https://dict.ownchat.de/api/server/resolve/{type}/{customerid} //type = Diensttyp(1,2,oder 3), customerid = Kudennummer des Kunden
|
|
|
|
private string _serverUrl = "";
|
|
private string _authToken = "";
|
|
|
|
private readonly string _benutzername;
|
|
private readonly string _passwort;
|
|
private readonly string _kundennummer;
|
|
private readonly string _chatCode;
|
|
private readonly string _apikey;
|
|
|
|
private long? _userid;
|
|
|
|
private bool _verbindungsaufbauOK = false;
|
|
private bool _ownchatVerbindungsaufbauOK = false;
|
|
private bool _gruppeholenverbindungsaufbauOK = false;
|
|
|
|
private AuthentifizierungsDaten _serverconect;
|
|
private UserDaten _userconect;
|
|
private ChatGruppenDaten _groupconect;
|
|
|
|
public Login(string kundennummer, string chatCode,string benutzername,string passwort)
|
|
{
|
|
_kundennummer = kundennummer;
|
|
_chatCode = chatCode;
|
|
_benutzername = benutzername;
|
|
_passwort = passwort;
|
|
_apikey = "0000";//default damit nichts kaput geht
|
|
}
|
|
public Login(string kundennummer, string chatCode, string benutzername, string passwort,string apikey)
|
|
{
|
|
_kundennummer = kundennummer;
|
|
_chatCode = chatCode;
|
|
_benutzername = benutzername;
|
|
_passwort = passwort;
|
|
_apikey = apikey;
|
|
}
|
|
|
|
public ChatDatenUebergabe AnmeldevorgangDurchFuehren()
|
|
{
|
|
if(ServerErmittlung()){
|
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
|
dic.Add("username", _benutzername);
|
|
dic.Add("password", _passwort);
|
|
dic.Add("chatcode",_chatCode);
|
|
|
|
VerbindeMitChatServer(dic);
|
|
|
|
|
|
// Gruppen abfragen
|
|
if (_ownchatVerbindungsaufbauOK)
|
|
{
|
|
GruppenHolen();
|
|
}
|
|
|
|
|
|
if (_gruppeholenverbindungsaufbauOK)
|
|
{
|
|
|
|
ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _userconect, _groupconect, _serverUrl, _authToken, _userid, _kundennummer,_apikey);
|
|
|
|
return ubergabe;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public bool ServerErmittlung()
|
|
{
|
|
try
|
|
{
|
|
string serverURl = _newUrl + _kundennummer;
|
|
|
|
WebRequest request = WebRequest.Create(serverURl);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
|
|
WebResponse response;
|
|
|
|
try
|
|
{
|
|
response = request.GetResponse();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
|
|
return false;
|
|
}
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse)response).StatusDescription;
|
|
|
|
string responseFromServer = ReadStream(response);
|
|
|
|
try
|
|
{
|
|
var jsonDatentyp = JsonConvert.DeserializeObject<NewAuthentifizierungsDatenTyp1>(responseFromServer);
|
|
|
|
if (jsonDatentyp.Status == 1)
|
|
{
|
|
MessageBox.Show("Kundennummer unbekannt");
|
|
return false;
|
|
}
|
|
else if (jsonDatentyp.Status == 2)
|
|
{
|
|
MessageBox.Show("Diensttyp ist für angegebene Kundennummer nicht definiert");
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
_url = jsonDatentyp.URL;
|
|
}
|
|
}
|
|
catch (Exception eds)
|
|
{
|
|
try
|
|
{
|
|
var jsonDatentyp = JsonConvert.DeserializeObject<NewAuthentifizierungsDatenTyp2>(responseFromServer);
|
|
|
|
if (jsonDatentyp.Status == 1)
|
|
{
|
|
MessageBox.Show("Kundennummer unbekannt");
|
|
return false;
|
|
}
|
|
else if (jsonDatentyp.Status == 2)
|
|
{
|
|
MessageBox.Show("Diensttyp ist für angegebene Kundennummer nicht definiert");
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
_url = jsonDatentyp.URL;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Beim Parsen der Datei ist ein fehler aufgetreten.", "Fehler",
|
|
MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
response.Close();
|
|
|
|
_serverUrl = _url;
|
|
return true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Ein nicht weiter definierter fehler ist aufgetreten: "+ e.Message,"Fehler",MessageBoxButton.OK);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private void VerbindeMitChatServer(Dictionary<string, string> postparameter)
|
|
{
|
|
try
|
|
{
|
|
var endurl = _url + "/api/user/login"; //loginwithchatcode
|
|
|
|
string postdaten = "";
|
|
|
|
int i = 0;
|
|
foreach (var key in postparameter.Keys)
|
|
{
|
|
postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&";
|
|
}
|
|
|
|
WebRequest requesten = WebRequest.Create(endurl);
|
|
|
|
requesten.Method = "POST";
|
|
requesten.ContentType = "application/x-www-form-urlencoded";
|
|
requesten.Headers["CustomerID"] = _kundennummer;
|
|
|
|
byte[] daten = Encoding.ASCII.GetBytes(postdaten);
|
|
|
|
requesten.ContentLength = daten.Length;
|
|
|
|
Stream requestStream = requesten.GetRequestStream();
|
|
|
|
requestStream.Write(daten, 0, daten.Length);
|
|
|
|
requestStream.Close();
|
|
|
|
HttpWebResponse myHttpWebResponse = (HttpWebResponse)requesten.GetResponse();
|
|
|
|
Stream responseStream = myHttpWebResponse.GetResponseStream();
|
|
|
|
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
|
|
|
|
string pageContent = myStreamReader.ReadToEnd();
|
|
|
|
|
|
//UserDaten müssen mehrere wege der initialisierung bieten
|
|
if (!pageContent.Equals(""))
|
|
{
|
|
//_serverCheckOK = true;
|
|
|
|
//string[] array = responseFromServer.Split(':');
|
|
|
|
//Json Verarbeitungsgedöns Dictionary < string, TestKlasse>
|
|
var jsonDaten = JsonConvert.DeserializeObject<UserDaten>(pageContent);
|
|
|
|
//var serv = jsonDaten[_chatcode].ServerName;
|
|
|
|
foreach (var datev in jsonDaten.Response)
|
|
{
|
|
_authToken = datev.Value.Token;
|
|
_userid = datev.Value.Oid;
|
|
}
|
|
|
|
_userconect = jsonDaten;
|
|
|
|
_ownchatVerbindungsaufbauOK = true;
|
|
}
|
|
else
|
|
{
|
|
//throw fehler
|
|
// MessageBox.Show("Keine Daten Vorhanden.");
|
|
}
|
|
|
|
|
|
// MessageBox.Show(pageContent);
|
|
|
|
myStreamReader.Close();
|
|
responseStream.Close();
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//throw fehler
|
|
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void GruppenHolen()
|
|
{
|
|
try
|
|
{
|
|
var endurl = _url + "/api/chat/groups";
|
|
|
|
WebRequest request = WebRequest.Create(endurl);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
request.Headers["Token"] = _authToken;
|
|
request.Headers["CustomerID"] = _kundennummer;
|
|
|
|
// Get the response.
|
|
WebResponse response = request.GetResponse();
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse)response).StatusDescription;
|
|
|
|
|
|
string responseFromServer = ReadStream(response);
|
|
|
|
//verarbeite hier zu json
|
|
if (!responseFromServer.Equals(""))
|
|
{
|
|
//################# Deserialisierung mit Json ###############################
|
|
var jsonDaten = JsonConvert.DeserializeObject<ChatGruppenDaten>(responseFromServer);
|
|
|
|
_groupconect = jsonDaten;
|
|
// var serv = jsonDaten[_chatcode].ServerName;
|
|
|
|
//MessageBox.Show(responseFromServer);
|
|
_gruppeholenverbindungsaufbauOK = true;
|
|
}
|
|
else
|
|
{
|
|
// MessageBox.Show("Keine Daten Vorhanden.");
|
|
}
|
|
|
|
response.Close();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
// MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
|
|
}
|
|
|
|
}
|
|
|
|
private string ReadStream(WebResponse response)
|
|
{
|
|
try
|
|
{
|
|
Stream dataStream = response.GetResponseStream();
|
|
|
|
StreamReader reader = new StreamReader(dataStream);
|
|
|
|
string responseFromServer = reader.ReadToEnd();
|
|
|
|
|
|
dataStream.Dispose();
|
|
reader.Dispose();
|
|
|
|
dataStream.Close();
|
|
reader.Close();
|
|
|
|
return responseFromServer;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
// MessageBox.Show(e.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|