BililiveRecorder/BililiveRecorder.Core/Utils.cs

82 lines
2.2 KiB
C#
Raw Normal View History

2018-03-21 20:56:56 +08:00
using NLog;
using System;
2018-03-13 14:54:15 +08:00
using System.Linq;
using System.Net.Sockets;
namespace BililiveRecorder.Core
{
2018-03-24 11:07:43 +08:00
public static class Utils
2018-03-13 14:54:15 +08:00
{
2018-03-24 11:07:43 +08:00
internal static byte[] ToBE(this byte[] b)
2018-03-13 14:54:15 +08:00
{
2018-10-30 23:41:38 +08:00
if (BitConverter.IsLittleEndian)
{
return b.Reverse().ToArray();
}
else
{
return b;
}
2018-03-13 14:54:15 +08:00
}
2018-03-24 11:07:43 +08:00
internal static void ReadB(this NetworkStream stream, byte[] buffer, int offset, int count)
2018-03-13 14:54:15 +08:00
{
if (offset + count > buffer.Length)
2018-10-30 23:41:38 +08:00
{
2018-03-13 14:54:15 +08:00
throw new ArgumentException();
2018-10-30 23:41:38 +08:00
}
2018-03-13 14:54:15 +08:00
int read = 0;
while (read < count)
{
var available = stream.Read(buffer, offset, count - read);
if (available == 0)
{
throw new ObjectDisposedException(null);
}
read += available;
offset += available;
}
}
2018-03-20 00:12:32 +08:00
2018-10-24 14:33:05 +08:00
public static void ApplyTo(this ISettings val1, ISettings val2)
2018-03-20 00:12:32 +08:00
{
foreach (var p in val1.GetType().GetProperties())
{
var val = p.GetValue(val1);
if (!val.Equals(p.GetValue(val2)))
2018-10-30 23:41:38 +08:00
{
2018-03-20 00:12:32 +08:00
p.SetValue(val2, val);
2018-10-30 23:41:38 +08:00
}
2018-03-20 00:12:32 +08:00
}
}
2018-03-21 20:56:56 +08:00
2018-03-24 11:07:43 +08:00
internal static void Log(this Logger logger, int id, LogLevel level, string message, Exception exception = null)
2018-03-21 20:56:56 +08:00
{
var log = new LogEventInfo()
{
Level = level,
Message = message,
Exception = exception,
};
log.Properties["roomid"] = id;
logger.Log(log);
}
2018-10-30 23:41:38 +08:00
private static string _useragent;
internal static string UserAgent
{
get
{
if (string.IsNullOrWhiteSpace(_useragent))
{
string version = typeof(Utils).Assembly.GetName().Version.ToString();
_useragent = $"Mozilla/5.0 BililiveRecorder/{version} (+https://github.com/Bililive/BililiveRecorder;bliverec@danmuji.org)";
}
return _useragent;
}
}
2018-03-13 14:54:15 +08:00
}
}