application.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import Ember from 'ember';
  2. import DRFAdapter from './drf';
  3. export default DRFAdapter.extend({
  4. headers: function() {
  5. return {
  6. 'X-CSRFToken': this.get('csrf.token')
  7. };
  8. }.property().volatile(),
  9. // Simple ajax util for RPC requests
  10. // raison d'etre: because default ones are processing server responses
  11. // and there isn't response standard to allow that for RPC's
  12. misagoAjax: function(method, url, data, onProgress) {
  13. var adapter = this;
  14. return new Ember.RSVP.Promise(function(resolve, reject) {
  15. var hash = adapter.ajaxOptions(url, method, {data: data || null});
  16. if (onProgress) {// if true we are uploading file
  17. // monitor progress
  18. hash.xhr = function() {
  19. var uploadingXhr = Ember.$.ajaxSettings.xhr();
  20. uploadingXhr.upload.addEventListener('progress', onProgress, false);
  21. return uploadingXhr;
  22. };
  23. // don't meddle with data
  24. hash.data = data;
  25. hash.contentType = false;
  26. hash.processData = false;
  27. }
  28. hash.success = function(json) {
  29. Ember.run(null, resolve, json);
  30. };
  31. hash.error = function(jqXHR) {
  32. Ember.run(null, reject, jqXHR);
  33. };
  34. Ember.$.ajax(hash);
  35. }, 'DS: MisagoAdapter#misago-ajax ' + method + ' to ' + url);
  36. }
  37. });