diff options
author | r <r@freesoftwareextremist.com> | 2021-10-23 13:41:41 +0000 |
---|---|---|
committer | r <r@freesoftwareextremist.com> | 2021-10-23 13:41:41 +0000 |
commit | 7d389d22581cc785005a42d655eb7f9c32aac3ec (patch) | |
tree | f705a2ff549429953b46dc31ed12b695385e44c2 | |
parent | 816281c225e1d07602aa4f6d87d5ffbbc8dfbb7a (diff) | |
download | bloat-7d389d22581cc785005a42d655eb7f9c32aac3ec.tar.gz bloat-7d389d22581cc785005a42d655eb7f9c32aac3ec.zip |
Show signin button in case of an auth error
-rw-r--r-- | mastodon/helper.go | 23 | ||||
-rw-r--r-- | service/service.go | 3 |
2 files changed, 23 insertions, 3 deletions
diff --git a/mastodon/helper.go b/mastodon/helper.go index 05af20f..cb0013d 100644 --- a/mastodon/helper.go +++ b/mastodon/helper.go @@ -3,12 +3,28 @@ package mastodon import ( "encoding/base64" "encoding/json" - "errors" "fmt" "net/http" "os" ) +type Error struct { + code int + err string +} + +func (e Error) Error() string { + return e.err +} + +func (e Error) IsAuthError() bool { + switch e.code { + case http.StatusForbidden, http.StatusUnauthorized: + return true + } + return false +} + // Base64EncodeFileName returns the base64 data URI format string of the file with the file name. func Base64EncodeFileName(filename string) (string, error) { file, err := os.Open(filename) @@ -51,5 +67,8 @@ func parseAPIError(prefix string, resp *http.Response) error { errMsg = fmt.Sprintf("%s: %s", errMsg, e.Error) } - return errors.New(errMsg) + return Error{ + code: resp.StatusCode, + err: errMsg, + } } diff --git a/service/service.go b/service/service.go index 03f0ff3..244fd81 100644 --- a/service/service.go +++ b/service/service.go @@ -114,7 +114,8 @@ func (s *service) ErrorPage(c *client, err error, retry bool) error { var sessionErr bool if err != nil { errStr = err.Error() - if err == errInvalidSession || err == errInvalidCSRFToken { + if me, ok := err.(mastodon.Error); ok && me.IsAuthError() || + err == errInvalidSession || err == errInvalidCSRFToken { sessionErr = true } } |