Defined structures for /exec and /signal response.
[src/xds/xds-server.git] / lib / xdsserver / apiv1.go
1 package xdsserver
2
3 import (
4         "github.com/gin-gonic/gin"
5 )
6
7 // APIService .
8 type APIService struct {
9         *Context
10         apiRouter *gin.RouterGroup
11 }
12
13 // NewAPIV1 creates a new instance of API service
14 func NewAPIV1(ctx *Context) *APIService {
15         s := &APIService{
16                 Context:   ctx,
17                 apiRouter: ctx.WWWServer.router.Group("/api/v1"),
18         }
19
20         s.apiRouter.GET("/version", s.getVersion)
21
22         s.apiRouter.GET("/config", s.getConfig)
23         s.apiRouter.POST("/config", s.setConfig)
24
25         s.apiRouter.GET("/folders", s.getFolders)
26         s.apiRouter.GET("/folders/:id", s.getFolder)
27         s.apiRouter.PUT("/folders/:id", s.updateFolder)
28         s.apiRouter.POST("/folders", s.addFolder)
29         s.apiRouter.POST("/folders/sync/:id", s.syncFolder)
30         s.apiRouter.DELETE("/folders/:id", s.delFolder)
31
32         s.apiRouter.GET("/sdks", s.getSdks)
33         s.apiRouter.GET("/sdks/:id", s.getSdk)
34
35         s.apiRouter.POST("/make", s.buildMake)
36         s.apiRouter.POST("/make/:id", s.buildMake)
37
38         s.apiRouter.POST("/exec", s.execCmd)
39         s.apiRouter.POST("/exec/:id", s.execCmd)
40         s.apiRouter.POST("/signal", s.execSignalCmd)
41
42         s.apiRouter.GET("/events", s.eventsList)
43         s.apiRouter.POST("/events/register", s.eventsRegister)
44         s.apiRouter.POST("/events/unregister", s.eventsUnRegister)
45
46         return s
47 }