mirror of
https://github.com/versia-pub/versia-go.git
synced 2025-12-06 14:28:20 +01:00
40 lines
1 KiB
Go
40 lines
1 KiB
Go
package note_handler
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/google/uuid"
|
|
"github.com/versia-pub/versia-go/internal/api_schema"
|
|
)
|
|
|
|
func (i *Handler) GetNote(c *fiber.Ctx) error {
|
|
parsedRequestedNoteID, err := uuid.Parse(c.Params("id"))
|
|
if err != nil {
|
|
return api_schema.ErrBadRequest(map[string]any{
|
|
"reason": "Invalid note ID",
|
|
})
|
|
}
|
|
|
|
n, err := i.noteService.GetNote(c.UserContext(), parsedRequestedNoteID)
|
|
if err != nil {
|
|
i.log.Error(err, "Failed to query note", "id", parsedRequestedNoteID)
|
|
|
|
return api_schema.ErrInternalServerError(map[string]any{"reason": "Failed to query note"})
|
|
}
|
|
if n == nil {
|
|
return api_schema.ErrNotFound(nil)
|
|
}
|
|
|
|
if !n.Author.IsRemote {
|
|
// For local authors we can also sign the note
|
|
if err := i.requestSigner.SignAndSend(c, n.Author.Signer, n.ToVersia()); err != nil {
|
|
i.log.Error(err, "Failed to sign response body", "id", parsedRequestedNoteID)
|
|
|
|
return api_schema.ErrInternalServerError(map[string]any{
|
|
"reason": "failed to sign response body",
|
|
})
|
|
}
|
|
}
|
|
|
|
return c.JSON(n.ToVersia())
|
|
}
|