Initial commit: Gitea MCP Server
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
package issue
|
||||
|
||||
import (
|
||||
gitea_sdk "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
func userLogin(u *gitea_sdk.User) string {
|
||||
if u == nil {
|
||||
return ""
|
||||
}
|
||||
return u.UserName
|
||||
}
|
||||
|
||||
func userLogins(users []*gitea_sdk.User) []string {
|
||||
if len(users) == 0 {
|
||||
return nil
|
||||
}
|
||||
out := make([]string, 0, len(users))
|
||||
for _, u := range users {
|
||||
if u != nil {
|
||||
out = append(out, u.UserName)
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func labelNames(labels []*gitea_sdk.Label) []string {
|
||||
if len(labels) == 0 {
|
||||
return nil
|
||||
}
|
||||
out := make([]string, 0, len(labels))
|
||||
for _, l := range labels {
|
||||
if l != nil {
|
||||
out = append(out, l.Name)
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func slimIssue(i *gitea_sdk.Issue) map[string]any {
|
||||
if i == nil {
|
||||
return nil
|
||||
}
|
||||
m := map[string]any{
|
||||
"number": i.Index,
|
||||
"title": i.Title,
|
||||
"body": i.Body,
|
||||
"state": i.State,
|
||||
"html_url": i.HTMLURL,
|
||||
"user": userLogin(i.Poster),
|
||||
"labels": labelNames(i.Labels),
|
||||
"comments": i.Comments,
|
||||
"created_at": i.Created,
|
||||
"updated_at": i.Updated,
|
||||
"closed_at": i.Closed,
|
||||
}
|
||||
if len(i.Assignees) > 0 {
|
||||
m["assignees"] = userLogins(i.Assignees)
|
||||
}
|
||||
if i.Milestone != nil {
|
||||
m["milestone"] = map[string]any{
|
||||
"id": i.Milestone.ID,
|
||||
"title": i.Milestone.Title,
|
||||
}
|
||||
}
|
||||
if i.PullRequest != nil {
|
||||
m["is_pull"] = true
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
func slimIssues(issues []*gitea_sdk.Issue) []map[string]any {
|
||||
out := make([]map[string]any, 0, len(issues))
|
||||
for _, i := range issues {
|
||||
if i == nil {
|
||||
continue
|
||||
}
|
||||
m := map[string]any{
|
||||
"number": i.Index,
|
||||
"title": i.Title,
|
||||
"state": i.State,
|
||||
"html_url": i.HTMLURL,
|
||||
"user": userLogin(i.Poster),
|
||||
"comments": i.Comments,
|
||||
"created_at": i.Created,
|
||||
"updated_at": i.Updated,
|
||||
}
|
||||
if len(i.Labels) > 0 {
|
||||
m["labels"] = labelNames(i.Labels)
|
||||
}
|
||||
out = append(out, m)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func slimComment(c *gitea_sdk.Comment) map[string]any {
|
||||
if c == nil {
|
||||
return nil
|
||||
}
|
||||
return map[string]any{
|
||||
"id": c.ID,
|
||||
"body": c.Body,
|
||||
"user": userLogin(c.Poster),
|
||||
"html_url": c.HTMLURL,
|
||||
"created_at": c.Created,
|
||||
"updated_at": c.Updated,
|
||||
}
|
||||
}
|
||||
|
||||
func slimComments(comments []*gitea_sdk.Comment) []map[string]any {
|
||||
out := make([]map[string]any, 0, len(comments))
|
||||
for _, c := range comments {
|
||||
out = append(out, slimComment(c))
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func slimLabels(labels []*gitea_sdk.Label) []map[string]any {
|
||||
out := make([]map[string]any, 0, len(labels))
|
||||
for _, l := range labels {
|
||||
if l == nil {
|
||||
continue
|
||||
}
|
||||
out = append(out, map[string]any{
|
||||
"id": l.ID,
|
||||
"name": l.Name,
|
||||
"color": l.Color,
|
||||
"description": l.Description,
|
||||
"exclusive": l.Exclusive,
|
||||
})
|
||||
}
|
||||
return out
|
||||
}
|
||||
Reference in New Issue
Block a user