summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2016-01-21 21:24:01 +0100
committerSebastian Reichel <sre@ring0.de>2016-01-21 21:24:01 +0100
commit58413ee78e34cde4348dbf3d623c278c8d1ba048 (patch)
treeb753151218a09e5f6a22350de71f0c62732c7989 /src
parentcb7c28e7a38e55b0e5b6a477dfe24e4a96e09dab (diff)
downloadserial-barcode-scanner-58413ee78e34cde4348dbf3d623c278c8d1ba048.tar.bz2
web: improve database exception rendering
Diffstat (limited to 'src')
-rw-r--r--src/web/web.vala158
1 files changed, 69 insertions, 89 deletions
diff --git a/src/web/web.vala b/src/web/web.vala
index 1b8ba8c..cec12ed 100644
--- a/src/web/web.vala
+++ b/src/web/web.vala
@@ -27,11 +27,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -47,11 +45,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -111,11 +107,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -164,11 +158,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -268,11 +260,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -325,11 +315,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -443,11 +431,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -510,11 +496,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -543,11 +527,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -568,11 +550,9 @@ public class WebServer {
msg.set_response("application/json", Soup.MemoryUse.COPY, @"{ \"state\": \"$statestr\" }".data);
msg.set_status(200);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -650,11 +630,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -702,11 +680,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -761,11 +737,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -809,11 +783,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -843,11 +815,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -892,11 +862,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -1037,12 +1005,36 @@ public class WebServer {
return;
}
- void handler_400(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) {
+ void handler_400_fallback(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) {
string result = "Internal Server Error\n";
msg.set_response("text/plain", Soup.MemoryUse.COPY, result.data);
msg.set_status(400);
}
+ void handler_400(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client, string errmsg) {
+ /* strip exception prefix */
+ string errormessage = errmsg.substring(errmsg.index_of_char(':', errmsg.index_of_char(':', 0)+1)+2);
+
+ try {
+ var session = new WebSession(server, msg, path, query, client);
+ var template = new WebTemplate("errors/400.html", session);
+ template.replace("TITLE", "Internal Server Error");
+ template.replace("ERRMSG", errormessage);
+ template.menu_set_active("");
+ msg.set_response("text/html", Soup.MemoryUse.COPY, template.data);
+ msg.set_status(400);
+ } catch(TemplateError e) {
+ stderr.printf(e.message+"\n");
+ handler_404(server, msg, path, query, client);
+ } catch(DatabaseError e) {
+ stderr.printf(e.message+"\n");
+ handler_400_fallback(server, msg, path, query, client);
+ } catch(IOError e) {
+ stderr.printf(e.message+"\n");
+ handler_400_fallback(server, msg, path, query, client);
+ }
+ }
+
void handler_404(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) {
string result = "Page not Found\n";
msg.set_response("text/plain", Soup.MemoryUse.COPY, result.data);
@@ -1061,11 +1053,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -1081,11 +1071,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -1129,11 +1117,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -1201,11 +1187,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
@@ -1227,11 +1211,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}
}
@@ -1309,11 +1291,9 @@ public class WebServer {
stderr.printf(e.message+"\n");
handler_404(server, msg, path, query, client);
} catch(DatabaseError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
} catch(IOError e) {
- stderr.printf(e.message+"\n");
- handler_400(server, msg, path, query, client);
+ handler_400(server, msg, path, query, client, e.message);
}
}