gtsocial-umbx

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

emoji.go (2166B)


      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 fedi
     19 
     20 import (
     21 	"context"
     22 	"fmt"
     23 
     24 	"github.com/superseriousbusiness/gotosocial/internal/ap"
     25 	"github.com/superseriousbusiness/gotosocial/internal/gtserror"
     26 )
     27 
     28 // EmojiGet handles the GET for a federated emoji originating from this instance.
     29 func (p *Processor) EmojiGet(ctx context.Context, requestedEmojiID string) (interface{}, gtserror.WithCode) {
     30 	if _, errWithCode := p.federator.AuthenticateFederatedRequest(ctx, ""); errWithCode != nil {
     31 		return nil, errWithCode
     32 	}
     33 
     34 	requestedEmoji, err := p.state.DB.GetEmojiByID(ctx, requestedEmojiID)
     35 	if err != nil {
     36 		return nil, gtserror.NewErrorNotFound(fmt.Errorf("database error getting emoji with id %s: %s", requestedEmojiID, err))
     37 	}
     38 
     39 	if requestedEmoji.Domain != "" {
     40 		return nil, gtserror.NewErrorNotFound(fmt.Errorf("emoji with id %s doesn't belong to this instance (domain %s)", requestedEmojiID, requestedEmoji.Domain))
     41 	}
     42 
     43 	if *requestedEmoji.Disabled {
     44 		return nil, gtserror.NewErrorNotFound(fmt.Errorf("emoji with id %s has been disabled", requestedEmojiID))
     45 	}
     46 
     47 	apEmoji, err := p.tc.EmojiToAS(ctx, requestedEmoji)
     48 	if err != nil {
     49 		return nil, gtserror.NewErrorInternalError(fmt.Errorf("error converting gtsmodel emoji with id %s to ap emoji: %s", requestedEmojiID, err))
     50 	}
     51 
     52 	data, err := ap.Serialize(apEmoji)
     53 	if err != nil {
     54 		return nil, gtserror.NewErrorInternalError(err)
     55 	}
     56 
     57 	return data, nil
     58 }