ckeditor5-image-upload-base64
Version:
The development environment of CKEditor 5 – the best browser-based rich text editor.
79 lines (70 loc) • 2.32 kB
JavaScript
/**
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
/**
* @module cloud-services-core/uploadgateway/uploadgateway
*/
import FileUploader from './fileuploader';
import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';
/**
* UploadGateway abstracts file uploads to CKEditor Cloud Services.
*/
export default class UploadGateway {
/**
* Creates `UploadGateway` instance.
*
* @param {module:cloud-services-core/token~Token} token Token used for authentication.
* @param {String} apiAddress API address.
*/
constructor( token, apiAddress ) {
if ( !token ) {
/**
* Token must be provided.
*
* @error uploadgateway-missing-token
*/
throw new CKEditorError( 'uploadgateway-missing-token: Token must be provided.', null );
}
if ( !apiAddress ) {
/**
* Api address must be provided.
*
* @error uploadgateway-missing-api-address
*/
throw new CKEditorError( 'uploadgateway-missing-api-address: Api address must be provided.', null );
}
/**
* CKEditor Cloud Services access token.
*
* @type {module:cloud-services-core/token~Token}
* @private
*/
this._token = token;
/**
* CKEditor Cloud Services API address.
*
* @type {String}
* @private
*/
this._apiAddress = apiAddress;
}
/**
* Creates a {@link module:cloud-services-core/uploadgateway/fileuploader~FileUploader} instance that wraps
* file upload process. The file is being sent at a time when the
* {@link module:cloud-services-core/uploadgateway/fileuploader~FileUploader#send} method is called.
*
* const token = await Token.create( 'https://token-endpoint' );
* new UploadGateway( token, 'https://example.org' )
* .upload( 'FILE' )
* .onProgress( ( data ) => console.log( data ) )
* .send()
* .then( ( response ) => console.log( response ) );
*
* @param {Blob|String} fileOrData A blob object or a data string encoded with Base64.
* @returns {module:cloud-services-core/uploadgateway/fileuploader~FileUploader} Returns `FileUploader` instance.
*/
upload( fileOrData ) {
return new FileUploader( fileOrData, this._token, this._apiAddress );
}
}