Initial main commit.
[src/xds/xds-server.git] / lib / apiv1 / apiv1.go
1 package apiv1
2
3 import (
4         "github.com/Sirupsen/logrus"
5         "github.com/gin-gonic/gin"
6
7         "github.com/iotbzh/xds-server/lib/session"
8         "github.com/iotbzh/xds-server/lib/xdsconfig"
9 )
10
11 // APIService .
12 type APIService struct {
13         router    *gin.Engine
14         apiRouter *gin.RouterGroup
15         sessions  *session.Sessions
16         cfg       xdsconfig.Config
17         log       *logrus.Logger
18 }
19
20 // New creates a new instance of API service
21 func New(sess *session.Sessions, cfg xdsconfig.Config, r *gin.Engine) *APIService {
22         s := &APIService{
23                 router:    r,
24                 sessions:  sess,
25                 apiRouter: r.Group("/api/v1"),
26                 cfg:       cfg,
27                 log:       cfg.Log,
28         }
29
30         s.apiRouter.GET("/version", s.getVersion)
31
32         s.apiRouter.GET("/config", s.getConfig)
33         s.apiRouter.POST("/config", s.setConfig)
34
35         s.apiRouter.GET("/folders", s.getFolders)
36         s.apiRouter.GET("/folder/:id", s.getFolder)
37         s.apiRouter.POST("/folder", s.addFolder)
38         s.apiRouter.DELETE("/folder/:id", s.delFolder)
39
40         s.apiRouter.POST("/make", s.buildMake)
41         s.apiRouter.POST("/make/:id", s.buildMake)
42
43         /* TODO: to be tested and then enabled
44         s.apiRouter.POST("/exec", s.execCmd)
45         s.apiRouter.POST("/exec/:id", s.execCmd)
46         */
47
48         return s
49 }