diff options
Diffstat (limited to 'OpenSubtitlesHandler/Utilities.cs')
| -rw-r--r-- | OpenSubtitlesHandler/Utilities.cs | 78 |
1 files changed, 30 insertions, 48 deletions
diff --git a/OpenSubtitlesHandler/Utilities.cs b/OpenSubtitlesHandler/Utilities.cs index 9a90462f6..3fe606c78 100644 --- a/OpenSubtitlesHandler/Utilities.cs +++ b/OpenSubtitlesHandler/Utilities.cs @@ -20,10 +20,11 @@ using System; using System.Collections.Generic; using System.Text; using System.IO; -using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; +using MediaBrowser.Model.Cryptography; +using MediaBrowser.Model.Text; namespace OpenSubtitlesHandler { @@ -32,50 +33,36 @@ namespace OpenSubtitlesHandler /// </summary> public sealed class Utilities { + public static ICryptoProvider CryptographyProvider { get; set; } + public static IHttpClient HttpClient { get; set; } + public static ITextEncoding EncodingHelper { get; set; } + private const string XML_RPC_SERVER = "https://api.opensubtitles.org/xml-rpc"; /// <summary> /// Compute movie hash /// </summary> - /// <param name="fileName">The complete media file path</param> /// <returns>The hash as Hexadecimal string</returns> - public static string ComputeHash(string fileName) + public static string ComputeHash(Stream stream) { - byte[] hash = MovieHasher.ComputeMovieHash(File.OpenRead(fileName)); + byte[] hash = MovieHasher.ComputeMovieHash(stream); return MovieHasher.ToHexadecimal(hash); } /// <summary> - /// Compute md5 for a file - /// </summary> - /// <param name="filename">The complete file path</param> - /// <returns>MD5 of the file</returns> - public static string ComputeMd5(string filename) - { - var md5 = MD5.Create(); - var sb = new StringBuilder(); - Stream str = new FileStream(filename, FileMode.Open, FileAccess.Read); - - foreach (var b in md5.ComputeHash(str)) - sb.Append(b.ToString("x2").ToLower()); - str.Close(); - return sb.ToString(); - } - /// <summary> /// Decompress data using GZip /// </summary> /// <param name="dataToDecompress">The stream that hold the data</param> /// <returns>Bytes array of decompressed data</returns> public static byte[] Decompress(Stream dataToDecompress) { - MemoryStream target = new MemoryStream(); - - using (System.IO.Compression.GZipStream decompressionStream = new System.IO.Compression.GZipStream(dataToDecompress, - System.IO.Compression.CompressionMode.Decompress)) + using (MemoryStream target = new MemoryStream()) { - decompressionStream.CopyTo(target); + using (System.IO.Compression.GZipStream decompressionStream = new System.IO.Compression.GZipStream(dataToDecompress, System.IO.Compression.CompressionMode.Decompress)) + { + decompressionStream.CopyTo(target); + } + return target.ToArray(); } - return target.GetBuffer(); - } /// <summary> @@ -122,35 +109,30 @@ namespace OpenSubtitlesHandler /// <summary> /// Handle server response stream and decode it as given encoding string. /// </summary> - /// <param name="responseStream">The response stream. Expects a stream that doesn't support seek.</param> - /// <param name="encoding">The encoding that should be used to decode buffer</param> /// <returns>The string of the stream after decode using given encoding</returns> - public static string GetStreamString(Stream responseStream, Encoding encoding) + public static string GetStreamString(Stream responseStream) { - // Handle response, should be XML text. - List<byte> data = new List<byte>(); - while (true) + using (responseStream) { - int r = responseStream.ReadByte(); - if (r < 0) - break; - data.Add((byte)r); + // Handle response, should be XML text. + List<byte> data = new List<byte>(); + while (true) + { + int r = responseStream.ReadByte(); + if (r < 0) + break; + data.Add((byte)r); + } + var bytes = data.ToArray(); + return EncodingHelper.GetASCIIEncoding().GetString(bytes, 0, bytes.Length); } - responseStream.Close(); - return encoding.GetString(data.ToArray()); } - /// <summary> - /// Handle server response stream and decode it as ASCII encoding string. - /// </summary> - /// <param name="responseStream">The response stream. Expects a stream that doesn't support seek.</param> - /// <returns>The string of the stream after decode using ASCII encoding</returns> - public static string GetStreamString(Stream responseStream) + + public static byte[] GetASCIIBytes(string text) { - return GetStreamString(responseStream, Encoding.ASCII); + return EncodingHelper.GetASCIIEncoding().GetBytes(text); } - public static IHttpClient HttpClient { get; set; } - /// <summary> /// Send a request to the server /// </summary> |
