summaryrefslogtreecommitdiff
path: root/internal/processing/account/get.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/processing/account/get.go')
-rw-r--r--internal/processing/account/get.go34
1 files changed, 26 insertions, 8 deletions
diff --git a/internal/processing/account/get.go b/internal/processing/account/get.go
index 2571d7af1..97f2f0b4a 100644
--- a/internal/processing/account/get.go
+++ b/internal/processing/account/get.go
@@ -26,23 +26,41 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
+ "github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
)
-func (p *processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account, targetAccountID string) (*apimodel.Account, error) {
+func (p *processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account, targetAccountID string) (*apimodel.Account, gtserror.WithCode) {
targetAccount, err := p.db.GetAccountByID(ctx, targetAccountID)
if err != nil {
if err == db.ErrNoEntries {
- return nil, errors.New("account not found")
+ return nil, gtserror.NewErrorNotFound(errors.New("account not found"))
}
- return nil, fmt.Errorf("db error: %s", err)
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("db error: %s", err))
}
+ return p.getAccountFor(ctx, requestingAccount, targetAccount)
+}
+
+func (p *processor) GetLocalByUsername(ctx context.Context, requestingAccount *gtsmodel.Account, username string) (*apimodel.Account, gtserror.WithCode) {
+ targetAccount, err := p.db.GetLocalAccountByUsername(ctx, username)
+ if err != nil {
+ if err == db.ErrNoEntries {
+ return nil, gtserror.NewErrorNotFound(errors.New("account not found"))
+ }
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("db error: %s", err))
+ }
+
+ return p.getAccountFor(ctx, requestingAccount, targetAccount)
+}
+
+func (p *processor) getAccountFor(ctx context.Context, requestingAccount *gtsmodel.Account, targetAccount *gtsmodel.Account) (*apimodel.Account, gtserror.WithCode) {
var blocked bool
+ var err error
if requestingAccount != nil {
- blocked, err = p.db.IsBlocked(ctx, requestingAccount.ID, targetAccountID, true)
+ blocked, err = p.db.IsBlocked(ctx, requestingAccount.ID, targetAccount.ID, true)
if err != nil {
- return nil, fmt.Errorf("error checking account block: %s", err)
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("error checking account block: %s", err))
}
}
@@ -50,7 +68,7 @@ func (p *processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account
if blocked {
apiAccount, err = p.tc.AccountToAPIAccountBlocked(ctx, targetAccount)
if err != nil {
- return nil, fmt.Errorf("error converting account: %s", err)
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("error converting account: %s", err))
}
return apiAccount, nil
}
@@ -59,7 +77,7 @@ func (p *processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account
if targetAccount.Domain != "" {
targetAccountURI, err := url.Parse(targetAccount.URI)
if err != nil {
- return nil, fmt.Errorf("error parsing url %s: %s", targetAccount.URI, err)
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("error parsing url %s: %s", targetAccount.URI, err))
}
a, err := p.federator.GetRemoteAccount(ctx, requestingAccount.Username, targetAccountURI, true, false)
@@ -74,7 +92,7 @@ func (p *processor) Get(ctx context.Context, requestingAccount *gtsmodel.Account
apiAccount, err = p.tc.AccountToAPIAccountPublic(ctx, targetAccount)
}
if err != nil {
- return nil, fmt.Errorf("error converting account: %s", err)
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("error converting account: %s", err))
}
return apiAccount, nil
}