Commit a492ecef by Torkel Ödegaard

refactoring

parent be781bdb
...@@ -9,7 +9,6 @@ watch_dirs = [ ...@@ -9,7 +9,6 @@ watch_dirs = [
watch_exts = [".go", ".ini"] watch_exts = [".go", ".ini"]
build_delay = 1500 build_delay = 1500
cmds = [ cmds = [
["go", "install"], ["go", "build", "./pkg/cmd/grafana-pro"],
["go", "build"],
["./grafana-pro", "web"] ["./grafana-pro", "web"]
] ]
// Copyright 2014 Unknwon
// Copyright 2014 Torkel Ödegaard
package cmd
import (
"fmt"
"net/http"
"path"
"github.com/Unknwon/macaron"
"github.com/codegangsta/cli"
"github.com/macaron-contrib/session"
"github.com/torkelo/grafana-pro/pkg/log"
"github.com/torkelo/grafana-pro/pkg/middleware"
"github.com/torkelo/grafana-pro/pkg/routes"
"github.com/torkelo/grafana-pro/pkg/setting"
"github.com/torkelo/grafana-pro/pkg/social"
"github.com/torkelo/grafana-pro/pkg/stores/sqlstore"
)
var CmdWeb = cli.Command{
Name: "web",
Usage: "Start Grafana Pro web server",
Description: `Start Grafana Pro server`,
Action: runWeb,
Flags: []cli.Flag{},
}
func newMacaron() *macaron.Macaron {
m := macaron.New()
m.Use(middleware.Logger())
m.Use(macaron.Recovery())
mapStatic(m, "public", "public")
mapStatic(m, "public/app", "app")
mapStatic(m, "public/img", "img")
m.Use(session.Sessioner(session.Options{
Provider: setting.SessionProvider,
Config: *setting.SessionConfig,
}))
m.Use(macaron.Renderer(macaron.RenderOptions{
Directory: path.Join(setting.StaticRootPath, "views"),
IndentJSON: macaron.Env != macaron.PROD,
Delims: macaron.Delims{Left: "[[", Right: "]]"},
}))
m.Use(middleware.GetContextHandler())
return m
}
func mapStatic(m *macaron.Macaron, dir string, prefix string) {
m.Use(macaron.Static(
path.Join(setting.StaticRootPath, dir),
macaron.StaticOptions{
SkipLogging: true,
Prefix: prefix,
},
))
}
func runWeb(*cli.Context) {
setting.NewConfigContext()
setting.InitServices()
sqlstore.Init()
social.NewOAuthService()
// init database
sqlstore.LoadModelsConfig()
if err := sqlstore.NewEngine(); err != nil {
log.Fatal(4, "fail to initialize orm engine: %v", err)
}
log.Info("Starting Grafana-Pro v.1-alpha")
m := newMacaron()
routes.Register(m)
var err error
listenAddr := fmt.Sprintf("%s:%s", setting.HttpAddr, setting.HttpPort)
log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl)
switch setting.Protocol {
case setting.HTTP:
err = http.ListenAndServe(listenAddr, m)
case setting.HTTPS:
err = http.ListenAndServeTLS(listenAddr, setting.CertFile, setting.KeyFile, m)
default:
log.Fatal(4, "Invalid protocol: %s", setting.Protocol)
}
if err != nil {
log.Fatal(4, "Fail to start server: %v", err)
}
}
...@@ -34,7 +34,7 @@ func AddCollaborator(c *middleware.Context) { ...@@ -34,7 +34,7 @@ func AddCollaborator(c *middleware.Context) {
var model dtos.AddCollaboratorCommand var model dtos.AddCollaboratorCommand
if !c.JsonBody(&model) { if !c.JsonBody(&model) {
c.JSON(400, utils.DynMap{"message": "Invalid request"}) c.JsonApiErr(400, "Invalid request", nil)
return return
} }
......
package dtos
type AddCollaboratorCommand struct {
Email string `json:"email" binding:"required"`
}
type SaveDashboardCommand struct {
Id string `json:"id"`
Title string `json:"title"`
Dashboard map[string]interface{} `json:"dashboard"`
}
...@@ -38,10 +38,6 @@ type Collaborator struct { ...@@ -38,10 +38,6 @@ type Collaborator struct {
Role string `json:"role"` Role string `json:"role"`
} }
type AddCollaboratorCommand struct {
Email string `json:"email" binding:"required"`
}
func NewCurrentUser(account *models.Account) *CurrentUser { func NewCurrentUser(account *models.Account) *CurrentUser {
model := &CurrentUser{} model := &CurrentUser{}
if account != nil { if account != nil {
...@@ -57,9 +53,3 @@ func getGravatarUrl(text string) string { ...@@ -57,9 +53,3 @@ func getGravatarUrl(text string) string {
hasher.Write([]byte(strings.ToLower(text))) hasher.Write([]byte(strings.ToLower(text)))
return fmt.Sprintf("https://secure.gravatar.com/avatar/%x?s=90&default=mm", hasher.Sum(nil)) return fmt.Sprintf("https://secure.gravatar.com/avatar/%x?s=90&default=mm", hasher.Sum(nil))
} }
type SaveDashboardCommand struct {
Id string `json:"id"`
Title string `json:"title"`
Dashboard map[string]interface{} `json:"dashboard"`
}
package api
package api
type accountInfoDto struct {
Login string `json:"login"`
Email string `json:"email"`
AccountName string `json:"accountName"`
Collaborators []*collaboratorInfoDto `json:"collaborators"`
}
type collaboratorInfoDto struct {
AccountId int `json:"accountId"`
Email string `json:"email"`
Role string `json:"role"`
}
type addCollaboratorDto struct {
Email string `json:"email" binding:"required"`
}
type removeCollaboratorDto struct {
AccountId int `json:"accountId" binding:"required"`
}
type usingAccountDto struct {
AccountId int `json:"accountId"`
Email string `json:"email"`
Role string `json:"role"`
IsUsing bool
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment