Start working on Ticket object endpoint implementation

This commit is contained in:
Anthony Wang 2022-08-15 11:15:21 -05:00
parent 0b97c6aa69
commit d945e6ac72
Signed by: a
GPG key ID: BC96B00AEC5F2D76
3 changed files with 91 additions and 0 deletions

View file

@ -0,0 +1,50 @@
// Copyright 2022 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package activitypub
import (
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/forgefed"
"code.gitea.io/gitea/modules/setting"
ap "github.com/go-ap/activitypub"
)
// Ticket function returns the Ticket object for an issue or PR
func Ticket(ctx *context.APIContext) {
// swagger:operation GET /activitypub/ticket/{username}/{reponame}/{id} activitypub forgefedTicket
// ---
// summary: Returns the Ticket object for an issue or PR
// produces:
// - 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: id
// in: path
// description: ID number of the issue or PR
// type: string
// required: true
// responses:
// "200":
// "$ref": "#/responses/ActivityPub"
link := setting.AppURL + "api/v1/activitypub/ticket/" + ctx.ContextUser.Name + "/" + ctx.Repo.Repository.Name + "/" + ctx.Params("id")
ticket := forgefed.TicketNew()
ticket.ID = ap.IRI(link)
// TODO: Add other ticket fields according to https://forgefed.org/modeling.html#ticket
response(ctx, ticket)
}

View file

@ -659,6 +659,7 @@ func Routes() *web.Route {
m.Get("/outbox", activitypub.RepoOutbox)
m.Get("/followers", activitypub.RepoFollowers)
}, repoAssignment())
m.Get("/ticket/{username}/{reponame}/{id}", repoAssignment(), activitypub.Ticket)
})
}
m.Get("/signing-key.gpg", misc.SigningKey)

View file

@ -155,6 +155,46 @@
}
}
},
"/activitypub/ticket/{username}/{reponame}/{id}": {
"get": {
"produces": [
"application/activity+json"
],
"tags": [
"activitypub"
],
"summary": "Returns the Ticket object for an issue or PR",
"operationId": "forgefedTicket",
"parameters": [
{
"type": "string",
"description": "username of the user",
"name": "username",
"in": "path",
"required": true
},
{
"type": "string",
"description": "name of the repo",
"name": "reponame",
"in": "path",
"required": true
},
{
"type": "string",
"description": "ID number of the issue or PR",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"$ref": "#/responses/ActivityPub"
}
}
}
},
"/activitypub/user/{username}": {
"get": {
"produces": [