using System;
using Newtonsoft.Json;
using System.Globalization;
using WingInterfaceLibrary.Enum;
namespace WingAIDiagnosisService.Common
{
public static class ConvertHelper
{
///
/// convert object to Json string
///
/// object
/// format
/// settings
///
public static string ToJson(this object obj, Formatting formatting = Formatting.None, JsonSerializerSettings settings = null)
{
if (obj == null) return string.Empty;
try
{
return JsonConvert.SerializeObject(obj, formatting, settings);
}
catch { return string.Empty; }
}
///
/// convert Json string to object
///
/// object type
/// Json string
/// settings
///
public static T JsonToObj(this string jsonStr, JsonSerializerSettings settings = null)
{
if (string.IsNullOrWhiteSpace(jsonStr)) return default(T);
try
{
return JsonConvert.DeserializeObject(jsonStr, settings);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return default(T);
}
}
///
/// convert Json string to object
///
/// Json string
/// object type
/// settings
///
public static object JsonToObj(this string jsonStr, Type type, JsonSerializerSettings settings = null)
{
if (string.IsNullOrWhiteSpace(jsonStr)) return type.IsValueType ? Activator.CreateInstance(type) : null;
try
{
return JsonConvert.DeserializeObject(jsonStr, type, settings);
}
catch { return type.IsValueType ? Activator.CreateInstance(type) : null; }
}
///
/// convert sting to int
///
/// string
/// default Value
///
public static int ToInt(this string str, int defaultValue = 0)
{
if (string.IsNullOrWhiteSpace(str)) return defaultValue;
int.TryParse(str, out defaultValue);
return defaultValue;
}
public static double ToDouble(this string str, double defaultValue = 0)
{
if (string.IsNullOrWhiteSpace(str)) return defaultValue;
double.TryParse(str, out defaultValue);
return defaultValue;
}
///
/// convert sting to float
///
///
///
///
public static float ToFloat(this string str, float defaultValue = 0)
{
if (string.IsNullOrWhiteSpace(str)) return defaultValue;
float.TryParse(str, out defaultValue);
return defaultValue;
}
///
/// convert sting to DateTime
///
///
///
///
public static DateTime ToDateTime(this string str)
{
DateTime defaultValue;
if (string.IsNullOrWhiteSpace(str)) return DateTime.MinValue;
DateTime.TryParse(str, out defaultValue);
return defaultValue;
}
///
/// convert sting to int
///
/// string
/// default Value
///
public static long ToLong(this string str, long defaultValue = 0)
{
if (string.IsNullOrWhiteSpace(str)) return defaultValue;
long.TryParse(str, out defaultValue);
return defaultValue;
}
///
/// Convert string to other type object
///
/// string
/// type
///
public static object ToObject(this string str, Type type)
{
try
{
return Convert.ChangeType(str, type, CultureInfo.InvariantCulture);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
}
///
/// convert sting to Boolean
///
/// sting
///
public static bool ToBool(this string str)
{
if (string.IsNullOrWhiteSpace(str)) return false;
bool.TryParse(str, out bool val);
return val;
}
///
/// 验证是否为空
///
/// sting
/// true
public static bool IsEmpty(this string str)
{
if (string.IsNullOrWhiteSpace(str))
{
return true;
}
return false;
}
///
/// 时间转长整形的时间戳
///
/// 当前时间
/// 是否utc格式时间戳
/// true
public static long ToTimestamp(this DateTime time, bool isUtc = false)
{
DateTime refTime = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(1970, 1, 1), TimeZoneInfo.Utc);
var diffSpan = (isUtc ? time : time.ToUniversalTime()) - refTime;
long unixTime = (long)Math.Round(diffSpan.TotalMilliseconds, MidpointRounding.AwayFromZero);
return unixTime;
}
///
/// url转token
///
/// url地址
/// true
public static string ToUrlToken(this string url)
{
string fileToken = "";
if (string.IsNullOrWhiteSpace(url))
{
return fileToken;
}
var fileName = "";
if (url.Contains("http://") || url.Contains("https://"))
{
fileToken = TransferUrlToToken(url);
return fileToken;
}
else
{
fileName = url;
}
//处理 传的是token 的情况
if (string.IsNullOrEmpty(fileName))
{
return fileToken;
}
if (fileName.Split('.').Length > 1)
{
int lastIndex = fileName.LastIndexOf('.');
var fileExtend = fileName.Substring(lastIndex + 1);
try
{
var fileTypeEnum = (WingInterfaceLibrary.Enum.UploadFileTypeEnum)Enum.Parse(typeof(WingInterfaceLibrary.Enum.UploadFileTypeEnum), fileExtend.ToUpper());
var fileType = Enum.GetName(typeof(WingInterfaceLibrary.Enum.UploadFileTypeEnum), fileTypeEnum.GetHashCode());
if (!string.IsNullOrEmpty(fileType))
{
fileName = fileName.Substring(0, lastIndex);
}
else
{
fileName = "";
}
}
catch (Exception ex)
{
fileName = "";
}
}
if (fileName.Split('_').Length > 1)
{
fileToken = fileName;
}
return fileToken;
}
///
/// url转token
///
/// url地址
/// true
private static string TransferUrlToToken(string url)
{
//需要做处理
var newUrl = url.Replace("http://", "").Replace("https://", "");
var urlArray = newUrl.Split('/');
var storageServer = WingServerCommon.Config.ConfigurationManager.GetParammeter("Storage", "StorageServer").Value;
if (storageServer == "COS") {
if (urlArray.Length >= 2)
{
var storageSettingsParam = WingServerCommon.Config.ConfigurationManager.StorageSettings;
var fileName = storageSettingsParam.CDNServerUrl + "/" + urlArray[1];
return fileName;
}
else {
return url;
}
}
else {
return url;
}
}
}
}