This repository has been archived on 2024-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
forgejo/routers/api/v1/activitypub/note.go

74 lines
1.8 KiB
Go
Raw Normal View History

2023-01-12 21:48:05 +00:00
// Copyright 2023 The Forgejo Authors. All rights reserved.
2022-12-31 17:58:01 +00:00
// SPDX-License-Identifier: MIT
2022-11-27 19:29:03 +00:00
package activitypub
import (
"net/http"
2022-11-27 19:29:03 +00:00
issues_model "code.gitea.io/gitea/models/issues"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/services/activitypub"
)
// Note function returns the Note object for a comment to an issue or PR
func Note(ctx *context.APIContext) {
// swagger:operation GET /activitypub/note/{username}/{reponame}/{noteid} activitypub activitypubNote
2022-11-27 19:29:03 +00:00
// ---
// summary: Returns the Note object for a comment to an issue or PR
2023-01-01 18:44:44 +00:00
// produces:
2022-11-27 19:29:03 +00:00
// - application/activity+json
// parameters:
// - name: username
// in: path
// description: username of the user
// type: string
// required: true
// - name: reponame
// in: path
// description: name of the repo
// type: string
// required: true
// - name: noteid
// in: path
// description: ID number of the comment
// type: string
// required: true
// responses:
// "200":
// "$ref": "#/responses/ActivityPub"
// "204":
// "$ref": "#/responses/empty"
// "404":
// "$ref": "#/responses/notFound"
2022-11-27 19:29:03 +00:00
comment, err := issues_model.GetCommentByID(ctx, ctx.ParamsInt64("noteid"))
2022-11-27 19:29:03 +00:00
if err != nil {
if issues_model.IsErrCommentNotExist(err) {
ctx.NotFound(err)
} else {
ctx.Error(http.StatusInternalServerError, "GetCommentByID", err)
}
2022-11-27 19:29:03 +00:00
return
}
// Ensure the comment comes from the specified repository.
if comment.Issue.RepoID != ctx.Repo.Repository.ID {
ctx.Status(http.StatusNotFound)
2022-11-27 19:29:03 +00:00
return
}
// Only allow comments and not events.
if comment.Type != issues_model.CommentTypeComment {
ctx.Status(http.StatusNoContent)
return
}
note, err := activitypub.Note(ctx, comment)
2022-11-27 19:29:03 +00:00
if err != nil {
ctx.ServerError("Note", err)
return
}
response(ctx, note)
}