diff --git a/TLSharp.Core/TLSharp.Core.csproj b/TLSharp.Core/TLSharp.Core.csproj
index 31fee3a..0b8ac8d 100644
--- a/TLSharp.Core/TLSharp.Core.csproj
+++ b/TLSharp.Core/TLSharp.Core.csproj
@@ -63,7 +63,7 @@
-
+
diff --git a/TLSharp.Core/Requests/UploadHelper.cs b/TLSharp.Core/Utils/UploadHelper.cs
similarity index 95%
rename from TLSharp.Core/Requests/UploadHelper.cs
rename to TLSharp.Core/Utils/UploadHelper.cs
index f7d14fe..68fc176 100644
--- a/TLSharp.Core/Requests/UploadHelper.cs
+++ b/TLSharp.Core/Utils/UploadHelper.cs
@@ -1,136 +1,135 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Security.Cryptography;
-using System.Text;
-using System.Threading.Tasks;
-using TeleSharp.TL;
-using TeleSharp.TL.Upload;
-using TLSharp.Core.Utils;
-
-namespace TLSharp.Core.Requests
-{
- public static class UploadHelper
- {
- private static string GetFileHash(byte[] data)
- {
- string md5_checksum;
- using (var md5 = MD5.Create())
- {
- var hash = md5.ComputeHash(data);
- var hashResult = new StringBuilder(hash.Length * 2);
-
- foreach (byte t in hash)
- hashResult.Append(t.ToString("x2"));
-
- md5_checksum = hashResult.ToString();
- }
-
- return md5_checksum;
- }
-
- public static async Task UploadFile(this TelegramClient client, string name, StreamReader reader)
- {
- const long tenMb = 10 * 1024 * 1024;
- return await UploadFile(name, reader, client, reader.BaseStream.Length >= tenMb);
- }
-
- private static byte[] GetFile(StreamReader reader)
- {
- var file = new byte[reader.BaseStream.Length];
-
- using (reader)
- {
- reader.BaseStream.Read(file, 0, (int)reader.BaseStream.Length);
- }
-
- return file;
- }
-
- private static Queue GetFileParts(byte[] file)
- {
- var fileParts = new Queue();
-
- const int maxFilePart = 512 * 1024;
-
- using (var stream = new MemoryStream(file))
- {
- while (stream.Position != stream.Length)
- {
- if ((stream.Length - stream.Position) > maxFilePart)
- {
- var temp = new byte[maxFilePart];
- stream.Read(temp, 0, maxFilePart);
- fileParts.Enqueue(temp);
- }
- else
- {
- var length = stream.Length - stream.Position;
- var temp = new byte[length];
- stream.Read(temp, 0, (int)(length));
- fileParts.Enqueue(temp);
- }
- }
- }
-
- return fileParts;
- }
-
- private static async Task UploadFile(string name, StreamReader reader,
- TelegramClient client, bool isBigFileUpload)
- {
- var file = GetFile(reader);
- var fileParts = GetFileParts(file);
-
- int partNumber = 0;
- int partsCount = fileParts.Count;
- long file_id = BitConverter.ToInt64(Helpers.GenerateRandomBytes(8), 0);
- while (fileParts.Count != 0)
- {
- var part = fileParts.Dequeue();
-
- if (isBigFileUpload)
- {
- await client.SendRequestAsync(new TLRequestSaveBigFilePart
- {
- file_id = file_id,
- file_part = partNumber,
- bytes = part,
- file_total_parts = partsCount
- });
- }
- else
- {
- await client.SendRequestAsync(new TLRequestSaveFilePart
- {
- file_id = file_id,
- file_part = partNumber,
- bytes = part
- });
- }
- partNumber++;
- }
-
- if (isBigFileUpload)
- {
- return new TLInputFileBig
- {
- id = file_id,
- name = name,
- parts = partsCount
- };
- }
- else
- {
- return new TLInputFile
- {
- id = file_id,
- name = name,
- parts = partsCount,
- md5_checksum = GetFileHash(file)
- };
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using TeleSharp.TL;
+using TeleSharp.TL.Upload;
+
+namespace TLSharp.Core.Utils
+{
+ public static class UploadHelper
+ {
+ private static string GetFileHash(byte[] data)
+ {
+ string md5_checksum;
+ using (var md5 = MD5.Create())
+ {
+ var hash = md5.ComputeHash(data);
+ var hashResult = new StringBuilder(hash.Length * 2);
+
+ foreach (byte t in hash)
+ hashResult.Append(t.ToString("x2"));
+
+ md5_checksum = hashResult.ToString();
+ }
+
+ return md5_checksum;
+ }
+
+ public static async Task UploadFile(this TelegramClient client, string name, StreamReader reader)
+ {
+ const long tenMb = 10 * 1024 * 1024;
+ return await UploadFile(name, reader, client, reader.BaseStream.Length >= tenMb);
+ }
+
+ private static byte[] GetFile(StreamReader reader)
+ {
+ var file = new byte[reader.BaseStream.Length];
+
+ using (reader)
+ {
+ reader.BaseStream.Read(file, 0, (int)reader.BaseStream.Length);
+ }
+
+ return file;
+ }
+
+ private static Queue GetFileParts(byte[] file)
+ {
+ var fileParts = new Queue();
+
+ const int maxFilePart = 512 * 1024;
+
+ using (var stream = new MemoryStream(file))
+ {
+ while (stream.Position != stream.Length)
+ {
+ if ((stream.Length - stream.Position) > maxFilePart)
+ {
+ var temp = new byte[maxFilePart];
+ stream.Read(temp, 0, maxFilePart);
+ fileParts.Enqueue(temp);
+ }
+ else
+ {
+ var length = stream.Length - stream.Position;
+ var temp = new byte[length];
+ stream.Read(temp, 0, (int)(length));
+ fileParts.Enqueue(temp);
+ }
+ }
+ }
+
+ return fileParts;
+ }
+
+ private static async Task UploadFile(string name, StreamReader reader,
+ TelegramClient client, bool isBigFileUpload)
+ {
+ var file = GetFile(reader);
+ var fileParts = GetFileParts(file);
+
+ int partNumber = 0;
+ int partsCount = fileParts.Count;
+ long file_id = BitConverter.ToInt64(Helpers.GenerateRandomBytes(8), 0);
+ while (fileParts.Count != 0)
+ {
+ var part = fileParts.Dequeue();
+
+ if (isBigFileUpload)
+ {
+ await client.SendRequestAsync(new TLRequestSaveBigFilePart
+ {
+ file_id = file_id,
+ file_part = partNumber,
+ bytes = part,
+ file_total_parts = partsCount
+ });
+ }
+ else
+ {
+ await client.SendRequestAsync(new TLRequestSaveFilePart
+ {
+ file_id = file_id,
+ file_part = partNumber,
+ bytes = part
+ });
+ }
+ partNumber++;
+ }
+
+ if (isBigFileUpload)
+ {
+ return new TLInputFileBig
+ {
+ id = file_id,
+ name = name,
+ parts = partsCount
+ };
+ }
+ else
+ {
+ return new TLInputFile
+ {
+ id = file_id,
+ name = name,
+ parts = partsCount,
+ md5_checksum = GetFileHash(file)
+ };
+ }
+ }
+ }
+}
diff --git a/TLSharp.Tests/TLSharpTests.cs b/TLSharp.Tests/TLSharpTests.cs
index 7ce34f7..05965d3 100644
--- a/TLSharp.Tests/TLSharpTests.cs
+++ b/TLSharp.Tests/TLSharpTests.cs
@@ -12,6 +12,7 @@ using TeleSharp.TL;
using TeleSharp.TL.Messages;
using TLSharp.Core;
using TLSharp.Core.Requests;
+using TLSharp.Core.Utils;
namespace TLSharp.Tests
{