Represents a resource in the WebDAV repository.
For a list of all members of this type, see IResource Members.
Defines the properties and methods that WebDAV server resource objects must implement. In addition to methods and properties provided by IHierarchyItem this interface also provides methods for reading and writing resource content. ContentType property must return the MIME type of the resource.
public class Resource : HierarchyItem, IResource
{
public Resource(FileInfo file)
: base(file)
{
}
public string ContentType
{
get
{
return MimeType.GetMimeType(this.fileSystemInfo.Extension) ?? "application/octet-stream";
}
}
public long ContentLength
{
get
{
FileInfo file = (FileInfo)base.fileSystemInfo;
return file.Length;
}
}
public WebDAVResponse WriteToStream(Stream output, long startIndex, long count)
{
FileInfo file = (FileInfo)base.fileSystemInfo;
byte[] buffer = new byte[bufSize];
int bytesRead;
FileStream fileStream = null;
try
{
fileStream = file.Open(FileMode.Open, FileAccess.Read, FileShare.Read);
fileStream.Seek(startIndex, SeekOrigin.Begin);
while ((bytesRead = fileStream.Read(buffer, 0, (int)(count > bufSize ? bufSize : count))) > 0)
{
try
{
output.Write(buffer, 0, bytesRead);
}
catch (System.Net.HttpListenerException ex)
{ // client closed connection
// 1. ErrorCode=1229. An operation was attempted on a nonexistent network connection.
// 2. ErrorCode=64. The specified network name is no longer available.
return new OkResponse();
}
count -= bytesRead;
}
}
finally
{
if (fileStream != null)
fileStream.Close();
}
return new OkResponse();
}
public WebDAVResponse SaveFromStream(Stream content, string contentType)
{
FileInfo file = (FileInfo)base.fileSystemInfo;
byte[] buffer = new byte[bufSize];
int bytesRead;
FileStream fileStream = null;
try
{
fileStream = file.Open(FileMode.Truncate, FileAccess.Write);
while ((bytesRead = content.Read(buffer, 0, bufSize)) > 0)
fileStream.Write(buffer, 0, bytesRead);
}
finally
{
if (fileStream != null)
fileStream.Close();
}
return new OkResponse();
}
public override WebDAVResponse Delete()
{
fileSystemInfo.Delete();
return new NoContentResponse();
}
Namespace: ITHit.WebDAV.Server
Assembly: ITHit.WebDAV.Server (in ITHit.WebDAV.Server.dll)
IResource Members | ITHit.WebDAV.Server Namespace