aboutsummaryrefslogtreecommitdiff
path: root/OpenSubtitlesHandler/Utilities.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSubtitlesHandler/Utilities.cs')
-rw-r--r--OpenSubtitlesHandler/Utilities.cs78
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>