summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js')
-rw-r--r--www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js b/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js
new file mode 100644
index 00000000..8efd129d
--- /dev/null
+++ b/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js
@@ -0,0 +1,45 @@
+( function ( mw, OO ) {
+ /**
+ * Represents an object which send a direct request to the MediaWiki API.
+ * This is used when there is no actual file payload (eg. Flickr import)
+ *
+ * @param {mw.UploadWizardUpload} upload current upload
+ * @param {mw.Api} api
+ */
+ mw.ApiUploadPostHandler = function ( upload, api ) {
+ mw.ApiUploadHandler.call( this, upload, api );
+
+ this.request = null;
+ };
+
+ OO.inheritClass( mw.ApiUploadPostHandler, mw.ApiUploadHandler );
+
+ mw.ApiUploadPostHandler.prototype.abort = function () {
+ this.request.abort();
+ };
+
+ /**
+ * @return {jQuery.Promise}
+ */
+ mw.ApiUploadPostHandler.prototype.submit = function () {
+ var tempname = this.upload.getFilename(),
+ ext = tempname.split( '.' ).pop();
+
+ // Limit filename length to 240 bytes (limit hardcoded in UploadBase.php).
+ if ( tempname.length > 240 ) {
+ tempname = tempname.substr( 0, 240 - ext.length - 1 ) + '.' + ext;
+ }
+
+ this.upload.ui.setStatus( 'mwe-upwiz-transport-started' );
+
+ this.request = this.api.postWithToken( 'csrf', {
+ action: 'upload',
+ stash: 1,
+ ignorewarnings: 1,
+ url: this.upload.file.url,
+ filename: tempname
+ } );
+
+ return this.request;
+ };
+}( mediaWiki, OO ) );