Browse Source

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.
tags/v1.2.0-rc1
Bo-Yi Wu Lunny Xiao 9 years ago
parent
commit
a6f4a8c2f0
4 changed files with 28 additions and 0 deletions
  1. +7
    -0
      models/issue.go
  2. +9
    -0
      models/issue_test.go
  3. +5
    -0
      models/repo.go
  4. +7
    -0
      models/repo_test.go

+ 7
- 0
models/issue.go View File

@@ -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,


+ 9
- 0
models/issue_test.go View File

@@ -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())
}

+ 5
- 0
models/repo.go View File

@@ -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()


+ 7
- 0
models/repo_test.go View File

@@ -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…
Cancel
Save