This commit is contained in:
erik 2023-12-22 15:00:42 +01:00 committed by Michael Jerger
parent 8585edc47a
commit 1e40b814a1
5 changed files with 25 additions and 26 deletions

View file

@ -18,7 +18,7 @@ type Validateables interface {
}
type ActorID struct {
ID string
Id string
Source string
Schema string
Path string
@ -46,7 +46,7 @@ func newActorID(validatedURI *url.URL, source string) (ActorID, error) {
id := pathWithActorID[length-1]
result := ActorID{}
result.ID = id
result.Id = id
result.Source = source
result.Schema = validatedURI.Scheme
result.Host = validatedURI.Hostname()
@ -85,7 +85,7 @@ func NewPersonID(uri string, source string) (PersonID, error) {
return personID, nil
}
func NewRepositoryId(uri string, source string) (RepositoryID, error) {
func NewRepositoryID(uri string, source string) (RepositoryID, error) {
if !validation.IsAPIURL(uri) {
return RepositoryID{}, fmt.Errorf("uri %s is not a valid repo url on this host %s", uri, setting.AppURL+"api")
@ -113,20 +113,20 @@ func NewRepositoryId(uri string, source string) (RepositoryID, error) {
func (id ActorID) AsURI() string {
var result string
if id.Port == "" {
result = fmt.Sprintf("%s://%s/%s/%s", id.Schema, id.Host, id.Path, id.ID)
result = fmt.Sprintf("%s://%s/%s/%s", id.Schema, id.Host, id.Path, id.Id)
} else {
result = fmt.Sprintf("%s://%s:%s/%s/%s", id.Schema, id.Host, id.Port, id.Path, id.ID)
result = fmt.Sprintf("%s://%s:%s/%s/%s", id.Schema, id.Host, id.Port, id.Path, id.Id)
}
return result
}
func (id PersonID) AsWebfinger() string {
result := fmt.Sprintf("@%s@%s", strings.ToLower(id.ID), strings.ToLower(id.Host))
result := fmt.Sprintf("@%s@%s", strings.ToLower(id.Id), strings.ToLower(id.Host))
return result
}
func (id PersonID) AsLoginName() string {
result := fmt.Sprintf("%s%s", strings.ToLower(id.ID), id.HostSuffix())
result := fmt.Sprintf("%s%s", strings.ToLower(id.Id), id.HostSuffix())
return result
}
@ -137,8 +137,8 @@ func (id PersonID) HostSuffix() string {
// Validate collects error strings in a slice and returns this
func (id ActorID) Validate() []string {
var result = []string{}
result = append(result, validation.ValidateNotEmpty(id.ID, "userId")...)
var result []string
result = append(result, validation.ValidateNotEmpty(id.Id, "userId")...)
result = append(result, validation.ValidateNotEmpty(id.Source, "source")...)
result = append(result, validation.ValidateNotEmpty(id.Schema, "schema")...)
result = append(result, validation.ValidateNotEmpty(id.Path, "path")...)
@ -154,7 +154,7 @@ func (id ActorID) Validate() []string {
}
func (id PersonID) Validate() []string {
var result = id.ActorID.Validate()
result := id.ActorID.Validate()
switch id.Source {
case "forgejo", "gitea":
if strings.ToLower(id.Path) != "api/v1/activitypub/user-id" && strings.ToLower(id.Path) != "api/activitypub/user-id" {
@ -165,7 +165,7 @@ func (id PersonID) Validate() []string {
}
func (id RepositoryID) Validate() []string {
var result = id.ActorID.Validate()
result := id.ActorID.Validate()
switch id.Source {
case "forgejo", "gitea":
if strings.ToLower(id.Path) != "api/v1/activitypub/repository-id" && strings.ToLower(id.Path) != "api/activitypub/repository-id" {

View file

@ -11,7 +11,7 @@ import (
func TestNewPersonId(t *testing.T) {
expected := PersonID{}
expected.ID = "1"
expected.Id = "1"
expected.Source = "forgejo"
expected.Schema = "https"
expected.Path = "api/v1/activitypub/user-id"
@ -24,7 +24,7 @@ func TestNewPersonId(t *testing.T) {
}
expected = PersonID{}
expected.ID = "1"
expected.Id = "1"
expected.Source = "forgejo"
expected.Schema = "https"
expected.Path = "api/v1/activitypub/user-id"
@ -40,14 +40,14 @@ func TestNewPersonId(t *testing.T) {
func TestNewRepositoryId(t *testing.T) {
setting.AppURL = "http://localhost:3000/"
expected := RepositoryID{}
expected.ID = "1"
expected.Id = "1"
expected.Source = "forgejo"
expected.Schema = "http"
expected.Path = "api/activitypub/repository-id"
expected.Host = "localhost"
expected.Port = "3000"
expected.UnvalidatedInput = "http://localhost:3000/api/activitypub/repository-id/1"
sut, _ := NewRepositoryId("http://localhost:3000/api/activitypub/repository-id/1", "forgejo")
sut, _ := NewRepositoryID("http://localhost:3000/api/activitypub/repository-id/1", "forgejo")
if sut != expected {
t.Errorf("expected: %v\n but was: %v\n", expected, sut)
}
@ -66,7 +66,7 @@ func TestActorIdValidation(t *testing.T) {
}
sut = ActorID{}
sut.ID = "1"
sut.Id = "1"
sut.Source = "forgejox"
sut.Schema = "https"
sut.Path = "api/v1/activitypub/user-id"
@ -78,7 +78,7 @@ func TestActorIdValidation(t *testing.T) {
}
sut = ActorID{}
sut.ID = "1"
sut.Id = "1"
sut.Source = "forgejo"
sut.Schema = "https"
sut.Path = "api/v1/activitypub/user-id"
@ -92,7 +92,7 @@ func TestActorIdValidation(t *testing.T) {
func TestPersonIdValidation(t *testing.T) {
sut := PersonID{}
sut.ID = "1"
sut.Id = "1"
sut.Source = "forgejo"
sut.Schema = "https"
sut.Path = "path"

View file

@ -36,7 +36,8 @@ type Star struct {
}
// StarNew initializes a Star type activity
func StarNew(id ap.ID, ob ap.ID) *Star { // ToDo: May be used later in creating signed activities
// ToDo: May be used later in creating signed activities
func StarNew(id ap.ID, ob ap.ID) *Star {
a := ap.ActivityNew(id, StarType, ob)
o := Star{Activity: *a, Source: ForgejoSourceType}
return &o

View file

@ -62,7 +62,6 @@ func TestNewClientReturnsClient(t *testing.T) {
log.Debug("Client: %v\nError: %v", c, err)
assert.NoError(t, err)
}
/* TODO: bring this test to work or delete

View file

@ -97,12 +97,12 @@ func RepositoryInbox(ctx *context.APIContext) {
}
log.Info("RepositoryInbox: actorId validated: %v", actorID)
// parse objectID (repository)
objectID, err := forgefed.NewRepositoryId(activity.Object.GetID().String(), string(activity.Source))
objectID, err := forgefed.NewRepositoryID(activity.Object.GetID().String(), string(activity.Source))
if err != nil {
ctx.ServerError("Validate objectId", err)
return
}
if objectID.ID != fmt.Sprint(repository.ID) {
if objectID.Id != fmt.Sprint(repository.ID) {
ctx.ServerError("Validate objectId", err)
return
}
@ -160,7 +160,7 @@ func RepositoryInbox(ctx *context.APIContext) {
// TODO: Move this to model.user.search ? or to model.user.externalLoginUser ?
func SearchUsersByLoginName(loginName string) ([]*user_model.User, error) {
var actionsUser = user_model.NewActionsUser()
actionsUser := user_model.NewActionsUser()
actionsUser.IsAdmin = true
options := &user_model.SearchUserOptions{
@ -178,13 +178,12 @@ func SearchUsersByLoginName(loginName string) ([]*user_model.User, error) {
}
return users, nil
}
// ToDo: Maybe use externalLoginUser
func createUserFromAP(ctx *context.APIContext, personID forgefed.PersonID) (*user_model.User, error) {
// ToDo: Do we get a publicKeyId from server, repo or owner or repo?
var actionsUser = user_model.NewActionsUser()
actionsUser := user_model.NewActionsUser()
client, err := api.NewClient(ctx, actionsUser, "no idea where to get key material.")
if err != nil {
return &user_model.User{}, err
@ -198,7 +197,7 @@ func createUserFromAP(ctx *context.APIContext, personID forgefed.PersonID) (*use
// validate response; ToDo: Should we widen the restrictions here?
if response.StatusCode != 200 {
err = fmt.Errorf("got non 200 status code for id: %v", personID.ID)
err = fmt.Errorf("got non 200 status code for id: %v", personID.Id)
return &user_model.User{}, err
}