kojac 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4c2362fb512574c8a5ef15983cca66fd6bd2aab
4
- data.tar.gz: 1f23df6b7d057f077b5563523cd7cf86d6e4862f
3
+ metadata.gz: 5b57d61c1e54a860a73ee4902a32c94c79b8f3d5
4
+ data.tar.gz: 8e94983aa550cabd1806f550530a11e5b6bd237a
5
5
  SHA512:
6
- metadata.gz: a6ca900452043b77c3cdb3433dc3ab4763d9be78483f514f6c09e87c31fed58ef3c67c43ee81f074a45569a70ae1a0f4ff47c4d0b28b711f77b1df7e037f6ae3
7
- data.tar.gz: 177f53ce53cdd7f5d3f4afa9128332b78cbd392cfce2b4228cbea2dad4e2666ebb275088eb33e8669bcc14eb931bc399dec2a406d6a6e20206f0b16259a9f603
6
+ metadata.gz: f1f1c96b5f78d9fc219e59d294144b92765828a70c19561b8ac3ca9b8551d70535d1d675979f9307b36c932e4dccb98d26ced62255761051f947a1704c629306
7
+ data.tar.gz: 456a272aee41e4c3fe7786cfa918a6b99567e8556ecf6239f86267ead5af67ee30e616b35968d657c951e16574ee6d4555264432b5a22b75ff62e97f382693c5
@@ -1340,34 +1340,59 @@ Kojac.RemoteProvider = Kojac.Object.extend({
1340
1340
  contentType: "application/json; charset=utf-8",
1341
1341
  dataType: "json"
1342
1342
  };
1343
- var result = jQuery.ajax(this.serverPath,ajaxpars).done(function(aResult,aStatus,aXhr){
1344
- // poke results into request ops using request_op_index
1345
- aRequest.xhr = aXhr;
1346
- for (var i=0;i<server_ops.length;i++) {
1347
- var opRequest = server_ops[i]; //aRequest.ops[request_op_index[i]];
1348
- var opResult = (_.isArray(aResult.ops) && (i<aResult.ops.length) && aResult.ops[i]);
1349
- opRequest.fromCache = false;
1350
- opRequest.performed = true;
1351
- if (opResult.error) {
1352
- opRequest.error = opResult.error;
1353
- aRequest.handlers.handleError(opResult.error);
1354
- break;
1343
+
1344
+ var handleAjaxResponse = function(aResult,aStatus,aXhr) {
1345
+ if (aResult instanceof Error || (aResult.error && !aResult.ops)) { // new code returns errors without ops
1346
+ if (aResult.error) {
1347
+ aRequest.error = aResult.error;
1355
1348
  } else {
1356
- opRequest.receiveResult(opResult);
1349
+ aRequest.error = me.interpretXhrError(aXhr);
1350
+ if (aStatus == "parsererror") {
1351
+ aRequest.error.http_code = 500;
1352
+ aRequest.error.kind = "parserError";
1353
+ aRequest.error.message = "A data error occurred (parserError)";
1354
+ aRequest.error.debug_message = aResult.message;
1355
+ }
1356
+ }
1357
+ aRequest.error.headers = aXhr.getAllResponseHeaders();
1358
+ aRequest.error.response = aXhr.responseText;
1359
+
1360
+ //_.removeKey(aRequest,'results');
1361
+ for (var i=0;i<server_ops.length;i++) {
1362
+ var opRequest = server_ops[i]; //aRequest.ops[request_op_index[i]];
1363
+ opRequest.fromCache = false;
1364
+ opRequest.performed = true;
1365
+ //if (opRequest.error)
1366
+ // _.removeKey(opRequest,'results');
1367
+ }
1368
+
1369
+ aRequest.handlers.handleError(aRequest.error);
1370
+ } else { // ops may have errors
1371
+ // poke results into request ops using request_op_index
1372
+ aRequest.xhr = aXhr;
1373
+ for (var i=0;i<server_ops.length;i++) {
1374
+ var opRequest = server_ops[i]; //aRequest.ops[request_op_index[i]];
1375
+ var opResult = (_.isArray(aResult.ops) && (i<aResult.ops.length) && aResult.ops[i]);
1376
+ opRequest.fromCache = false;
1377
+ opRequest.performed = true;
1378
+ if (!opResult)
1379
+ opResult = null;
1380
+ if (aResult.error) {
1381
+ opRequest.error = opResult.error;
1382
+ aRequest.handlers.handleError(opResult.error);
1383
+ break;
1384
+ } else {
1385
+ opRequest.receiveResult(opResult);
1386
+ }
1357
1387
  }
1358
1388
  }
1389
+ };
1390
+
1391
+ var result = jQuery.ajax(this.serverPath,ajaxpars).done(function(aResult,aStatus,aXhr){
1392
+ handleAjaxResponse(aResult,aStatus,aXhr);
1359
1393
  aRequest.handlers.callNext();
1360
1394
  }).fail(function(aXhr,aStatus,aError){
1361
- aRequest.error = me.interpretXhrError(aXhr);
1362
- //_.removeKey(aRequest,'results');
1363
- for (var i=0;i<server_ops.length;i++) {
1364
- var opRequest = server_ops[i]; //aRequest.ops[request_op_index[i]];
1365
- opRequest.fromCache = false;
1366
- opRequest.performed = true;
1367
- //if (opRequest.error)
1368
- // _.removeKey(opRequest,'results');
1369
- }
1370
- aRequest.handlers.handleError(aRequest.error);
1395
+ handleAjaxResponse(aError,aStatus,aXhr);
1371
1396
  aRequest.handlers.callNext();
1372
1397
  });
1373
1398
  }
@@ -1383,8 +1408,6 @@ Kojac.RemoteProvider = Kojac.Object.extend({
1383
1408
  if (http_code = (aXhr && aXhr.status)) {
1384
1409
  kind = (aXhr.statusText && aXhr.statusText.replace(' ',''));
1385
1410
  message = debug_message = aXhr.statusText;
1386
- headers = aXhr.getAllResponseHeaders();
1387
- response = aXhr.responseText;
1388
1411
  } else {
1389
1412
  http_code = null;
1390
1413
  kind = "NetworkError";
@@ -1398,8 +1421,6 @@ Kojac.RemoteProvider = Kojac.Object.extend({
1398
1421
  message: message, // an explanation for normal humans
1399
1422
  debug_message: debug_message, // an explanation for developers
1400
1423
  xhr: aXhr, // the original XHR object from jQuery
1401
- headers: headers, // all response headers
1402
- response: response // the response body
1403
1424
  }
1404
1425
  }
1405
1426
  });
@@ -3,7 +3,7 @@ module KojacFrontMethods
3
3
  protected
4
4
 
5
5
  def unauthorized!(aMessage=nil)
6
- raise aMessage || "You are not authorized to perform this action"
6
+ raise ::Pundit::NotAuthorizedError, aMessage||"You are not authorized to perform this action"
7
7
  end
8
8
 
9
9
  def do_op(op)
@@ -62,20 +62,34 @@ module KojacFrontMethods
62
62
  Rails.logger.debug e.message
63
63
  Rails.logger.debug e.backtrace.join("\n") unless Rails.env.production?
64
64
  handle_exception(e) if respond_to? :handle_exception
65
- output = {
66
- error: {
67
- format: 'KojacError',
68
- kind: 'Exception',
69
- errors: [{
70
- message: e.message
71
- }]
65
+
66
+ if e.is_a? ::Pundit::NotAuthorizedError
67
+ output = {
68
+ error: {
69
+ format: 'KojacError',
70
+ kind: 'Exception',
71
+ errors: [{
72
+ message: e.message
73
+ }]
74
+ }
75
+ }
76
+ status = :unauthorized
77
+ else
78
+ output = {
79
+ error: {
80
+ format: 'KojacError',
81
+ kind: 'Exception',
82
+ errors: [{
83
+ message: e.message
84
+ }]
85
+ }
72
86
  }
73
- }
87
+ status = output[:error] ? :unprocessable_entity : :ok
88
+ end
74
89
  output[:error][:errors][0][:backtrace] = e.backtrace unless Rails.env.production?
75
90
  output
76
91
  end
77
92
  send(:after_process, [aInputJson, output]) if respond_to? :after_process
78
- status = output[:error] ? :unprocessable_entity : :ok
79
93
  jsono = KojacUtils.to_jsono(output, scope: current_user)
80
94
  [jsono,status]
81
95
  end
@@ -626,12 +626,12 @@ module Kojac
626
626
  action = rails_controller? ? "execute_#{action}" : "execute__#{action}"
627
627
  raise "action #{action} not implemented on #{resource}" unless respond_to? action.to_sym
628
628
  result = rails_controller? ? send(action.to_sym,op) : send(action)
629
- error = rails_controller? ? op[:error] : (respond_to?(:error).to_nil && send(:error))
630
- if error
629
+ err = rails_controller? ? op[:error] : (respond_to?(:error).to_nil && send(:error))
630
+ if err
631
631
  {
632
632
  key: op[:key],
633
633
  verb: op[:verb],
634
- error: error
634
+ error: err
635
635
  }
636
636
  else
637
637
  result_key = op[:result_key] || op[:key]
data/lib/kojac/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kojac
2
- VERSION = "0.15.0"
2
+ VERSION = "0.16.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kojac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary McGhee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-01 00:00:00.000000000 Z
11
+ date: 2015-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: buzztools