more APIs on #12
This commit is contained in:
parent
db0026c507
commit
37d8d3afe9
|
@ -1,6 +0,0 @@
|
||||||
image: go1.3
|
|
||||||
env:
|
|
||||||
- GOPATH=/var/cache/drone
|
|
||||||
script:
|
|
||||||
- go get -u -v
|
|
||||||
- go build -v
|
|
10
cmd/web.go
10
cmd/web.go
|
@ -172,6 +172,14 @@ func runWeb(*cli.Context) {
|
||||||
// Users.
|
// Users.
|
||||||
m.Group("/users", func() {
|
m.Group("/users", func() {
|
||||||
m.Get("/search", v1.SearchUsers)
|
m.Get("/search", v1.SearchUsers)
|
||||||
|
|
||||||
|
m.Group("/:username", func() {
|
||||||
|
m.Get("", v1.GetUserInfo)
|
||||||
|
|
||||||
|
m.Group("/tokens", func() {
|
||||||
|
m.Combo("").Get(v1.ListAccessTokens).Post(bind(v1.CreateAccessTokenForm{}), v1.CreateAccessToken)
|
||||||
|
}, middleware.ApiReqBasicAuth())
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// Repositories.
|
// Repositories.
|
||||||
|
@ -388,7 +396,7 @@ func runWeb(*cli.Context) {
|
||||||
m.Get("/archive/*", repo.Download)
|
m.Get("/archive/*", repo.Download)
|
||||||
m.Get("/issues2/", repo.Issues2)
|
m.Get("/issues2/", repo.Issues2)
|
||||||
m.Get("/pulls2/", repo.PullRequest2)
|
m.Get("/pulls2/", repo.PullRequest2)
|
||||||
m.Get("/labels2/",repo.Labels2)
|
m.Get("/labels2/", repo.Labels2)
|
||||||
|
|
||||||
m.Group("", func() {
|
m.Group("", func() {
|
||||||
m.Get("/src/*", repo.Home)
|
m.Get("/src/*", repo.Home)
|
||||||
|
|
2
gogs.go
2
gogs.go
|
@ -17,7 +17,7 @@ import (
|
||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
const APP_VER = "0.5.8.1117 Beta"
|
const APP_VER = "0.5.8.1118 Beta"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||||
|
|
|
@ -60,9 +60,9 @@ func SignedInId(req *http.Request, sess session.Store) int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SignedInUser returns the user object of signed user.
|
// SignedInUser returns the user object of signed user.
|
||||||
func SignedInUser(req *http.Request, sess session.Store) *models.User {
|
func SignedInUser(req *http.Request, sess session.Store) (*models.User, bool) {
|
||||||
if !models.HasEngine {
|
if !models.HasEngine {
|
||||||
return nil
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
uid := SignedInId(req, sess)
|
uid := SignedInId(req, sess)
|
||||||
|
@ -76,9 +76,9 @@ func SignedInUser(req *http.Request, sess session.Store) *models.User {
|
||||||
if err != models.ErrUserNotExist {
|
if err != models.ErrUserNotExist {
|
||||||
log.Error(4, "GetUserByName: %v", err)
|
log.Error(4, "GetUserByName: %v", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil, false
|
||||||
}
|
}
|
||||||
return u
|
return u, false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,23 +93,23 @@ func SignedInUser(req *http.Request, sess session.Store) *models.User {
|
||||||
if err != models.ErrUserNotExist {
|
if err != models.ErrUserNotExist {
|
||||||
log.Error(4, "GetUserByName: %v", err)
|
log.Error(4, "GetUserByName: %v", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
if u.ValidtePassword(passwd) {
|
if u.ValidtePassword(passwd) {
|
||||||
return u
|
return u, true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
u, err := models.GetUserById(uid)
|
u, err := models.GetUserById(uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(4, "GetUserById: %v", err)
|
log.Error(4, "GetUserById: %v", err)
|
||||||
return nil
|
return nil, false
|
||||||
}
|
}
|
||||||
return u
|
return u, false
|
||||||
}
|
}
|
||||||
|
|
||||||
type Form interface {
|
type Form interface {
|
||||||
|
|
|
@ -76,3 +76,12 @@ func ApiReqToken() macaron.Handler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ApiReqBasicAuth() macaron.Handler {
|
||||||
|
return func(ctx *Context) {
|
||||||
|
if !ctx.IsBasicAuth {
|
||||||
|
ctx.Error(403)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -34,8 +34,9 @@ type Context struct {
|
||||||
Flash *session.Flash
|
Flash *session.Flash
|
||||||
Session session.Store
|
Session session.Store
|
||||||
|
|
||||||
User *models.User
|
User *models.User
|
||||||
IsSigned bool
|
IsSigned bool
|
||||||
|
IsBasicAuth bool
|
||||||
|
|
||||||
Repo struct {
|
Repo struct {
|
||||||
IsOwner bool
|
IsOwner bool
|
||||||
|
@ -172,7 +173,7 @@ func Contexter() macaron.Handler {
|
||||||
ctx.Data["PageStartTime"] = time.Now()
|
ctx.Data["PageStartTime"] = time.Now()
|
||||||
|
|
||||||
// Get user from session if logined.
|
// Get user from session if logined.
|
||||||
ctx.User = auth.SignedInUser(ctx.Req.Request, ctx.Session)
|
ctx.User, ctx.IsBasicAuth = auth.SignedInUser(ctx.Req.Request, ctx.Session)
|
||||||
|
|
||||||
if ctx.User != nil {
|
if ctx.User != nil {
|
||||||
ctx.IsSigned = true
|
ctx.IsSigned = true
|
||||||
|
|
|
@ -107,9 +107,21 @@ func CreateRepoHook(ctx *middleware.Context, form CreateRepoHookForm) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.JSON(201, map[string]interface{}{
|
apiHook := &api.Hook{
|
||||||
"ok": true,
|
Id: w.Id,
|
||||||
})
|
Type: w.HookTaskType.Name(),
|
||||||
|
Events: []string{"push"},
|
||||||
|
Active: w.IsActive,
|
||||||
|
Config: map[string]string{
|
||||||
|
"url": w.Url,
|
||||||
|
"content_type": w.ContentType.Name(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if w.HookTaskType == models.SLACK {
|
||||||
|
s := w.GetSlackHook()
|
||||||
|
apiHook.Config["channel"] = s.Channel
|
||||||
|
}
|
||||||
|
ctx.JSON(201, apiHook)
|
||||||
}
|
}
|
||||||
|
|
||||||
type EditRepoHookForm struct {
|
type EditRepoHookForm struct {
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
api "github.com/gogits/go-gogs-client"
|
api "github.com/gogits/go-gogs-client"
|
||||||
|
|
||||||
"github.com/gogits/gogs/models"
|
"github.com/gogits/gogs/models"
|
||||||
|
"github.com/gogits/gogs/modules/base"
|
||||||
"github.com/gogits/gogs/modules/middleware"
|
"github.com/gogits/gogs/modules/middleware"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -44,3 +45,17 @@ func SearchUsers(ctx *middleware.Context) {
|
||||||
"data": results,
|
"data": results,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GET /users/:username
|
||||||
|
func GetUserInfo(ctx *middleware.Context) {
|
||||||
|
u, err := models.GetUserByName(ctx.Params(":username"))
|
||||||
|
if err != nil {
|
||||||
|
if err == models.ErrUserNotExist {
|
||||||
|
ctx.Error(404)
|
||||||
|
} else {
|
||||||
|
ctx.JSON(500, &base.ApiJsonErr{"GetUserByName: " + err.Error(), base.DOC_URL})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.JSON(200, &api.User{u.Id, u.Name, u.FullName, u.Email, u.AvatarLink()})
|
||||||
|
}
|
45
routers/api/v1/user_app.go
Normal file
45
routers/api/v1/user_app.go
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "github.com/gogits/go-gogs-client"
|
||||||
|
|
||||||
|
"github.com/gogits/gogs/models"
|
||||||
|
"github.com/gogits/gogs/modules/base"
|
||||||
|
"github.com/gogits/gogs/modules/middleware"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GET /users/:username/tokens
|
||||||
|
func ListAccessTokens(ctx *middleware.Context) {
|
||||||
|
tokens, err := models.ListAccessTokens(ctx.User.Id)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, &base.ApiJsonErr{"ListAccessTokens: " + err.Error(), base.DOC_URL})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiTokens := make([]*api.AccessToken, len(tokens))
|
||||||
|
for i := range tokens {
|
||||||
|
apiTokens[i] = &api.AccessToken{tokens[i].Name, tokens[i].Sha1}
|
||||||
|
}
|
||||||
|
ctx.JSON(200, &apiTokens)
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreateAccessTokenForm struct {
|
||||||
|
Name string `json:"name" binding:"Required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// POST /users/:username/tokens
|
||||||
|
func CreateAccessToken(ctx *middleware.Context, form CreateAccessTokenForm) {
|
||||||
|
t := &models.AccessToken{
|
||||||
|
Uid: ctx.User.Id,
|
||||||
|
Name: form.Name,
|
||||||
|
}
|
||||||
|
if err := models.NewAccessToken(t); err != nil {
|
||||||
|
ctx.JSON(500, &base.ApiJsonErr{"NewAccessToken: " + err.Error(), base.DOC_URL})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.JSON(201, &api.AccessToken{t.Name, t.Sha1})
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
0.5.8.1117 Beta
|
0.5.8.1118 Beta
|
Loading…
Reference in New Issue
Block a user