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.
 | 
			
		||||
			m.Group("/users", func() {
 | 
			
		||||
				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.
 | 
			
		||||
| 
						 | 
				
			
			@ -388,7 +396,7 @@ func runWeb(*cli.Context) {
 | 
			
		|||
		m.Get("/archive/*", repo.Download)
 | 
			
		||||
		m.Get("/issues2/", repo.Issues2)
 | 
			
		||||
		m.Get("/pulls2/", repo.PullRequest2)
 | 
			
		||||
		m.Get("/labels2/",repo.Labels2)
 | 
			
		||||
		m.Get("/labels2/", repo.Labels2)
 | 
			
		||||
 | 
			
		||||
		m.Group("", func() {
 | 
			
		||||
			m.Get("/src/*", repo.Home)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								gogs.go
								
								
								
								
							
							
						
						
									
										2
									
								
								gogs.go
								
								
								
								
							| 
						 | 
				
			
			@ -17,7 +17,7 @@ import (
 | 
			
		|||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const APP_VER = "0.5.8.1117 Beta"
 | 
			
		||||
const APP_VER = "0.5.8.1118 Beta"
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	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.
 | 
			
		||||
func SignedInUser(req *http.Request, sess session.Store) *models.User {
 | 
			
		||||
func SignedInUser(req *http.Request, sess session.Store) (*models.User, bool) {
 | 
			
		||||
	if !models.HasEngine {
 | 
			
		||||
		return nil
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	uid := SignedInId(req, sess)
 | 
			
		||||
| 
						 | 
				
			
			@ -76,9 +76,9 @@ func SignedInUser(req *http.Request, sess session.Store) *models.User {
 | 
			
		|||
					if err != models.ErrUserNotExist {
 | 
			
		||||
						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 {
 | 
			
		||||
						log.Error(4, "GetUserByName: %v", err)
 | 
			
		||||
					}
 | 
			
		||||
					return nil
 | 
			
		||||
					return nil, false
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if u.ValidtePassword(passwd) {
 | 
			
		||||
					return u
 | 
			
		||||
					return u, true
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	u, err := models.GetUserById(uid)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error(4, "GetUserById: %v", err)
 | 
			
		||||
		return nil
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
	return u
 | 
			
		||||
	return u, false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
	Session session.Store
 | 
			
		||||
 | 
			
		||||
	User     *models.User
 | 
			
		||||
	IsSigned bool
 | 
			
		||||
	User        *models.User
 | 
			
		||||
	IsSigned    bool
 | 
			
		||||
	IsBasicAuth bool
 | 
			
		||||
 | 
			
		||||
	Repo struct {
 | 
			
		||||
		IsOwner     bool
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +173,7 @@ func Contexter() macaron.Handler {
 | 
			
		|||
		ctx.Data["PageStartTime"] = time.Now()
 | 
			
		||||
 | 
			
		||||
		// 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 {
 | 
			
		||||
			ctx.IsSigned = true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,9 +107,21 @@ func CreateRepoHook(ctx *middleware.Context, form CreateRepoHookForm) {
 | 
			
		|||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx.JSON(201, map[string]interface{}{
 | 
			
		||||
		"ok": true,
 | 
			
		||||
	})
 | 
			
		||||
	apiHook := &api.Hook{
 | 
			
		||||
		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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ 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"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,3 +45,17 @@ func SearchUsers(ctx *middleware.Context) {
 | 
			
		|||
		"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()})
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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