diff options
-rw-r--r-- | models/issue.go | 7 | ||||
-rw-r--r-- | models/issue_test.go | 9 | ||||
-rw-r--r-- | models/repo.go | 5 | ||||
-rw-r--r-- | models/repo_test.go | 7 |
4 files changed, 28 insertions, 0 deletions
diff --git a/models/issue.go b/models/issue.go index ca01ffe2fa..c740d8fec4 100644 --- a/models/issue.go +++ b/models/issue.go @@ -7,6 +7,7 @@ package models import ( "errors" "fmt" + "path" "sort" "strings" "time" @@ -200,6 +201,11 @@ func (issue *Issue) GetIsRead(userID int64) error { return nil } +// APIURL returns the absolute APIURL to this issue. +func (issue *Issue) APIURL() string { + return issue.Repo.APIURL() + "/" + path.Join("issues", fmt.Sprint(issue.ID)) +} + // HTMLURL returns the absolute URL to this issue. func (issue *Issue) HTMLURL() string { var path string @@ -246,6 +252,7 @@ func (issue *Issue) APIFormat() *api.Issue { apiIssue := &api.Issue{ ID: issue.ID, + URL: issue.APIURL(), Index: issue.Index, Poster: issue.Poster.APIFormat(), Title: issue.Title, diff --git a/models/issue_test.go b/models/issue_test.go index 646a1a5a9a..a6da80917e 100644 --- a/models/issue_test.go +++ b/models/issue_test.go @@ -33,3 +33,12 @@ func TestIssue_ReplaceLabels(t *testing.T) { testSuccess(1, []int64{1, 2}) testSuccess(1, []int64{}) } + +func TestIssueAPIURL(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + issue := AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue) + err := issue.LoadAttributes() + + assert.NoError(t, err) + assert.Equal(t, "https://try.gitea.io/api/v1/repos/user2/repo1/issues/1", issue.APIURL()) +} diff --git a/models/repo.go b/models/repo.go index d72d3d1da2..8361780bfd 100644 --- a/models/repo.go +++ b/models/repo.go @@ -264,6 +264,11 @@ func (repo *Repository) HTMLURL() string { return setting.AppURL + repo.FullName() } +// APIURL returns the repository API URL +func (repo *Repository) APIURL() string { + return setting.AppURL + path.Join("api/v1/repos", repo.FullName()) +} + // APIFormat converts a Repository to api.Repository func (repo *Repository) APIFormat(mode AccessMode) *api.Repository { cloneLink := repo.CloneLink() diff --git a/models/repo_test.go b/models/repo_test.go index 7c0e94a5ae..a538d44c0e 100644 --- a/models/repo_test.go +++ b/models/repo_test.go @@ -125,3 +125,10 @@ func TestForkRepository(t *testing.T) { assert.Error(t, err) assert.True(t, IsErrRepoAlreadyExist(err)) } + +func TestRepoAPIURL(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + repo := AssertExistsAndLoadBean(t, &Repository{ID: 10}).(*Repository) + + assert.Equal(t, "https://try.gitea.io/api/v1/repos/user12/repo10", repo.APIURL()) +} |