1
0
mirror of https://github.com/bitwarden/directory-connector synced 2025-12-13 14:53:16 +00:00
Files
directory-connector/src/Core/Utilities/Extensions.cs
Kyle Spearrin 4b6b2884cb tweaks for ldap
2017-05-17 16:35:24 -04:00

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();
}
}
}
}