public static File CreateByBinary(IFolder parent, BinaryData binaryData)
{
if (parent == null)
throw new ArgumentNullException("parent");
if (binaryData == null)
return new File(parent as Node);
File file;
// Resolve filetype by binary-config matching
BinaryTypeResolver resolver = new BinaryTypeResolver();
if (!resolver.ParseBinary(binaryData))
{
// Unknown file type
file = new File(parent as Node);
}
else
{
// Specific File subtype has been found
file = TypeHandler.CreateInstance<File>(resolver.NodeType.ClassName, parent);
var fname = binaryData.FileName.FileNameWithoutExtension;
if (string.IsNullOrEmpty(fname))
fname = file.Name;
else if (fname.Contains("\\"))
fname = System.IO.Path.GetFileNameWithoutExtension(fname);
binaryData.FileName = new BinaryFileName(fname, resolver.FileNameExtension);
binaryData.ContentType = resolver.ContentType;
}
file.Binary = binaryData;
return file;
}