Skip to content

Commit 983cd88

Browse files
authored
Merge pull request #2799 from vibe-d/rest_rpc_improvements
Rest and RPC improvements
2 parents 8cc7ce8 + c6dfa0d commit 983cd88

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

web/vibe/web/rest.d

+12-2
Original file line numberDiff line numberDiff line change
@@ -426,10 +426,20 @@ URLRouter registerRestInterface(TImpl)(URLRouter router, TImpl instance, RestInt
426426
alias R = ReturnType!ovrld;
427427

428428
static if (isInstanceOf!(Collection, R)) {
429-
auto ret = __traits(getMember, instance, fname)(R.ParentIDs.init);
429+
typeof(__traits(getMember, instance, fname)(R.ParentIDs.init)) ret;
430+
try ret = __traits(getMember, instance, fname)(R.ParentIDs.init);
431+
catch (Exception e) {
432+
logDiagnostic("Collection interface accessor %s.%s has thrown, skipping route registration: %s", TImpl.stringof, fname, e.msg);
433+
continue;
434+
}
430435
router.registerRestInterface!(R.Interface)(ret.m_interface, intf.subInterfaces[i].settings);
431436
} else {
432-
auto ret = __traits(getMember, instance, fname)();
437+
typeof(__traits(getMember, instance, fname)()) ret;
438+
try ret = __traits(getMember, instance, fname)();
439+
catch (Exception e) {
440+
logDiagnostic("Interface accessor %s.%s has thrown, skipping route registration: %s", TImpl.stringof, fname, e.msg);
441+
continue;
442+
}
433443
router.registerRestInterface!R(ret, intf.subInterfaces[i].settings);
434444
}
435445
}

web/vibe/web/rpc.d

+2
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ struct WebRPCPeer(I) {
183183
WebRPCPeerImpl!(I, I, "") m_impl;
184184
}
185185

186+
@safe:
187+
186188
private this(WebRPCPeerImpl!(I, I, "") impl)
187189
{
188190
m_impl = impl;

0 commit comments

Comments
 (0)