Browse Source

Ticket #4849 : Gestion des exceptions javascript levées par JSON.parse() sur un flux non conforme JSON (erreur HTTP diverses)

pull/4850/head
g0uZ 2 months ago
committed by Matthieu Marcillaud
parent
commit
75863ce6f6
  1. 43
      javascript/bigup.js

43
javascript/bigup.js

@ -221,6 +221,8 @@ function Bigup(params, opts, callbacks) {
singleFile: this.singleFile,
simultaneousUploads: 2, // 3 par défaut
permanentErrors : [403, 404, 413, 415, 500, 501], // ajout de 403 à la liste par défaut.
chunkRetryInterval : 1000, // on rééssaye de télécharger le chunk après 1s si erreur
maxChunkRetries: 25,
onDropStopPropagation: true, // ne pas bubler quand la drop zone est multiple
query: {
action: "bigup",
@ -346,18 +348,25 @@ Bigup.prototype = {
// Retirer la barre de progression
this.flow.on('fileSuccess', function(file, message, chunk){
// console.info("success", file, message, chunk);
var desc = JSON.parse(message);
// enlever le bouton annuler
file.emplacement.find(".cancel").fadeOut("normal", function(){
$(this).remove();
// et mettre un bouton enlever !
if (desc.bigup.identifiant) {
file.emplacement.data('identifiant', desc.bigup.identifiant);
me.ajouter_bouton_enlever(file.emplacement);
}
});
me.progress.retirer(file.emplacement.find("progress"));
me.input.trigger('bigup.fileSuccess', [file, desc]);
var desc = "";
try {
desc = JSON.parse(message);
// enlever le bouton annuler
file.emplacement.find(".cancel").fadeOut("normal", function(){
$(this).remove();
// et mettre un bouton enlever !
if (desc.bigup.identifiant) {
file.emplacement.data('identifiant', desc.bigup.identifiant);
me.ajouter_bouton_enlever(file.emplacement);
}
});
me.progress.retirer(file.emplacement.find("progress"));
me.input.trigger('bigup.fileSuccess', [file, desc]);
} catch(e) {
desc = _T('bigup:erreur_de_transfert')+" : "+e;
me.progress.retirer(file.emplacement.find("progress"));
me.presenter_erreur(file.emplacement, desc);
}
});
// Un fichier a été enlevé, soit par nous, soit par Flow
@ -385,9 +394,13 @@ Bigup.prototype = {
console.warn("error", file, message, chunk);
var message_erreur = _T('bigup:erreur_de_transfert');
if (message) {
data = JSON.parse(message);
if (typeof data.error !== 'undefined') {
message_erreur = data.error;
try {
data = JSON.parse(message);
if (typeof data.error !== 'undefined') {
message_erreur = data.error;
}
} catch(e){
message_erreur += " : "+e;
}
}
me.progress.retirer(file.emplacement.find("progress"));

Loading…
Cancel
Save