Fix logging in repo, fix stale auth
This commit is contained in:
@@ -60,6 +60,8 @@ type Pds struct {
|
||||
recordIdsToNSID map[string]syntax.NSID
|
||||
Records map[string]map[string]any
|
||||
|
||||
TIDClock syntax.TIDClock
|
||||
|
||||
RefreshTime time.Time
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,11 @@ func NewRepo() (*Repo, error) {
|
||||
func (r *Repo) SetLogFunc(l func(string, ...any)) {
|
||||
r.logFunc = l
|
||||
r.handler = NewAppLogHandler(r.logFunc)
|
||||
if viper.GetBool(KeyDebug) {
|
||||
r.handler.SetLevel(slog.LevelDebug)
|
||||
} else {
|
||||
r.handler.SetLevel(slog.LevelWarn)
|
||||
}
|
||||
slog.SetDefault(slog.New(r.handler))
|
||||
r.Logger = slog.Default()
|
||||
r.Logger.Debug("New Log Func Set for slog")
|
||||
|
||||
@@ -29,14 +29,17 @@ type AuthRepo struct {
|
||||
authUrl string
|
||||
authError error
|
||||
|
||||
refreshes map[syntax.DID]time.Time
|
||||
|
||||
Logger *slog.Logger
|
||||
}
|
||||
|
||||
func NewAuthRepo(r *Repo) (*AuthRepo, error) {
|
||||
a := &AuthRepo{
|
||||
r: r,
|
||||
context: r.context,
|
||||
Logger: r.Logger,
|
||||
r: r,
|
||||
context: r.context,
|
||||
Logger: r.Logger,
|
||||
refreshes: make(map[syntax.DID]time.Time),
|
||||
}
|
||||
var err error
|
||||
a.oauthConfig, a.oauthClient, a.store, err = a.buildOAuthClient()
|
||||
@@ -131,6 +134,20 @@ func (r *AuthRepo) ListenForCallback(res chan url.Values) (int, error) {
|
||||
|
||||
func (r *AuthRepo) HasAuth(did syntax.DID) bool {
|
||||
sess, err := r.GetSession(did)
|
||||
if err != nil || sess == nil {
|
||||
return false
|
||||
}
|
||||
exp := time.Now().Add(time.Hour * -12)
|
||||
if tm, ok := r.refreshes[did]; ok && tm.After(exp) {
|
||||
return true
|
||||
}
|
||||
_, err = sess.RefreshTokens(r.context)
|
||||
if err != nil {
|
||||
r.Logger.Debug("Failed to refresh tokens")
|
||||
return false
|
||||
}
|
||||
r.refreshes[did] = time.Now()
|
||||
|
||||
return err == nil && sess != nil
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"git.bullercodeworks.com/brian/expds/data/models"
|
||||
@@ -49,7 +50,7 @@ func (r *Repo) SendToPDS(did syntax.DID) error {
|
||||
if err := c.Post(r.context, "com.atproto.repo.createRecord", body, &resp); err != nil {
|
||||
return err
|
||||
}
|
||||
r.Logger.Debug("posted: %s :: %s", resp.Uri.Authority(), resp.Uri.RecordKey())
|
||||
r.Logger.Debug(fmt.Sprintf("posted: %s :: %s", resp.Uri.Authority(), resp.Uri.RecordKey()))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -68,10 +69,11 @@ func (r *Repo) DeleteRecord(did syntax.DID, collection syntax.NSID, rkey string)
|
||||
Cid syntax.CID `json:"cid"`
|
||||
Rev syntax.TID `json:"rev"`
|
||||
}
|
||||
r.Logger.Debug("deleting record (%s)", rkey)
|
||||
r.Logger.Debug(fmt.Sprintf("deleting record (%s)", rkey))
|
||||
if err := c.Post(r.context, "com.atproto.repo.deleteRecord", body, &resp); err != nil {
|
||||
r.Logger.Warn(fmt.Sprintf("error deleting record: %s", err.Error()))
|
||||
return err
|
||||
}
|
||||
r.Logger.Debug("posted: %s :: %s", resp.Cid.String(), resp.Rev.String())
|
||||
r.Logger.Debug(fmt.Sprintf("posted: %s :: %s", resp.Cid.String(), resp.Rev.String()))
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user