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 +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
|