auto update customUser access token

This commit is contained in:
zhaoYangguang 2021-11-15 20:55:21 +08:00
parent 7b04f2d9b7
commit b8da92fc1b
1 changed files with 22 additions and 7 deletions

View File

@ -101,11 +101,14 @@ func (puppet *Puppet) StartCustomMXID() error {
} }
resp, err := intent.Whoami() resp, err := intent.Whoami()
if err != nil { if err != nil {
if strings.Index(err.Error(), "M_UNKNOWN_TOKEN (HTTP 401)") > -1 { // if strings.Index(err.Error(), "M_UNKNOWN_TOKEN (HTTP 401)") > -1 {
puppet.log.Debugln("StartCustomMXID UpdateAccessToken: ", puppet.MXID) // puppet.log.Debugln("StartCustomMXID UpdateAccessToken: ", puppet.MXID)
// if puppet.customUser != nil {
// err, _ = puppet.customUser.UpdateAccessToken(puppet)
// }
// }
if puppet.customUser != nil { if puppet.customUser != nil {
err, _ = puppet.customUser.UpdateAccessToken(puppet) err, _ = puppet.updateCustomAccessTokenIfExpired(err, puppet.customUser)
}
} }
if err != nil { if err != nil {
puppet.clearCustomMXID() puppet.clearCustomMXID()
@ -123,6 +126,17 @@ func (puppet *Puppet) StartCustomMXID() error {
return nil return nil
} }
func (puppet *Puppet) updateCustomAccessTokenIfExpired(err error, user *User) (newErr error, accessToken string) {
if user == nil {
return err, ""
}
puppet.log.Debugln("StartCustomMXID UpdateAccessToken: ", puppet.MXID)
if strings.Index(err.Error(), "M_UNKNOWN_TOKEN (HTTP 401)") > -1 {
return user.UpdateAccessToken(puppet)
}
return err, ""
}
func (puppet *Puppet) startSyncing() { func (puppet *Puppet) startSyncing() {
if !puppet.bridge.Config.Bridge.SyncWithCustomPuppets { if !puppet.bridge.Config.Bridge.SyncWithCustomPuppets {
return return
@ -146,7 +160,7 @@ func (puppet *Puppet) stopSyncing() {
func (puppet *Puppet) ProcessResponse(resp *mautrix.RespSync, since string) error { func (puppet *Puppet) ProcessResponse(resp *mautrix.RespSync, since string) error {
if !puppet.customUser.IsConnected() { if !puppet.customUser.IsConnected() {
puppet.log.Debugln("Skipping sync processing: custom user not connected to whatsapp") puppet.log.Debugln("Skipping sync processing: custom user not connected to skype")
return nil return nil
} }
for roomID, events := range resp.Rooms.Join { for roomID, events := range resp.Rooms.Join {
@ -237,7 +251,8 @@ func (puppet *Puppet) handleTypingEvent(portal *Portal, evt *event.Event) {
func (puppet *Puppet) OnFailedSync(res *mautrix.RespSync, err error) (time.Duration, error) { func (puppet *Puppet) OnFailedSync(res *mautrix.RespSync, err error) (time.Duration, error) {
puppet.log.Warnln("Sync error:", err) puppet.log.Warnln("Sync error:", err)
return 10 * time.Second, nil err, _ = puppet.updateCustomAccessTokenIfExpired(err, puppet.customUser)
return 10 * time.Second, err
} }
func (puppet *Puppet) GetFilterJSON(_ id.UserID) *mautrix.Filter { func (puppet *Puppet) GetFilterJSON(_ id.UserID) *mautrix.Filter {