gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

getmedia.go (1921B)


      1 // GoToSocial
      2 // Copyright (C) GoToSocial Authors admin@gotosocial.org
      3 // SPDX-License-Identifier: AGPL-3.0-or-later
      4 //
      5 // This program is free software: you can redistribute it and/or modify
      6 // it under the terms of the GNU Affero General Public License as published by
      7 // the Free Software Foundation, either version 3 of the License, or
      8 // (at your option) any later version.
      9 //
     10 // This program is distributed in the hope that it will be useful,
     11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 // GNU Affero General Public License for more details.
     14 //
     15 // You should have received a copy of the GNU Affero General Public License
     16 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 
     18 package media
     19 
     20 import (
     21 	"context"
     22 	"errors"
     23 	"fmt"
     24 
     25 	apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
     26 	"github.com/superseriousbusiness/gotosocial/internal/db"
     27 	"github.com/superseriousbusiness/gotosocial/internal/gtserror"
     28 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
     29 )
     30 
     31 func (p *Processor) Get(ctx context.Context, account *gtsmodel.Account, mediaAttachmentID string) (*apimodel.Attachment, gtserror.WithCode) {
     32 	attachment, err := p.state.DB.GetAttachmentByID(ctx, mediaAttachmentID)
     33 	if err != nil {
     34 		if err == db.ErrNoEntries {
     35 			// attachment doesn't exist
     36 			return nil, gtserror.NewErrorNotFound(errors.New("attachment doesn't exist in the db"))
     37 		}
     38 		return nil, gtserror.NewErrorNotFound(fmt.Errorf("db error getting attachment: %s", err))
     39 	}
     40 
     41 	if attachment.AccountID != account.ID {
     42 		return nil, gtserror.NewErrorNotFound(errors.New("attachment not owned by requesting account"))
     43 	}
     44 
     45 	a, err := p.tc.AttachmentToAPIAttachment(ctx, attachment)
     46 	if err != nil {
     47 		return nil, gtserror.NewErrorNotFound(fmt.Errorf("error converting attachment: %s", err))
     48 	}
     49 
     50 	return &a, nil
     51 }