public override async Task Execute(Message message, TelegramBotClient botClient) { bool goNext = true; int maxFileSize = 8 * 1024 * 100; // 100Kb string myMessage = ""; string pKey = ""; string savingResult = ""; string pathForSave = ""; string fileName = ""; string fileId = ""; string fileData = ""; string actXml = SentinelSettings.activationXmlString; var chatId = message.Chat.Id; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Get Chat Id for response message: " + chatId); } if (message.Type != Telegram.Bot.Types.Enums.MessageType.Document) { // Return error message if C2V is not provided myMessage = "C2V is missing! Please do not forget add C2V and try again. "; goNext = false; } if (goNext) { if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to get Product Key from message: " + message.Caption); } try { pKey = message.Caption.Split(" ")[1]; } catch { goNext = false; } if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Product Key is: " + pKey); } if (String.IsNullOrEmpty(pKey) || !SentinelMethods.ProductKeyAndAidValidator(pKey)) { // Return error message if PK is invalid myMessage = "Product Key is invalid (format)! Please check Product key and try again. "; goNext = false; } } if (goNext) { fileName = SentinelMethods.FileNameBuilder(Name, true, pKey); pathForSave = SentinelMethods.PathBuilder(fileName, true); if (!String.IsNullOrEmpty(pathForSave)) { fileId = message.Document.FileId; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"File ID is: " + fileId); } var fileInfo = await botClient.GetFileAsync(fileId); if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"File size is: " + fileInfo.FileSize.ToString() + " bits (Max file size is: " + maxFileSize.ToString() + " bit (((8 bit * 1024) byte * 100) Kb = 100Kb))"); } if (fileInfo.FileSize < maxFileSize) { using (var saveFileStream = System.IO.File.Open(pathForSave, FileMode.Create)) { await botClient.DownloadFileAsync(fileInfo.FilePath, saveFileStream); savingResult = "OK"; } if (savingResult == "OK") { fileData = await System.IO.File.ReadAllTextAsync(pathForSave); if (Startup.myAppSettings.LogIsEnabled) { Log.Write("Incomming file(size: " + fileInfo.FileSize.ToString() + " bits) was saved in dir: " + pathForSave); } } else { myMessage = "Problem with saving file on server. Saving result: " + savingResult + "\n\n"; if (Startup.myAppSettings.LogIsEnabled) { Log.Write("Problem with saving file on server. Saving result: " + savingResult); } goNext = false; } } else { myMessage = "Incomming file size is to big (more then 2 Mb): " + fileInfo.FileSize.ToString() + " bits\n\n"; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"File size: " + fileInfo.FileSize.ToString() + " bits more then: " + maxFileSize.ToString()); } goNext = false; } } else { goNext = false; } } if (goNext && savingResult == "OK") { actXml = actXml.Replace("{PLACEHOLDER}", fileData); myHttpConnector = myHttpConnector.GetRequest("loginpk", HttpMethod.Post, null, new KeyValuePair <string, string>("productKey", pKey)); // TODO login first! if (myHttpConnector.httpClientResponseStatus == "OK") { myHttpConnector = myHttpConnector.GetRequest(Name, HttpMethod.Post, pKey, new KeyValuePair <string, string>("activationXml", actXml), myHttpConnector); // TODO activation! if (myHttpConnector.httpClientResponseStatus == "OK") { XDocument activationResultXml = XDocument.Parse(myHttpConnector.httpClientResponseStr); fileName = SentinelMethods.FileNameBuilder(Name); pathForSave = SentinelMethods.PathBuilder(fileName); if (!String.IsNullOrEmpty(pathForSave)) { XDocument v2cXml = XDocument.Parse(activationResultXml.Descendants("activationString").FirstOrDefault().Value); savingResult = SentinelMethods.SaveFile(pathForSave, v2cXml.ToString()); if (savingResult == "OK") { using (var fileStream = new FileStream(pathForSave, FileMode.Open, FileAccess.Read, FileShare.Read)) { await botClient.SendDocumentAsync( chatId : chatId, document : new InputOnlineFile(fileStream, fileName), caption : "Here is your license by Product Key: " + pKey + "\n" + "AID: " + activationResultXml.Descendants("AID").FirstOrDefault().Value ); myMessage = ""; if (Startup.myAppSettings.LogIsEnabled) { Log.Write("License by Product Key: " + pKey + " | AID: " + activationResultXml.Descendants("AID").FirstOrDefault().Value); } } } else { myMessage = "Problem with saving file on server. Saving result: " + savingResult + "\n\n"; if (Startup.myAppSettings.LogIsEnabled) { Log.Write("Problem with saving file on server. Saving result: " + savingResult); } } } } else { myMessage = "Activation error: " + myHttpConnector.httpClientResponseStatus; if (Startup.myAppSettings.LogIsEnabled) { Log.Write("Activation error: " + myHttpConnector.httpClientResponseStatus); } } } else { myMessage = "Login error: " + myHttpConnector.httpClientResponseStatus; if (Startup.myAppSettings.LogIsEnabled) { Log.Write("Login error: " + myHttpConnector.httpClientResponseStatus); } } if (!String.IsNullOrEmpty(myMessage)) { if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to send response message - " + myMessage); } await botClient.SendTextMessageAsync(chatId, myMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } } else { if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to send response message - " + myMessage); } await botClient.SendTextMessageAsync(chatId, myMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } }
public override async Task Execute(Message message, TelegramBotClient botClient) { var chatId = message.Chat.Id; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Get Chat Id for response message: " + chatId); } var myMessage = ""; var pKey = ""; var savingResult = ""; var pathForSave = ""; var fileName = ""; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to get Product Key from message: " + message.Text); } try { pKey = message.Text.Split(" ")[1]; } catch { } if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Product Key is: " + pKey); } if (!SentinelMethods.ProductKeyAndAidValidator(pKey)) { // Return error message if PK is invalid myMessage = "Product Key is invalid (format)! Please check Product key and try again. "; } else { // TODO some logics here... myHttpConnector = myHttpConnector.GetRequest("loginpk", HttpMethod.Post, null, new KeyValuePair <string, string>("productKey", pKey)); // TODO login first! if (myHttpConnector.httpClientResponseStatus == "OK") { myHttpConnector.GetRequest(Name, HttpMethod.Get, pKey, new KeyValuePair <string, string>("productKey", pKey), myHttpConnector); if (myHttpConnector.httpClientResponseStatus == "OK") { var tmpXml = SentinelSettings.pkInfoXmlString; tmpXml = tmpXml.Replace("{PLACEHOLDER}", myHttpConnector.httpClientResponseStr); XDocument pkInfoXml = XDocument.Parse(tmpXml); fileName = SentinelMethods.FileNameBuilder(Name); pathForSave = SentinelMethods.PathBuilder(fileName); if (!String.IsNullOrEmpty(pathForSave)) { var tmp = SentinelSettings.pkInfoXmlString; tmp = tmp.Replace("{PLACEHOLDER}", pkInfoXml.ToString()); savingResult = SentinelMethods.SaveFile(pathForSave, tmp); if (savingResult == "OK") { myMessage = "File was saved in dir: " + pathForSave + "\n\n"; } else { myMessage = "Problem with saving file on server. Saving result: " + savingResult + "\n\n"; } } } else { myMessage = "Get Info error: " + myHttpConnector.httpClientResponseStatus; } } else { myMessage = "Login error: " + myHttpConnector.httpClientResponseStatus; } } if (savingResult == "OK") { using (var fileStream = new FileStream(pathForSave, FileMode.Open, FileAccess.Read, FileShare.Read)) { await botClient.SendDocumentAsync( chatId : chatId, document : new InputOnlineFile(fileStream, fileName), caption : "Here is info about your Product Key: " + pKey ); } } else { if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to send response message - " + myMessage); } await botClient.SendTextMessageAsync(chatId, myMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } }
public override async Task Execute(Message message, TelegramBotClient botClient) { var chatId = message.Chat.Id; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Get Chat Id for response message: " + chatId); } var myMessage = ""; var pKey = ""; var aid = ""; var savingResult = ""; var pathForSave = ""; var fileName = ""; if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to get AID and Product Key from message: " + message.Text); } try { var tmpMass = message.Text.Split(" "); foreach (string el in tmpMass) { if (el.Contains("AID:") || el.Contains("aid:")) { aid = el.Split(":")[1]; } if (el.Contains("PK:") || el.Contains("pk:")) { pKey = el.Split(":")[1]; } } } catch { } if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"AID is: " + aid + " | Product Key is: " + pKey); } if (!SentinelMethods.ProductKeyAndAidValidator(aid) || !SentinelMethods.ProductKeyAndAidValidator(pKey)) { // Return error message if AID or Product Key is invalid myMessage = "AID or Product Key is invalid (format)! Please check AID and Product Key and try again. "; } else { // TODO some logics here... myHttpConnector = myHttpConnector.GetRequest("loginpk", HttpMethod.Post, null, new KeyValuePair <string, string>("productKey", pKey)); // TODO login first! if (myHttpConnector.httpClientResponseStatus == "OK") { myHttpConnector.GetRequest(Name, HttpMethod.Get, aid, new KeyValuePair <string, string>("aid", aid), myHttpConnector); // TODO get license by AID if (myHttpConnector.httpClientResponseStatus == "OK") { XDocument response = XDocument.Parse(myHttpConnector.httpClientResponseStr); fileName = SentinelMethods.FileNameBuilder(Name); pathForSave = SentinelMethods.PathBuilder(fileName); if (!String.IsNullOrEmpty(pathForSave)) { XDocument v2cXml = XDocument.Parse(response.Descendants("activationString").FirstOrDefault().Value); savingResult = SentinelMethods.SaveFile(pathForSave, v2cXml.ToString()); if (savingResult == "OK") { myMessage = "File was saved in dir: " + pathForSave + "\n\n"; } else { myMessage = "Problem with saving file on server. Saving result: " + savingResult + "\n\n"; } } } else { myMessage = "Get license by AID error: " + myHttpConnector.httpClientResponseStatus; } } else { myMessage = "Login error: " + myHttpConnector.httpClientResponseStatus; } } if (savingResult == "OK") { using (var fileStream = new FileStream(pathForSave, FileMode.Open, FileAccess.Read, FileShare.Read)) { await botClient.SendDocumentAsync( chatId : chatId, document : new InputOnlineFile(fileStream, fileName), caption : "Here is your license getting by AID: " + aid ); } } else { if (Startup.myAppSettings.LogIsEnabled) { Log.Write(@"Try to send response message - " + myMessage); } await botClient.SendTextMessageAsync(chatId, myMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } }