Example #1
0
        //public string SendMessageAsync()
        //{
        //}

        private async Task <string> SendRequest(string message, string language)
        {
            HttpClient client  = new HttpClient();
            var        content = HashMessage.GetContent(message, language);

            content.Headers.Add("Cookie", "XVIS=TEI939AFFIAGAYQZ");
            var response = await client.PostAsync(RequestsUrl.BaseUrl + RequestsUrl.ChatUrl, content);

            var responseBody = await response.Content.ReadAsStringAsync();

            int endAnswerIndex = responseBody.IndexOf("\r");
            var answerBot      = responseBody.Substring(0, endAnswerIndex);

            return(answerBot);
        }
Example #2
0
        private async Task Hash(HashMessage message)
        {
            Console.WriteLine($"Hash :: {message.Hash}");

            var partInfo  = _hashSet[message.Hash];
            var localFile = Path.Combine(_directory, message.File);

            using (var stream = File.OpenWrite(localFile))
            {
                stream.Seek(message.Start, SeekOrigin.Begin);
                await stream.WriteAsync(Convert.FromBase64String(message.Content), 0, message.Length, _cancellationToken);
            }

            partInfo.Transmitted = true;
        }
Example #3
0
        private async Task ChangedFile(FileInfo file)
        {
            for (int jj = 0; jj < NumberOfRetries; ++jj)
            {
                try
                {
                    using (var stream = File.OpenRead(file.FullPath))
                    {
                        var size    = stream.Length;
                        var message = new ChangeMessage(file.Name, size);

                        _messageCollection.Add(message, _cancellationToken);
                        var crypto = new SHA256CryptoServiceProvider();

                        for (int ii = 0; ii < (size / BlockSize) + 1; ii++)
                        {
                            var buffer = new byte[BlockSize];
                            var read   = await stream.ReadAsync(buffer, 0, BlockSize, _cancellationToken);

                            var base64 = Convert.ToBase64String(buffer);
                            var hash   = Convert.ToBase64String(crypto.ComputeHash(buffer));

                            var partMessage = new PartMessage(file.Name, ii * BlockSize, read, hash);
                            var hashMessage = new HashMessage(file.Name, ii * BlockSize, read, hash, base64);

                            _messageCollection.Add(partMessage, _cancellationToken);
                            _messageCollection.Add(hashMessage, _cancellationToken);
                        }
                    }

                    break;
                } catch (IOException ex) when(jj <= NumberOfRetries)
                {
                    Console.WriteLine($"Retrying in {DelayOnRetries / 1000}s. IO Error = {ex.Message}");
                    await Task.Delay(DelayOnRetries);
                }
            }
        }