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 +4 -4
- data/app/assets/javascripts/kojac.js +48 -27
- data/app/controllers/kojac_front_methods.rb +24 -10
- data/lib/kojac/kojac_rails.rb +3 -3
- data/lib/kojac/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b57d61c1e54a860a73ee4902a32c94c79b8f3d5
|
4
|
+
data.tar.gz: 8e94983aa550cabd1806f550530a11e5b6bd237a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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
|
data/lib/kojac/kojac_rails.rb
CHANGED
@@ -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
|
-
|
630
|
-
if
|
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:
|
634
|
+
error: err
|
635
635
|
}
|
636
636
|
else
|
637
637
|
result_key = op[:result_key] || op[:key]
|
data/lib/kojac/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: buzztools
|