- /**
- * davfs.js - WebDAV settings and XHTTPRequest object Management API and
- * XHTTPRequest High-level WebDAV Client API.
- *
- * This is a Manager of WebDAV and XHTTPRequest for File system.
- * and a High-level WebDAV client API for File system.
- * Path base request.
- * Resource base request: @see xhrdav.ResourceController
- *
- * @license Copyright 2011 The xhrdavclient library authors.
- * All rights reserved.
- */
-
- goog.provide('xhrdav.DavFs');
- goog.provide('xhrdav.DavFs.Request');
- goog.require('goog.net.XhrManager');
- goog.require('xhrdav.Client');
- goog.require('xhrdav.Conf');
- goog.require('xhrdav.Errors');
- goog.require('xhrdav.ResourceBuilder');
- goog.require('xhrdav.ResourceController');
-
-
- /**
- * high-level WebDAV client API Singleton
- *
- * @constructor
- */
- xhrdav.DavFs = function() {
- /**
- * @private
- * @type {goog.net.XhrManager}
- */
- this.xhrMgr_ = null;
-
- /**
- * @private
- * @type {Object.<string,xhrdav.Client>}
- */
- this.clients_ = {};
-
- this.initXhrMgr_();
- this.addConnection();
- };
- goog.addSingletonGetter(xhrdav.DavFs);
-
- /** @type {string} */
- xhrdav.DavFs.DEFAULT_DAV_SITE_NAME = 'default';
-
- /**
- * Init XhrManager with config.
- *
- * @private
- */
- xhrdav.DavFs.prototype.initXhrMgr_ = function() {
- var config = xhrdav.Conf.getInstance();
- var configXhrMgr = config.getXhrMgrConfig();
-
- if (goog.isDefAndNotNull(configXhrMgr) &&
- !goog.object.isEmpty(configXhrMgr)) {
- this.xhrMgr_ = new goog.net.XhrManager(
- configXhrMgr.maxRetries || 1,
- configXhrMgr.headers || {},
- configXhrMgr.minCount || 1,
- configXhrMgr.maxCount || 10,
- configXhrMgr.timeoutInterval || 0);
- } else {
- this.xhrMgr_ = new goog.net.XhrManager();
- }
- };
-
- /**
- * Get XhrManager of davfs for monitoring, progress, abort, etc.
- *
- * Example:
- * var davFs = xhrdav.DavFs.getInstance();
- * var xhrMgr = davFs.getXhrManager();
- *
- * var onComplete = function(file, e) {
- * console.log('Uploaded ' + file.name); };
- *
- * var delay = new goog.async.ConditionalDelay(function() {
- * var sendingCount = xhrMgr.getOutstandingCount();
- * console.log('Sending... ' + sendingCount);
- * return (sendingCount == 0); });
- * delay.onSuccess = function() { alert('Update files on completely!!'); };
- * delay.onFailure = function() {
- * alert('Failed to upload files by timeout'); };
- *
- * delay.start(500, 5000);
- * goog.array.forEach(files, function(file, i) {
- * fs.upload(WEBDAV_ROOT + file.name, file,
- * goog.bind(onComplete, this, file), null, null, this);
- * }
- *
- * @return {goog.net.XhrManager} XhrManager object.
- */
- xhrdav.DavFs.prototype.getXhrManager = function() {
- return this.xhrMgr_;
- };
-
- /**
- * Setter XhrManager
- *
- * @param {goog.net.XhrManager} xhrMgr XhrManager object.
- * @see goog.net.XhrManager
- */
- xhrdav.DavFs.prototype.setXhrManager = function(xhrMgr) {
- if (xhrMgr && xhrMgr instanceof goog.net.XhrManager) {
- this.xhrMgr_ = xhrMgr;
- }
- };
-
- /**
- * Create WebDAV client object.
- *
- * @private
- * @param {{scheme:string=, domain:stirng=, port:nubmer=}=} opt_uri
- * davclient Parameters(opt_uri: scheme, domain, port)
- * @param {string} site Settings name of WebDAV site.
- */
- xhrdav.DavFs.prototype.createClient_ = function(opt_uri, site) {
- var config = xhrdav.Conf.getInstance();
- var client = new xhrdav.Client(opt_uri);
- client.setXmlParseFunction(goog.getObjectByName(config.xmlParseFuncObj));
- goog.object.set(this.clients_, site, client);
- };
-
- /**
- * Get and Create Connection xhrdav.Client.
- *
- * @param {string=} opt_davSiteName Any settings name of WebDAV site.
- * @return {xhrdav.Client} WebDAV Client connection object.
- */
- xhrdav.DavFs.prototype.getConnection = function(opt_davSiteName) {
- if (goog.string.isEmptySafe(opt_davSiteName)) {
- opt_davSiteName = xhrdav.DavFs.DEFAULT_DAV_SITE_NAME;
- }
- return this.clients_[opt_davSiteName];
- };
-
- /**
- * Add WebDAV connection setting(For multiple WebDAV root)
- *
- * If connection exists, overwrite WebDAV site settings.
- *
- * @param {{scheme:string=, domain:string=, port:number=}=} opt_uri
- * davclient Parameters(opt_uri: scheme, domain, port)
- * @param {string=} opt_davSiteName Any settings name of WebDAV site.
- */
- xhrdav.DavFs.prototype.addConnection = function(opt_uri, opt_davSiteName) {
- if (goog.string.isEmptySafe(opt_davSiteName)) {
- opt_davSiteName = xhrdav.DavFs.DEFAULT_DAV_SITE_NAME;
- }
- this.createClient_(opt_uri, opt_davSiteName);
- };
-
- /**
- * Get Request object for WebDAV request.
- *
- * @param {{davSiteName:string=, xhrIo:(goog.net.XhrIo|goog.net.XhrManager)=,
- * auth:string=, authOverwrite:boolean=}} options
- * davSiteName Any settings name of WebDAV site.
- * xhrIo request object of closure library
- * (For Cross-site resource sharing[CORS]).
- * auth: authorization credentials.
- * authOverwrite: overwrite flag for auth credentials.
- * @return {xhrdav.DavFs.Request} WebDAV Fs Request object.
- * @see xhrdav.DavFs.Request
- */
- xhrdav.DavFs.prototype.getRequest = function(options) {
- if (!goog.isDefAndNotNull(options)) options = {};
- if (goog.string.isEmptySafe(options.davSiteName)) {
- options.davSiteName = xhrdav.DavFs.DEFAULT_DAV_SITE_NAME;
- }
- var davSite = this.getConnection(options.davSiteName);
- if (!goog.string.isEmptySafe(options.auth)) {
- if (!!options.authOverwrite || !davSite.hasAuthCredentials()) {
- davSite.setAuthCredentials(options.auth);
- }
- }
-
- if (!goog.isDefAndNotNull(options.xhrIo) ||
- !(options.xhrIo instanceof goog.net.XhrIo ||
- options.xhrIo instanceof goog.net.XhrManager)) {
- options.xhrIo = this.xhrMgr_;
- }
-
- return new xhrdav.DavFs.Request(davSite, options.xhrIo);
- };
-
-
- /**
- * An encapsulation of everything needed to make a DavFs request.
- *
- *
- * @constructor
- * @param {xhrdav.Client} davSite WebDAV site.
- * @param {(goog.net.XhrIo|goog.net.XhrManager)} xhrIo request object
- * of closure library (For Cross-site resource sharing[CORS]).
- */
- xhrdav.DavFs.Request = function(davSite, xhrIo) {
- /**
- * @private
- * @type {xhrdav.Client}
- */
- this.davSite_ = davSite;
-
- /**
- * @private
- * @type {(goog.net.XhrIo|goog.net.XhrManager)}
- */
- this.xhrIo_ = xhrIo;
- };
-
- /**
- * WebDAV Response process handler(callback)
- *
- * @private
- * @param {Function} handler callback client.
- * @param {Function} processHandler callback process response handler.
- * @param {string} path Request path.
- * @param {*} context callback function scope.
- * @param {number} statusCode HTTP Status code.
- * @param {Object} content Response body data.
- * @param {Object} headers Response headers.
- */
- xhrdav.DavFs.Request.prototype.responseHandler_ = function(
- handler, processHandler, path, context, statusCode, content, headers) {
- var httpStatus = xhrdav.HttpStatus;
- var args = processHandler(path, statusCode, content, headers);
- if (goog.isDefAndNotNull(context) && goog.isObject(context)) {
- handler.apply(context, args);
- } else {
- handler(args);
- }
- };
-
- /**
- * Content read Handler
- *
- * @private
- * @param {string} path HTTP Request path.
- * @param {number} statusCode HTTP Status code.
- * @param {Object} content Response body data.
- * @param {Object} headers Response headers.
- * @return {Array.<xhrdav.Errors, string=>} Errors, new Location.
- * @see xhrdav.Errors
- */
- xhrdav.DavFs.Request.prototype.contentReadHandler_ = function(
- path, statusCode, content, headers) {
- var config = xhrdav.Conf.getInstance();
- var httpStatus = xhrdav.HttpStatus;
- var errors = new xhrdav.Errors();
-
- var args = [];
- if (statusCode != httpStatus.OK) {
- var data = {statusCode: statusCode, path: path, content: content};
- errors.setRequest(xhrdav.DavFs.Request.buildRequestErrors(data));
- }
- args.push(errors);
- args.push(content);
-
- return args;
- };
-
- /**
- * Exists Handler
- *
- * @private
- * @param {string} path HTTP Request path.
- * @param {number} statusCode HTTP Status code.
- * @param {Object} content Response body data.
- * @param {Object} headers Response headers.
- * @return {Array.<xhrdav.Errors, boolean>} Errors, new Location.
- * @see xhrdav.Errors
- */
- xhrdav.DavFs.Request.prototype.existsHandler_ = function(
- path, statusCode, content, headers) {
- var config = xhrdav.Conf.getInstance();
- var httpStatus = xhrdav.HttpStatus;
- var errors = new xhrdav.Errors();
-
- var args = [];
- if (!goog.array.contains(
- [httpStatus.OK, httpStatus.CREATED, httpStatus.NO_CONTENT],
- statusCode)) {
- var data = {statusCode: statusCode, path: path, content: content};
- errors.setRequest(xhrdav.DavFs.Request.buildRequestErrors(data));
- }
- args.push(errors);
- args.push(errors.hasRequest() ? false : true);
- return args;
- };
-
- /**
- * Error Handler
- *
- * Errors object structure:
- * {status: <HTTP status code>, path: <request path>,
- * summary: <Request error summary message>,
- * message: <Request error detail message>}
- *
- * @private
- * @param {string} path HTTP Request path.
- * @param {number} statusCode HTTP Status code.
- * @param {Object} content Response body data.
- * @param {Object} headers Response headers.
- * @return {Array.<xhrdav.Errors, string=>} Errors, new Location.
- * @see xhrdav.Errors
- */
- xhrdav.DavFs.Request.prototype.simpleErrorHandler_ = function(
- path, statusCode, content, headers) {
- var config = xhrdav.Conf.getInstance();
- var httpStatus = xhrdav.HttpStatus;
- var errors = new xhrdav.Errors();
-
- var args = [];
- if (!goog.array.contains(
- [httpStatus.OK, httpStatus.CREATED, httpStatus.NO_CONTENT],
- statusCode)) {
- var data = {statusCode: statusCode, path: path, content: content};
- errors.setRequest(xhrdav.DavFs.Request.buildRequestErrors(data));
- }
- args.push(errors);
- if (statusCode == httpStatus.CREATED) {
- args.push(headers['Location']);
- }
- return args;
- };
-
- /**
- * Building request errors
- *
- * @param {{statusCode: number, path: string, content: string=}} data
- * Response data.
- * @return {{status: number, path: string, html: string,
- * summary: string=, message: string=}} errors Map data.
- */
- xhrdav.DavFs.Request.buildRequestErrors = function(data) {
- var httpStatusText = xhrdav.HttpStatus.text;
- var errMap = {};
-
- var errorHtmlDom = !goog.string.isEmptySafe(data.content) ?
- goog.dom.htmlToDocumentFragment(data.content) : null;
- var summary = null, description = null;
- if (goog.isDefAndNotNull(errorHtmlDom)) {
- summary = goog.dom.getElementsByTagNameAndClass(
- 'title', null, errorHtmlDom)[0];
- description = goog.dom.getElementsByTagNameAndClass(
- 'p', null, errorHtmlDom)[0];
- }
- goog.object.extend(errMap, {
- summary: goog.isDefAndNotNull(summary) ?
- goog.dom.getTextContent(summary) :
- data.statusCode + ' ' + httpStatusText[data.statusCode],
- message: goog.isDefAndNotNull(description) ?
- goog.dom.getTextContent(description) :
- data.statusCode + ' ' + httpStatusText[data.statusCode]
- });
-
- goog.object.extend(errMap, {
- status: data.statusCode,
- path: data.path,
- html: data.content});
-
- return errMap;
- };
-
- /**
- * Build Directory tree from multistatus
- *
- * @param {Object} content multistatus response data.
- * @param {Object=} opt_helper Returning resource controller.
- * @return {(xhrdav.Resource|xhrdav.ResourceController|Object)}
- * converted object for WebDAV resources.
- * @see xhrdav.ResourceBuilder.createCollection
- */
- xhrdav.DavFs.Request.prototype.getListDirFromMultistatus = function(
- content, opt_helper) {
- if (!goog.isDefAndNotNull(opt_helper)) opt_helper = {};
- var builder = xhrdav.ResourceBuilder.createCollection(content);
- var resources;
- if (!!opt_helper.hasCtrl) {
- resources = builder.getResources();
- if (goog.isDefAndNotNull(resources.root)) resources.root.setRequest(this);
- if (!goog.array.isEmpty(resources.childs)) {
- goog.array.forEach(resources.childs, function(child) {
- child.setRequest(this);
- }, this);
- }
- } else {
- resources = builder.serialize(opt_helper.asModel);
- }
- return resources;
- };
-
- /**
- * Update(move, copy) request handler.
- *
- * @private
- * @param {string} method Method name of xhrdav.Client instance.
- * @param {string} path Update src file path.
- * @param {string} dstPath Update destination path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_request Request parameters.
- * @param {Object=} context Callback scope.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.updateRequestHandler_ = function(
- method, path, dstPath, handler, opt_request, context, onXhrComplete) {
- var api = goog.getObjectByName(method, this.davSite_);
-
- api.call(this.davSite_, path, dstPath,
- goog.bind(this.responseHandler_, this,
- handler, this.simpleErrorHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Propfind request(listDir, getProps) handler.
- *
- * @private
- * @param {string} method Method name of xhrdav.Client instance.
- * @param {string} path propfind request path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_request Request parameters.
- * @param {Object=} context Callback scope.
- * @param {{hasCtrl:boolean, asModel:boolean}=} opt_helper response options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.propfindRequestHandler_ = function(
- path, handler, opt_request, context, opt_helper, onXhrComplete) {
- var dataHandler = goog.bind(this.processMultistatus_, this, opt_helper);
- this.davSite_.propfind(path,
- goog.bind(this.responseHandler_, this, handler, dataHandler, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Processing Reponse Multi-Status Data
- *
- * @private
- * @param {string} path HTTP Request path.
- * @param {number} statusCode HTTP Status code.
- * @param {Object} content Response body data.
- * @param {Object} headers Response headers.
- * @return {Array.<xhrdav.Errors, xhrdav.Response>} response contents.
- * @see xhrdav.Errors
- */
- xhrdav.DavFs.Request.prototype.processMultistatus_ = function(
- opt_helper, path, statusCode, content, headers) {
- var config = xhrdav.Conf.getInstance();
- var httpStatus = xhrdav.HttpStatus;
- var errors = new xhrdav.Errors();
-
- var args = [];
- if (statusCode == httpStatus.MULTI_STATUS) {
- // TODO: research scope
- xhrdav.Conf.logging({'name': 'xhrdav.DavFs.Request#processMultistatus_',
- 'scope': this instanceof xhrdav.DavFs.Request}, 'config');
- content = this.getListDirFromMultistatus(content, opt_helper);
- } else {
- var data = {statusCode: statusCode, path: path, content: content};
- errors.setRequest(xhrdav.DavFs.Request.buildRequestErrors(data));
- }
- args.push(errors);
- args.push(content);
-
- return args;
- };
-
- /**
- * Create Request paramters.
- *
- * @private
- * @param {Object=} opt_headers HTTP Request Headers.
- * @param {Object=} opt_params HTTP Query parameters.
- * @param {string=} opt_xhrId Xhrmanager Id.
- * @return {Object} created request map object.
- * @throws {Error} Not found of xhrIo object.
- */
- xhrdav.DavFs.Request.prototype.createRequestParameters_ = function(
- opt_headers, opt_params, opt_xhrId) {
- var opt_request = {headers: opt_headers || {}, query: opt_params || {}};
-
- if (!goog.isDefAndNotNull(this.xhrIo_)) {
- // Nothing to do.
- } else if (this.xhrIo_ instanceof goog.net.XhrIo) {
- goog.object.extend(opt_request, {xhrIo: this.xhrIo_});
- } else if (this.xhrIo_ instanceof goog.net.XhrManager) {
- var map;
- if (!goog.string.isEmptySafe(opt_xhrId)) {
- map = {xhrId: opt_xhrId, xhrMgr: this.xhrIo_};
- } else {
- map = {xhrId: goog.string.createUniqueString(), xhrMgr: this.xhrIo_};
- }
- goog.object.extend(opt_request, map);
- }
-
- return opt_request;
- };
-
- /**
- * listing collection
- *
- * @param {string} path Listing request path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{hasCtrl:boolean=, asModel:boolean=, xhrId:string=}=} opt_helper
- * xhr and response options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- * @see #propfindRequestHandler_
- */
- xhrdav.DavFs.Request.prototype.listDir = function(
- path, handler, opt_headers, opt_params, context, opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- opt_request.headers['Depth'] = 1; // listing directory
- this.propfindRequestHandler_(path, handler, opt_request,
- context, opt_helper, onXhrComplete);
- };
-
- /**
- * Get property for a single resource.
- *
- * @param {string} path property get request path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{hasCtrl:boolean=, asModel:boolean=, xhrId:string=}=} opt_helper
- * xhr and response options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- * @see #propfindRequestHandler_
- */
- xhrdav.DavFs.Request.prototype.getProps = function(
- path, handler, opt_headers, opt_params, context, opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- this.propfindRequestHandler_(
- path, handler, opt_request, context, onXhrComplete);
- };
-
- /**
- * Create directory (collection)
- *
- * @param {string} path Create dierctory path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.mkDir = function(
- path, handler, opt_headers, opt_params, context, opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- this.davSite_.mkcol(path,
- goog.bind(this.responseHandler_, this,
- handler, this.simpleErrorHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Remove resource
- *
- * @param {string} path Remove resource path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.remove = function(
- path, handler, opt_headers, opt_params, context, opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- this.davSite_._delete(path,
- goog.bind(this.responseHandler_, this,
- handler, this.simpleErrorHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Move resource
- *
- * @param {string} path Move src resource path.
- * @param {string} dstPath Move destination path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.move = function(
- path, dstPath, handler, opt_headers, opt_params, context,
- opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- this.updateRequestHandler_('move',
- path, dstPath, handler, opt_request, context, onXhrComplete);
- };
-
- /**
- * Copy resource
- *
- * @param {string} path Move src resource path.
- * @param {string} dstPath Move destination path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- * @see #updateRequestHandler_
- */
- xhrdav.DavFs.Request.prototype.copy = function(
- path, dstPath, handler, opt_headers, opt_params, context,
- opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
- this.updateRequestHandler_('copy',
- path, dstPath, handler, opt_request, context, onXhrComplete);
- };
-
- /**
- * Read data from WebDAV server
- *
- * @param {string} path read file path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.read = function(
- path, handler, opt_headers, opt_params, context, opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- path = xhrdav.utils.path.removeLastSlash(path);
-
- this.davSite_.get(path,
- goog.bind(this.responseHandler_, this,
- handler, this.contentReadHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Write data to WebDAV server
- *
- * @param {string} path upload file path.
- * @param {Object} content data string.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.write = function(
- path, content, handler, opt_headers, opt_params, context,
- opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- path = xhrdav.utils.path.removeLastSlash(path);
-
- this.davSite_.put(path, content,
- goog.bind(this.responseHandler_, this,
- handler, this.simpleErrorHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Upload data to WebDAV server
- *
- * @param {string} path upload file path.
- * @param {File} file File object(File API).
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- * @throws {Error} Not a file object.
- */
- xhrdav.DavFs.Request.prototype.upload = function(
- path, file, handler, opt_headers, opt_params, context,
- opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- path = xhrdav.utils.path.removeLastSlash(path);
- if (!(file instanceof File)) {
- xhrdav.Conf.logging(
- {'DavFs.Request#upload':
- 'Argument "file" is not a file object!![path: ' + path + ']'},
- 'warning');
- xhrdav.Conf.logging(file, 'warning');
- }
- if (goog.isDefAndNotNull(file)) {
- goog.object.extend(opt_request.headers,
- {x_file_name: file.name, x_file_size: file.size});
- }
-
- this.davSite_.put(path, file,
- goog.bind(this.responseHandler_, this,
- handler, this.simpleErrorHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Resource Exists to WebDAV server
- *
- * @param {string} path exists resource path.
- * @param {Function} handler callback handler function.
- * @param {Object=} opt_headers Request headers options.
- * @param {Object=} opt_params Request query paramters.
- * @param {Object=} context Callback scope.
- * @param {{xhrId:string=}=} opt_helper xhr options.
- * @param {Function=} onXhrComplete onXhrComplete callback function.
- */
- xhrdav.DavFs.Request.prototype.exists = function(
- path, handler, opt_headers, opt_params, context, opt_helper, onXhrComplete) {
- var opt_request = this.createRequestParameters_(
- opt_headers, opt_params, opt_helper && opt_helper.xhrId);
-
- this.davSite_.head(path,
- goog.bind(this.responseHandler_, this,
- handler, this.existsHandler_, path, context),
- opt_request, onXhrComplete);
- };
-
- /**
- * Create ResourceController.
- *
- * @param {(xhrdav.Resource|Object)=} resource
- * Json/Hash object for WebDAV resource.
- * @return {xhrdav.ResourceController}
- * createed request resource controller object.
- * @see xhrdav.ResourceController
- */
- xhrdav.DavFs.Request.prototype.createResourceController = function(resource) {
- var controller = new xhrdav.ResourceController(resource);
- controller.setRequest(this);
- return controller;
- };
-
-
- /* Entry Point for closure compiler */
- goog.exportSymbol('xhrdav.DavFs.getInstance', xhrdav.DavFs.getInstance);
- goog.exportSymbol('xhrdav.DavFs.DEFAULT_DAV_SITE_NAME',
- xhrdav.DavFs.DEFAULT_DAV_SITE_NAME);
- goog.exportProperty(xhrdav.DavFs.prototype, 'getXhrManager',
- xhrdav.DavFs.prototype.getXhrManager);
- goog.exportProperty(xhrdav.DavFs.prototype, 'setXhrManager',
- xhrdav.DavFs.prototype.setXhrManager);
- goog.exportProperty(xhrdav.DavFs.prototype, 'getConnection',
- xhrdav.DavFs.prototype.getConnection);
- goog.exportProperty(xhrdav.DavFs.prototype, 'addConnection',
- xhrdav.DavFs.prototype.addConnection);
- goog.exportProperty(xhrdav.DavFs.prototype, 'getRequest',
- xhrdav.DavFs.prototype.getRequest);
-
- goog.exportSymbol('xhrdav.DavFs.Request', xhrdav.DavFs.Request);
- goog.exportSymbol('xhrdav.DavFs.Request.buildRequestErrors',
- xhrdav.DavFs.Request.buildRequestErrors);
- goog.exportProperty(xhrdav.DavFs.Request.prototype,
- 'getListDirFromMultistatus',
- xhrdav.DavFs.Request.prototype.getListDirFromMultistatus);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'listDir',
- xhrdav.DavFs.Request.prototype.listDir);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'getProps',
- xhrdav.DavFs.Request.prototype.getProps);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'mkDir',
- xhrdav.DavFs.Request.prototype.mkDir);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'remove',
- xhrdav.DavFs.Request.prototype.remove);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'move',
- xhrdav.DavFs.Request.prototype.move);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'copy',
- xhrdav.DavFs.Request.prototype.copy);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'read',
- xhrdav.DavFs.Request.prototype.read);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'write',
- xhrdav.DavFs.Request.prototype.write);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'upload',
- xhrdav.DavFs.Request.prototype.upload);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'exists',
- xhrdav.DavFs.Request.prototype.exists);
- goog.exportProperty(xhrdav.DavFs.Request.prototype, 'createResourceController',
- xhrdav.DavFs.Request.prototype.createResourceController);
-
-