More Ticket IRI processing to iri.go
This commit is contained in:
parent
69c1bdddc7
commit
0cacdc37fb
|
@ -6,8 +6,6 @@ package activitypub
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/issues"
|
"code.gitea.io/gitea/models/issues"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
|
@ -22,15 +20,18 @@ func Comment(ctx context.Context, note *ap.Note) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Move IRI processing stuff to iri.go
|
username, reponame, idx, err := TicketIRIToName(note.Context.GetLink())
|
||||||
context := note.Context.GetLink()
|
if err != nil {
|
||||||
contextSplit := strings.Split(context.String(), "/")
|
return err
|
||||||
username := contextSplit[3]
|
}
|
||||||
reponame := contextSplit[4]
|
repo, err := repo_model.GetRepositoryByOwnerAndNameCtx(ctx, username, reponame)
|
||||||
repo, _ := repo_model.GetRepositoryByOwnerAndNameCtx(ctx, username, reponame)
|
if err != nil {
|
||||||
|
return err
|
||||||
idx, _ := strconv.ParseInt(contextSplit[len(contextSplit)-1], 10, 64)
|
}
|
||||||
issue, _ := issues.GetIssueByIndex(repo.ID, idx)
|
issue, err := issues.GetIssueByIndex(repo.ID, idx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
_, err = issues.CreateCommentCtx(ctx, &issues.CreateCommentOptions{
|
_, err = issues.CreateCommentCtx(ctx, &issues.CreateCommentOptions{
|
||||||
Doer: actorUser,
|
Doer: actorUser,
|
||||||
Repo: repo,
|
Repo: repo,
|
||||||
|
|
|
@ -7,6 +7,7 @@ package activitypub
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
|
@ -19,8 +20,8 @@ import (
|
||||||
// Returns the username corresponding to a Person actor IRI
|
// Returns the username corresponding to a Person actor IRI
|
||||||
func PersonIRIToName(personIRI ap.IRI) (string, error) {
|
func PersonIRIToName(personIRI ap.IRI) (string, error) {
|
||||||
personIRISplit := strings.Split(personIRI.String(), "/")
|
personIRISplit := strings.Split(personIRI.String(), "/")
|
||||||
if len(personIRISplit) < 3 {
|
if len(personIRISplit) < 4 {
|
||||||
return "", errors.New("Not a Person actor IRI")
|
return "", errors.New("not a Person actor IRI")
|
||||||
}
|
}
|
||||||
|
|
||||||
instance := personIRISplit[2]
|
instance := personIRISplit[2]
|
||||||
|
@ -53,7 +54,7 @@ func PersonIRIToUser(ctx context.Context, personIRI ap.IRI) (*user_model.User, e
|
||||||
func RepositoryIRIToName(repoIRI ap.IRI) (string, string, error) {
|
func RepositoryIRIToName(repoIRI ap.IRI) (string, string, error) {
|
||||||
repoIRISplit := strings.Split(repoIRI.String(), "/")
|
repoIRISplit := strings.Split(repoIRI.String(), "/")
|
||||||
if len(repoIRISplit) < 5 {
|
if len(repoIRISplit) < 5 {
|
||||||
return "", "", errors.New("Not a Repository actor IRI")
|
return "", "", errors.New("not a Repository actor IRI")
|
||||||
}
|
}
|
||||||
|
|
||||||
instance := repoIRISplit[2]
|
instance := repoIRISplit[2]
|
||||||
|
@ -77,3 +78,25 @@ func RepositoryIRIToRepository(ctx context.Context, repoIRI ap.IRI) (*repo_model
|
||||||
// TODO: create remote repo if not exists
|
// TODO: create remote repo if not exists
|
||||||
return repo_model.GetRepositoryByOwnerAndName(username, reponame)
|
return repo_model.GetRepositoryByOwnerAndName(username, reponame)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the owner, repo name, and idx of a Ticket object IRI
|
||||||
|
func TicketIRIToName(ticketIRI ap.IRI) (string, string, int64, error) {
|
||||||
|
ticketIRISplit := strings.Split(ticketIRI.String(), "/")
|
||||||
|
if len(ticketIRISplit) < 5 {
|
||||||
|
return "", "", 0, errors.New("not a Ticket actor IRI")
|
||||||
|
}
|
||||||
|
|
||||||
|
instance := ticketIRISplit[2]
|
||||||
|
username := ticketIRISplit[len(ticketIRISplit)-3]
|
||||||
|
reponame := ticketIRISplit[len(ticketIRISplit)-2]
|
||||||
|
idx, err := strconv.ParseInt(ticketIRISplit[len(ticketIRISplit)-1], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return "", "", 0, err
|
||||||
|
}
|
||||||
|
if instance == setting.Domain {
|
||||||
|
// Local repo
|
||||||
|
return username, reponame, idx, nil
|
||||||
|
}
|
||||||
|
// Remote repo
|
||||||
|
return username + "@" + instance, reponame, idx, nil
|
||||||
|
}
|
||||||
|
|
Reference in New Issue