ripple-api/app/start.go

46 lines
1.3 KiB
Go
Raw Normal View History

2016-04-03 17:59:27 +00:00
package app
import (
"database/sql"
"github.com/gin-gonic/contrib/gzip"
"github.com/gin-gonic/gin"
"github.com/osuripple/api/app/v1"
"github.com/osuripple/api/common"
)
// Start begins taking HTTP connections.
func Start(conf common.Conf, db *sql.DB) {
r := gin.Default()
2016-04-07 09:38:57 +00:00
r.Use(gzip.Gzip(gzip.DefaultCompression), ErrorHandler())
2016-04-03 17:59:27 +00:00
api := r.Group("/api")
{
gv1 := api.Group("/v1")
{
2016-04-05 20:22:13 +00:00
gv1.POST("/token/new", Method(v1.TokenNewPOST, db))
2016-04-03 20:31:41 +00:00
// Auth-free API endpoints
gv1.GET("/ping", Method(v1.PingGET, db))
gv1.GET("/surprise_me", Method(v1.SurpriseMeGET, db))
2016-04-03 17:59:27 +00:00
gv1.GET("/privileges", Method(v1.PrivilegesGET, db))
2016-04-03 20:31:41 +00:00
// Read privilege required
2016-04-03 21:09:28 +00:00
gv1.GET("/users/id/:id", Method(v1.UserByIDGET, db, common.PrivilegeRead))
gv1.GET("/users/name/:name", Method(v1.UserByNameGET, db, common.PrivilegeRead))
2016-04-05 20:38:33 +00:00
gv1.GET("/users/self", Method(v1.UserSelfGET, db, common.PrivilegeRead))
2016-04-03 20:31:41 +00:00
gv1.GET("/badges", Method(v1.BadgesGET, db, common.PrivilegeRead))
gv1.GET("/badges/:id", Method(v1.BadgeByIDGET, db, common.PrivilegeRead))
2016-04-07 09:20:35 +00:00
// ReadConfidential privilege required
gv1.GET("/friends", Method(v1.FriendsGET, db, common.PrivilegeReadConfidential))
2016-04-03 17:59:27 +00:00
}
}
r.NoRoute(v1.Handle404)
if conf.Unix {
panic(r.RunUnix(conf.ListenTo))
}
panic(r.Run(conf.ListenTo))
}