mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-29 17:38:17 +00:00
feat: expose url field on issue api. (#982)
* Add api url func. Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com> * fix: Add unit testing. * fix: conflicts * fix: remove trim * fix: revert test function name.
This commit is contained in:
parent
0afab87631
commit
d76d67de23
4 changed files with 28 additions and 0 deletions
|
@ -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,
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue