OpenLiveWriter/utilities/BlogServer/Util.cs

60 lines
1.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Runtime.InteropServices;
using System.Text;
using Microsoft.Win32;
namespace BlogServer
{
public class Util
{
public static IDictionary MakeDictionary(params object[] parameters)
{
if ((parameters.Length & 1) != 0)
throw new ArgumentException("Even number of parameters expected");
HybridDictionary dict = new HybridDictionary();
for (int i = 0; i < parameters.Length; i += 2)
dict[parameters[i]] = parameters[i + 1];
return dict;
}
public static string GetContentTypeForExtension(string extension)
{
if (extension == null || extension.Length == 0)
return null;
using (RegistryKey key = Registry.ClassesRoot.OpenSubKey(extension))
{
if (key == null)
return null;
return key.GetValue("Content Type", null) as string;
}
}
public static string GetExtensionForContentType(string contentType)
{
if (contentType == null || contentType.Length == 0)
return null;
using (RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type\" + contentType))
{
return key.GetValue("Extension", null) as string;
}
}
public static string PathCanonicalize(string path)
{
StringBuilder sb = new StringBuilder(512);
if (!PathCanonicalize(sb, path))
throw new ArgumentException("Invalid path: " + path, "path");
return sb.ToString();
}
[DllImport("shlwapi.dll", CharSet=CharSet.Unicode)]
private static extern bool PathCanonicalize(
[Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpszDst,
[In, MarshalAs(UnmanagedType.LPWStr)] string lpszSrc);
}
}