8
0

token.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals console, window, document, XMLHttpRequest */
  6. import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
  7. import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';
  8. import CloudServices from '../../src/cloudservices';
  9. import { TOKEN_URL, UPLOAD_URL } from '../_utils/cloud-services-config';
  10. const output = document.querySelector( '#output' );
  11. const refreshTokenButton = document.querySelector( '#refresh-token' );
  12. ClassicEditor
  13. .create( document.querySelector( '#editor' ), {
  14. cloudServices: {
  15. tokenUrl: getToken,
  16. uploadUrl: UPLOAD_URL
  17. },
  18. plugins: [ ArticlePluginSet, CloudServices ],
  19. toolbar: [ 'heading', '|', 'undo', 'redo' ]
  20. } )
  21. .then( editor => {
  22. window.editor = editor;
  23. const cloudServices = editor.plugins.get( CloudServices );
  24. refreshTokenButton.addEventListener( 'click', () => {
  25. cloudServices.token._refreshToken();
  26. } );
  27. } )
  28. .catch( err => {
  29. console.error( err.stack );
  30. } );
  31. window.addEventListener( refreshTokenButton, () => {} );
  32. function getToken() {
  33. return new Promise( ( resolve, reject ) => {
  34. const xhr = new XMLHttpRequest();
  35. xhr.open( 'GET', TOKEN_URL );
  36. xhr.addEventListener( 'load', () => {
  37. const statusCode = xhr.status;
  38. const xhrResponse = xhr.response;
  39. if ( statusCode < 200 || statusCode > 299 ) {
  40. return reject( new Error( 'Cannot download new token!' ) );
  41. }
  42. return resolve( xhrResponse );
  43. } );
  44. xhr.addEventListener( 'error', () => reject( new Error( 'Network Error' ) ) );
  45. xhr.addEventListener( 'abort', () => reject( new Error( 'Abort' ) ) );
  46. xhr.send();
  47. } ).then( response => {
  48. log( 'Token: ' + response );
  49. return response;
  50. } );
  51. }
  52. function log( message ) {
  53. const pre = document.createElement( 'pre' );
  54. pre.innerText = message;
  55. output.appendChild( pre );
  56. }