feat(httpx): implement optional body logging also on http error (#651)

1. we want optionally to log the body (we don't want to log the body
when we're fetching psiphon secrets or tor targets)

2. we want body logging to _also_ happen on error since this is quite
useful to debug possible errors when accessing the API

This diff adds the above functionality, which were previously
described in https://github.com/ooni/probe/issues/1951.

This diff also adds comprehensive testing.
This commit is contained in:
Simone Basso
2022-01-05 16:26:51 +01:00
committed by GitHub
parent ee0aa18616
commit dba861d262
13 changed files with 229 additions and 17 deletions
@@ -62,7 +62,7 @@ func Control(
sess.Logger().Infof("control for %s...", creq.HTTPRequest)
// make sure error is wrapped
err = legacyerrorsx.SafeErrWrapperBuilder{
Error: clnt.Build().PostJSON(ctx, "/", creq, &out),
Error: clnt.WithBodyLogging().Build().PostJSON(ctx, "/", creq, &out),
Operation: netxlite.TopLevelOperation,
}.MaybeBuild()
sess.Logger().Infof("control for %s... %+v", creq.HTTPRequest, err)
@@ -20,7 +20,7 @@ func Control(
}
// make sure error is wrapped
err = errorsxlegacy.SafeErrWrapperBuilder{
Error: clnt.Build().PostJSON(ctx, resourcePath, creq, &out),
Error: clnt.WithBodyLogging().Build().PostJSON(ctx, resourcePath, creq, &out),
Operation: netxlite.TopLevelOperation,
}.MaybeBuild()
return