mirror of
https://github.com/bitwarden/directory-connector
synced 2025-12-13 14:53:16 +00:00
70 lines
2.0 KiB
C#
70 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.DirectoryServices;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Bit.Core.Utilities
|
|
{
|
|
public static class Extensions
|
|
{
|
|
private const string GeneralizedTimeFormat = "yyyyMMddHHmmss.f'Z'";
|
|
|
|
public static DateTime ToDateTime(this string generalizedTimeString)
|
|
{
|
|
return DateTime.ParseExact(generalizedTimeString, GeneralizedTimeFormat, CultureInfo.InvariantCulture);
|
|
}
|
|
|
|
public static string ToGeneralizedTimeUTC(this DateTime date)
|
|
{
|
|
return date.ToString("yyyyMMddHHmmss.f'Z'");
|
|
}
|
|
|
|
public static DateTime? ParseDateTime(this ResultPropertyCollection collection, string dateKey)
|
|
{
|
|
DateTime date;
|
|
if(collection.Contains(dateKey) && collection[dateKey].Count > 0 &&
|
|
DateTime.TryParse(collection[dateKey][0].ToString(), out date))
|
|
{
|
|
return date;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static NameValueCollection ParseQueryString(this Uri uri)
|
|
{
|
|
var queryParameters = new NameValueCollection();
|
|
var querySegments = uri.Query.Split('&');
|
|
foreach(var segment in querySegments)
|
|
{
|
|
var parts = segment.Split('=');
|
|
if(parts.Length > 0)
|
|
{
|
|
var key = parts[0].Trim(new char[] { '?', ' ' });
|
|
var val = parts[1].Trim();
|
|
queryParameters.Add(key, val);
|
|
}
|
|
}
|
|
|
|
return queryParameters;
|
|
}
|
|
|
|
public static string FromGuidToString(this object property)
|
|
{
|
|
var propBytes = property as byte[];
|
|
if(propBytes != null)
|
|
{
|
|
return new Guid(propBytes).ToString();
|
|
}
|
|
else
|
|
{
|
|
return property.ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|