kojac 0.15.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
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