Class: File

File Class

Namespace

ITHit.WebDAV.Client

Represents a file on a WebDAV server.

Extends

Members

ActiveLocksArray

List of locks applied to this item.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    // Infinite lock
    oFile.LockAsync(ITHit.WebDAV.Client.LockScope.Shared, false, "User 1", -1, function(oInfiniteLockAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.LockInfo} oInfiniteLockInfo */
        var oInfiniteLockInfo = oInfiniteLockAsyncResult.Result;

        // Minute lock
        oFile.LockAsync(ITHit.WebDAV.Client.LockScope.Shared, false, "User 2", 60, function(oMinuteLockAsyncResult) {

            /** @typedef {ITHit.WebDAV.Client.LockInfo} oMinuteLockInfo */
            var oMinuteLockInfo = oMinuteLockAsyncResult.Result;

            // Refresh item from server to read locks
            oFile.RefreshAsync(function(oAsyncResult) {

                for (var i = 0, l = oFile.ActiveLocks.length; i < l; i++) {

                    /** @typedef {ITHit.WebDAV.Client.LockInfo} oLockInfo */
                    var oLockInfo = oFile.ActiveLocks[i];
                    var sTimeOut = oLockInfo.TimeOut === -1 ? "Infinite" : oLockInfo.TimeOut + ' sec';

                    // Show item locks
                    console.log([
                        oLockInfo.Owner,
                        oLockInfo.LockToken.Href,
                        oLockInfo.LockToken.LockToken,
                        oLockInfo.LockScope,
                        oLockInfo.Deep,
                        sTimeOut
                    ].join(' '));
                }

                fCallback(oFile, oInfiniteLockInfo, oMinuteLockInfo);
            });

        });
    });
});

AvailableBytesnumber

Number of bytes available for this user on server. -1 if server does not support Quota.

ContentLengthnumber

Length of the file.

ContentTypestring

Content type of the file.

CreationDateDate

The date item was created.

DisplayNamestring

User friendly item name.

Hrefstring

This item path on the server.

LastModifiedDate

Most recent modification date.
List of item properties.

ResourceTypestring

Type of the item (File or Folder).
See:
ResumableUpload instance to manage partially failed uploads.
Current WebDAV session.

SupportedLocksArray

Retrieves information about supported locks. Item can support exclusive, shared locks or do not support any locks. If you set exclusive lock other users will not be able to set any locks. If you set shared lock other users will be able to set shared lock on the item.
See:
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oAsyncResult.Result;

    if (oFile.SupportedLocks.length === 0) {
        console.log('Locks are not supported.');
    }

    for (var i = 0, l = oFile.SupportedLocks.length; i < l; i++) {
        if (oFile.SupportedLocks[i] === ITHit.WebDAV.Client.LockScope.Exclusive) {
            console.log('Item supports exclusive locks.');
        }
        if (oFile.SupportedLocks[i] === ITHit.WebDAV.Client.LockScope.Shared) {
            console.log('Item supports shared locks.');
        }
    }

    fCallback(oAsyncResult);
});

UsedBytesnumber

Number of bytes used by this user on server. -1 if server does not support Quota.

VersionControlled

Returns true if file is under version control. Otherwise false. To detect if version control could be enabled for this item call GetSupportedFeaturesAsync and check for VersionControl token. To enable version control call PutUnderVersionControlAsync.

Methods

staticITHit.WebDAV.Client.File.GEdit(oRequest, sHref){ITHit.WebDAV.Client.GEditInfo}

Locks the item and upload to google drive.
Name Type Description
oRequest ITHit.WebDAV.Client.Request Current WebDAV session.
sHref string This item path on the server.
Returns:
ITHit.WebDAV.Client.GEditInfo Instance of GEditInfo.

staticITHit.WebDAV.Client.File.GEditAsync(oRequest, sHref, fCallback){ITHit.WebDAV.Client.Request}

Locks the item and upload to google drive.
Name Type Description
oRequest ITHit.WebDAV.Client.Request Current WebDAV session.
sHref string This item path on the server.
fCallback ITHit.WebDAV.Client.File~GEditAsync Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.

staticITHit.WebDAV.Client.File.GUnlock(oRequest, sHref, sLockToken)

Removes the lock and update file.
Name Type Description
oRequest ITHit.WebDAV.Client.Request Current WebDAV session.
sHref string This item path on the server.
sLockToken string optional Identifies lock to be prolonged.
Throws:
  • ITHit.WebDAV.Client.Exceptions.PreconditionFailedException The item is not locked.
  • ITHit.WebDAV.Client.Exceptions.NotFoundException The item doesn't exist on the server.
  • ITHit.WebDAV.Client.Exceptions.WebDavException Unexpected error occurred.

staticITHit.WebDAV.Client.File.GUnlockAsync(oRequest, sHref, sLockToken, sRevisionID, fCallback){ITHit.WebDAV.Client.Request}

Removes the lock and update file.
Name Type Description
oRequest ITHit.WebDAV.Client.Request Current WebDAV session.
sHref string This item path on the server.
sLockToken string Identifies lock to be prolonged.
sRevisionID string Revision ID of google file.
fCallback ITHit.WebDAV.Client.File~GUnlockAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.

inherited CopyToAsync(oDestinationFolder, sDestinationName, bDeep, bOverwrite, oLockTokens, fCallback)

Copies this item to destination folder.
Name Type Description
oDestinationFolder ITHit.WebDAV.Client.Folder Folder to move to.
sDestinationName string Name to assign to copied item.
bDeep boolean Indicates whether children of this item should be copied.
bOverwrite boolean Whether existing destination item shall be overwritten.
oLockTokens Array.<ITHit.WebDAV.Client.LockUriTokenPair> optional Lock tokens for destination folder.
fCallback ITHit.WebDAV.Client.HierarchyItem~CopyToAsyncCallback Function to call when operation is completed.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = 'http://localhost:87654/Products/';
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    webDavSession.OpenFolderAsync(sFolderAbsolutePath, null, function(oFolderAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Folder} oFolder */
        var oFolder = oFolderAsyncResult.Result;

        oFile.CopyToAsync(oFolder, 'myproduct.txt', true, null, null, function(oAsyncResult) {

            if (oAsyncResult.IsSuccess) {
                console.log('Copy successfully completed.');
            } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.PreconditionFailedException) {
                console.log('The item with such name exists and `overwrite` was `false`.');
            } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.WebDavHttpException) {
                var sErrorText = oAsyncResult.Error.Message + ' ' + oAsyncResult.Error.Status.Code + ' ' +
                    oAsyncResult.Error.Status.Description;

                // Find which items failed to copy.
                for(var i = 0, l = oAsyncResult.Error.Multistatus.Responses.length; i < l; i++) {
                    var oResponse = oAsyncResult.Error.Multistatus.Responses[i];
                    sErrorText += '\n' + oResponse.Href + ' ' + oResponse.Status.Code + ' ' +
                        oResponse.Status.Description;
                }

                console.log('Copy error: ' + sErrorText);
            } else {
                console.log('Copy error: ' + String(oAsyncResult.Error));
            }

            fCallback(oAsyncResult);
        });
    });
});

inherited DeleteAsync(oLockTokens, fCallback){ITHit.WebDAV.Client.Request}

Deletes this item.
Name Type Description
oLockTokens ITHit.WebDAV.Client.LockUriTokenPair Lock tokens for this item or any locked child item.
fCallback ITHit.WebDAV.Client.HierarchyItem~DeleteAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = 'http://localhost:87654/my_folder/';
var fCallback = function() {};

webDavSession.OpenFolderAsync(sFolderAbsolutePath, null, function(oAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.Folder} oFolder */
    var oFolder = oAsyncResult.Result;

    oFolder.DeleteAsync(null, function(oAsyncResult) {

        if (oAsyncResult.IsSuccess) {
            console.log('Folder successfully deleted.');
        } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.WebDavHttpException) {
            var sErrorText = oAsyncResult.Error.Message + ' ' + oAsyncResult.Error.Status.Code + ' ' +
                oAsyncResult.Error.Status.Description;

            // Find which items failed to delete.
            for(var i = 0, l = oAsyncResult.Error.Multistatus.Responses.length; i < l; i++) {
                var oResponse = oAsyncResult.Error.Multistatus.Responses[i];
                sErrorText += '\n' + oResponse.Href + ' ' + oResponse.Status.Code + ' ' +
                oResponse.Status.Description;
            }

            console.log('Delete error: ' + sErrorText);
        } else {
            console.log('Delete error: ' + String(oAsyncResult.Error));
        }

        fCallback(oAsyncResult);
    });
});

inherited GetAllPropertiesAsync(fCallback){ITHit.WebDAV.Client.Request}

Retrieves all custom properties exposed by the item.
Name Type Description
fCallback ITHit.WebDAV.Client.HierarchyItem~GetAllPropertiesAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.GetAllPropertiesAsync(function(oAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Property[]} aProperties */
        var aProperties = oAsyncResult.Result;

        for (var i = 0, l = aProperties.length; i < l; i++) {
            console.log(aProperties[i].Name + ': ' + aProperties[i].StringValue());
        }

        fCallback(oAsyncResult);
    });
});

inherited GetParentAsync(aProperties, fCallback){ITHit.WebDAV.Client.Request}

Retrieves parent hierarchy item of this item.
Name Type Description
aProperties Array.<ITHit.WebDAV.Client.PropertyName> Additional properties requested from server. Default is empty array.
fCallback ITHit.WebDAV.Client.HierarchyItem~GetParentAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = 'http://localhost:87654/my_folder/';
var fCallback = function() {};

webDavSession.OpenFolderAsync(sFolderAbsolutePath, null, function(oFolderAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.Folder} oFolder */
    var oFolder = oFolderAsyncResult.Result;

    oFolder.GetParentAsync(null, function(oParentAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Folder} oParentFolder */
        var oParentFolder = oParentAsyncResult.Result;

        console.log('Parent folder: ' + oParentFolder.DisplayName);

        oParentFolder.GetParentAsync(null, function(oParentParentAsyncResult) {

            /** @typedef {ITHit.WebDAV.Client.Folder} oParentFolder */
            var oParentParentFolder = oParentParentAsyncResult.Result;

            if (oParentParentFolder === null) {
                console.log('Folder is root!');
            }

            fCallback(oParentAsyncResult, oParentParentAsyncResult);
        });
    });
});

inherited GetPropertyNamesAsync(fCallback){ITHit.WebDAV.Client.Request}

Returns names of all custom properties exposed by this item.
Name Type Description
fCallback ITHit.WebDAV.Client.HierarchyItem~GetPropertyNamesAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.GetPropertyNamesAsync(function(oAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Property[]} aProperties */
        var aPropertyNames = oAsyncResult.Result;

        if (oAsyncResult.IsSuccess) {
            console.log('Properties: ' + aPropertyNames.join(', '));
        }

        fCallback(oAsyncResult);
    });
});

inherited GetPropertyValuesAsync(aNames, fCallback){ITHit.WebDAV.Client.Request}

Retrieves values of specific properties.
Name Type Description
aNames Array.<ITHit.WebDAV.Client.PropertyName>
fCallback ITHit.WebDAV.Client.HierarchyItem~GetPropertyValuesAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    var oPropertyName = new ITHit.WebDAV.Client.PropertyName('myname', 'mynamespace');

    oFile.GetPropertyValuesAsync([oPropertyName], function(oAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Property[]} aProperties */
        var aProperties = oAsyncResult.Result;

        console.log('Value of `mynamespace:myname`: ' + aProperties[0].StringValue());

        fCallback(oAsyncResult);
    });
});

inherited GetSourceAsync(fCallback){ITHit.WebDAV.Client.Request}

Retrieves media type independent links.
Name Type Description
fCallback ITHit.WebDAV.Client.HierarchyItem~GetSourceAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.

inherited GetSupportedFeaturesAsync(fCallback){ITHit.WebDAV.Client.Request}

Gets features supported by this item, such as WebDAV class support.
Name Type Description
fCallback ITHit.WebDAV.Client.HierarchyItem~GetSupportedFeaturesAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = 'http://localhost:87654/';
var fCallback = function() {};

webDavSession.OpenFolderAsync(sFolderAbsolutePath, null, function(oAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.Folder} oFolder */
    var oFolder = oAsyncResult.Result;

    oFolder.GetSupportedFeaturesAsync(function(oAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.OptionsInfo} oOptionsInfo */
        var oOptionsInfo = oAsyncResult.Result;

        console.log('Locking support: ' + (oOptionsInfo.Features & ITHit.WebDAV.Client.Features.Class2 !== 0 ? 'yes' : 'no'));
        console.log('Resumable upload support: ' + (oOptionsInfo.Features & ITHit.WebDAV.Client.Features.ResumableUpload !== 0 ? 'yes' : 'no'));

        fCallback(oAsyncResult);
    });
});

GetVersionsAsync(fCallback){ITHit.WebDAV.Client.Request}

Retrieves item versions.
Name Type Description
fCallback ITHit.WebDAV.Client.File~GetVersionsAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFolderAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.GetVersionsAsync(function(oAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Version[]} aVersions */
        var aVersions = oAsyncResult.Result;

        for (var i = 0, l = aVersions.length; i < l; i++) {
            var oVersion = aVersions[i];

            console.log([
                'Version Name: ' + oVersion.VersionName,
                'Comment: ' + oVersion.Comment,
                'Author: ' + oVersion.CreatorDisplayName,
                'Created: ' + oVersion.CreationDate
            ].join('\n'));
        }

        fCallback(oAsyncResult);
    });
});

inherited LockAsync(sLockScope, bDeep, sOwner, iTimeout, fCallback){ITHit.WebDAV.Client.Request}

Locks the item. If the lock was successfully applied, the server will return a lock token. You will pass this lock token back to the server when updating and unlocking the item. The actual lock time applied by the server may be different from the one requested by the client.
Name Type Description
sLockScope string Scope of the lock. See LockScope Enumeration ITHit.WebDAV.Client.LockScope
bDeep boolean Whether to lock entire subtree.
sOwner string Owner of the lock.
iTimeout number Timeout after which lock expires. Pass -1 to request an infinite timeout.
fCallback ITHit.WebDAV.Client.HierarchyItem~LockAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    if (oFile.SupportedLocks.length === 0) {
        console.log('Locks are not supported.');
        return;
    }

    oFile.LockAsync(ITHit.WebDAV.Client.LockScope.Shared, false, 'User 1', -1, function(oAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.LockInfo} oLockInfo */
        var oLockInfo = oAsyncResult.Result;

        if (oAsyncResult.IsSuccess) {
            console.log('Locks token is: ' + oLockInfo.LockToken.LockToken);
        }

        fCallback(oAsyncResult);
    });
});

inherited MoveToAsync(oDestinationFolder, sDestinationName, bOverwrite, oLockTokens, fCallback){ITHit.WebDAV.Client.Request}

Moves this item to another location.
Name Type Description
oDestinationFolder ITHit.WebDAV.Client.Folder Folder to move to.
sDestinationName string Name to assign to moved item.
bOverwrite boolean Whether existing destination item shall be overwritten.
oLockTokens string | Array.<ITHit.WebDAV.Client.LockUriTokenPair> Lock tokens for item to be moved, for destination folder or file to be overwritten that are locked.
fCallback ITHit.WebDAV.Client.HierarchyItem~MoveToAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sDestinationFolderAbsolutePath = 'http://localhost:87654/Sales/';
var sSourceFolderAbsolutePath = 'http://localhost:87654/Products/';
var fCallback = function() {};

webDavSession.OpenFolderAsync(sSourceFolderAbsolutePath, null, function(oSourceFolderAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.Folder} oSourceFolder */
    var oSourceFolder = oSourceFolderAsyncResult.Result;

    webDavSession.OpenFolderAsync(sDestinationFolderAbsolutePath, null, function(oDestinationFolderAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.Folder} oDestinationFolder */
        var oDestinationFolder = oDestinationFolderAsyncResult.Result;

        oSourceFolder.MoveToAsync(oDestinationFolder, oSourceFolder.DisplayName, false, null, function(oAsyncResult) {

            if (oAsyncResult.IsSuccess) {
                console.log('Move successfully completed.');
            } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.PreconditionFailedException) {
                console.log('The item with such name exists and `overwrite` was `false`.');
            } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.WebDavHttpException) {
                var sErrorText = oAsyncResult.Error.Message + ' ' + oAsyncResult.Error.Status.Code + ' ' +
                    oAsyncResult.Error.Status.Description;

                // Find which items failed to move.
                for(var i = 0, l = oAsyncResult.Error.Multistatus.Responses.length; i < l; i++) {
                    var oResponse = oAsyncResult.Error.Multistatus.Responses[i];
                    sErrorText += '\n' + oResponse.Href + ' ' + oResponse.Status.Code + ' ' +
                    oResponse.Status.Description;
                }

                console.log('Move error: ' + sErrorText);
            } else {
                console.log('Move error: ' + String(oAsyncResult.Error));
            }

            fCallback(oAsyncResult);
        });
    });
});

PutUnderVersionControlAsync(bEnable, mLockToken, fCallback){ITHit.WebDAV.Client.Request}

Enables / disables version control for this file.
Name Type Description
bEnable boolean True to enable version-control, false - to disable.
mLockToken string Lock token for this item.
fCallback ITHit.WebDAV.Client.File~PutUnderVersionControlAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    // Enable versioning
    oFile.PutUnderVersionControlAsync(true, null, function(oAsyncResult) {

        if (oAsyncResult.IsSuccess) {
            console.log('Versioning for file `' + oFile.DisplayName + '` is enabled.');
        }

        fCallback(oAsyncResult);
    });
});

ReadContentAsync(iBytesFrom, iBytesCount, fCallback){ITHit.WebDAV.Client.Request}

Reads file content. To download only a part of a file you can specify 2 parameters in ReadContent call. First parameter is the starting byte (zero-based) at witch to start content download, the second – amount of bytes to be downloaded. The library will add Range header to the request in this case.
Name Type Description
iBytesFrom number Start position to retrieve lBytesCount number of bytes from.
iBytesCount number Number of bytes to retrieve.
fCallback ITHit.WebDAV.Client.File~ReadContentAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Examples
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.ReadContentAsync(null, null, function(oAsyncResult) {

        console.log(oAsyncResult.Result); // Goodbye!

        fCallback(oAsyncResult);
    });
});
oFile.ReadContentAsync(4, 3, function(oAsyncResult) {

    console.log(oAsyncResult.Result); // bye

    fCallback(oAsyncResult);
});

inherited RefreshAsync(fCallback){ITHit.WebDAV.Client.Request}

Refreshes item loading data from server.
Name Type Description
fCallback ITHit.WebDAV.Client.HierarchyItem~RefreshAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    // Return file content length
    console.log('Content length: ' + oFile.ContentLength);

    // Update file content
    oFile.WriteContentAsync('My updated content', null, null, function() {

        // Refresh item from server to read new content length
        oFile.RefreshAsync(function(oAsyncResult) {

            // Return file content length
            console.log('Content length: ' + oFile.ContentLength);

            fCallback(oAsyncResult, oFile);
        });
    });
});

inherited RefreshLockAsync(sLockToken, iTimeout, fCallback){ITHit.WebDAV.Client.Request}

Prolongs the lock.
Name Type Description
sLockToken string Identifies lock to be prolonged.
iTimeout number New timeout to set.
fCallback ITHit.WebDAV.Client.HierarchyItem~RefreshLockAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.LockAsync(ITHit.WebDAV.Client.LockScope.Shared, false, 'User 1', 60, function(oLockAsyncResult) {

        /** @typedef {ITHit.WebDAV.Client.LockInfo} oLockInfo */
        var oLockInfo = oLockAsyncResult.Result;

        if (oLockAsyncResult.IsSuccess) {
            console.log('Lock timeout is: ' + oLockInfo.TimeOut);
        }

        oFile.RefreshLockAsync(oLockInfo.LockToken.toString(), 300, function(oRefreshAsyncResult) {

            /** @typedef {ITHit.WebDAV.Client.LockInfo} oLockInfo */
            var oRefreshedLockInfo = oRefreshAsyncResult.Result;

            if (oRefreshAsyncResult.IsSuccess) {
                console.log('Lock timeout is: ' + oRefreshedLockInfo.TimeOut);
            }

            fCallback(oLockAsyncResult, oRefreshAsyncResult);
        });
    });
});

inherited UnlockAsync(sLockToken, fCallback){ITHit.WebDAV.Client.Request}

Removes the lock.
Name Type Description
sLockToken string Identifies lock to be prolonged.
fCallback ITHit.WebDAV.Client.HierarchyItem~UnlockAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var sLockToken = 'f36726d1-0671-4f6f-8445-c7d10e42a08e';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.UnlockAsync(sLockToken, function(oAsyncResult) {

        if (oAsyncResult.IsSuccess) {
            console.log('File is unlocked');
        }

        fCallback(oAsyncResult);
    });
});

inherited UpdatePropertiesAsync(oPropertiesToAddOrUpdate, oPropertiesToDelete, sLockToken, fCallback){ITHit.WebDAV.Client.WebDavRequest|null}

Updates values of properties exposed by this item.
Name Type Description
oPropertiesToAddOrUpdate Array.<ITHit.WebDAV.Client.Property> Properties to be updated.
oPropertiesToDelete Array.<ITHit.WebDAV.Client.PropertyName> Names of properties to be removed from this item.
sLockToken string optional Lock token.
fCallback ITHit.WebDAV.Client.HierarchyItem~UpdatePropertiesAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.WebDavRequest | null WebDAV request
Examples
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    var oPropertyName = new ITHit.WebDAV.Client.PropertyName('myname', 'mynamespace');
    var oProperty = new ITHit.WebDAV.Client.Property(oPropertyName, 'Test value');

    oFile.UpdatePropertiesAsync([oProperty], null, null, function(oAsyncResult) {

        if (oAsyncResult.IsSuccess) {
            console.log('Property `mynamespace:myname` successfully added to file!');
        } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.PropertyException) {
            var sErrorText = oAsyncResult.Error.Message + ' ' + oAsyncResult.Error.Status.Code + ' ' +
                oAsyncResult.Error.Status.Description;

            // Find which properties failed to add/update/delete.
            for(var i = 0, l = oAsyncResult.Error.Multistatus.Responses.length; i < l; i++) {
                var oResponse = oAsyncResult.Error.Multistatus.Responses[i];
                sErrorText += '\n' + oResponse.PropertyName.NamespaceUri + ':' + oResponse.PropertyName.Name + ' ' +
                    oResponse.Status.Code + ' ' + oResponse.Status.Description;
            }

            console.log('Update properties error: ' + sErrorText);
        } else {
            console.log('Update properties error: ' + String(oAsyncResult.Error));
        }

        fCallback(oAsyncResult);
    });
});
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    var oPropertyName = new ITHit.WebDAV.Client.PropertyName('myname', 'mynamespace');

    oFile.UpdatePropertiesAsync(null, [oPropertyName], null, function(oAsyncResult) {

        if (oAsyncResult.IsSuccess) {
            console.log('Property `mynamespace:myname` successfully deleted from file!');
        } else if (oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.PropertyException) {
            var sErrorText = oAsyncResult.Error.Message + ' ' + oAsyncResult.Error.Status.Code + ' ' +
                oAsyncResult.Error.Status.Description;

            // Find which properties failed to add/update/delete.
            for(var i = 0, l = oAsyncResult.Error.Multistatus.Responses.length; i < l; i++) {
                var oResponse = oAsyncResult.Error.Multistatus.Responses[i];
                sErrorText += '\n' + oResponse.PropertyName.NamespaceUri + ':' + oResponse.PropertyName.Name + ' ' +
                oResponse.Status.Code + ' ' + oResponse.Status.Description;
            }

            console.log('Update properties error: ' + sErrorText);
        } else {
            console.log('Update properties error: ' + String(oAsyncResult.Error));
        }

        fCallback(oAsyncResult);
    });
});

UpdateToVersionAsync(mVersion, fCallback){ITHit.WebDAV.Client.Request}

Update to version.
Name Type Description
mVersion string | ITHit.WebDAV.Client.Version Href to file with version attribute or ITHit.WebDAV.Client.Version instance.
fCallback ITHit.WebDAV.Client.File~UpdateToVersionAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFolderAbsolutePath = 'http://localhost:87654/myfile.txt';
var sVersionHref = 'http://localhost:87654/myfile.txt?version=2';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFolderAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.UpdateToVersionAsync(sVersionHref, function(oAsyncResult) {

        if (oAsyncResult.Result === true) {
            console.log('File `' + oFile.DisplayName + '` successfully updated to version `' + sVersionHref + '`');
        }

        fCallback(oAsyncResult);
    });
});

WriteContentAsync(sContent, sLockToken, sMimeType, fCallback){ITHit.WebDAV.Client.Request}

Writes file content.
Name Type Description
sContent string File content.
sLockToken string Lock token.
sMimeType string File mime-type.
fCallback ITHit.WebDAV.Client.File~WriteContentAsyncCallback Function to call when operation is completed.
Returns:
ITHit.WebDAV.Client.Request Request object.
Example
var webDavSession = new ITHit.WebDAV.Client.WebDavSession();
var sFileAbsolutePath = 'http://localhost:87654/myfile.txt';
var fCallback = function() {};

webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {

    /** @typedef {ITHit.WebDAV.Client.File} oFile */
    var oFile = oFileAsyncResult.Result;

    oFile.WriteContentAsync('Goodbye!', null, 'text/plain', function(oAsyncResult) {

        if (oAsyncResult.IsSuccess) {
            console.log('Content is saved!');
        }

        fCallback(oAsyncResult);
    });
});

Type Definitions

GEditAsyncCallback(oResult)

Callback function to be called when item is locked on server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object
Name Type Description
Result ITHit.WebDAV.Client.GEditInfo Instance of GEditInfo.

GetVersionsAsyncCallback(oResult)

Callback function to be called when versions list loaded from server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object
Name Type Description
Result Array.<ITHit.WebDAV.Client.Version> List of Versions.

GUnlockAsyncCallback(oResult)

Callback function to be called when item unlocked on server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object

OpenAsyncCallback(oResult)

Callback function to be called when resource loaded from server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object
Name Type Description
Result ITHit.WebDAV.Client.File Loaded resource object.

PutUnderVersionControlAsyncCallback(oResult)

Callback function to be called when versioning is enabled or disabled.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object

ReadContentAsyncCallback(oResult)

Callback function to be called when file content loaded from server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object
Name Type Description
Result string Requested file content.

UpdateToVersionAsyncCallback(oResult)

Callback function to be called when version is updated on server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object

WriteContentAsyncCallback(oResult)

Callback function to be called when content saved in file on server.
Name Type Description
oResult ITHit.WebDAV.Client.AsyncResult Result object