Add ResponseWithReauth to do WithReauth that returns a perigee.Response
diff --git a/reauth.go b/reauth.go
index eb9ac1e..342aca4 100644
--- a/reauth.go
+++ b/reauth.go
@@ -21,3 +21,16 @@
}
return err
}
+
+// This is like WithReauth above but returns a perigee Response object
+func (c *Context) ResponseWithReauth(ap AccessProvider, f func() (*perigee.Response, error)) (*perigee.Response, error) {
+ response, err := f()
+ cause, ok := err.(*perigee.UnexpectedResponseCodeError)
+ if ok && cause.Actual == 401 {
+ err = c.reauthHandler(ap)
+ if err == nil {
+ response, err = f()
+ }
+ }
+ return response, err
+}