Files
signal-cli-rest-api/src/main.go
2020-07-03 17:32:52 +02:00

93 lines
2.0 KiB
Go

package main
import (
"flag"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"github.com/bbernhard/signal-cli-rest-api/api"
_ "github.com/bbernhard/signal-cli-rest-api/docs"
)
// @title Signal Cli REST API
// @version 1.0
// @description This is the Signal Cli REST API documentation.
// @tag.name General
// @tag.description List general information.
// @tag.name Devices
// @tag.description Register and link Devices.
// @tag.name Groups
// @tag.description Create, List and Delete Signal Groups.
// @tag.name Messages
// @tag.description Send and Receive Signal Messages.
// @host 127.0.0.1:8080
// @BasePath /
func main() {
signalCliConfig := flag.String("signal-cli-config", "/home/.local/share/signal-cli/", "Config directory where signal-cli config is stored")
attachmentTmpDir := flag.String("attachment-tmp-dir", "/tmp/", "Attachment tmp directory")
flag.Parse()
router := gin.Default()
log.Info("Started Signal Messenger REST API")
api := api.NewApi(*signalCliConfig, *attachmentTmpDir)
v1 := router.Group("/v1")
{
about := v1.Group("/about")
{
about.GET("", api.About)
}
register := v1.Group("/register")
{
register.POST(":number", api.RegisterNumber)
register.POST(":number/verify/:token", api.VerifyRegisteredNumber)
}
sendV1 := v1.Group("/send")
{
sendV1.POST("", api.Send)
}
receive := v1.Group("/receive")
{
receive.GET(":number", api.Receive)
}
groups := v1.Group("/groups")
{
groups.POST(":number", api.CreateGroup)
groups.GET(":number", api.GetGroups)
groups.DELETE(":number/:groupid", api.DeleteGroup)
}
link := v1.Group("qrcodelink")
{
link.GET("", api.GetQrCodeLink)
}
}
v2 := router.Group("/v2")
{
sendV2 := v2.Group("/send")
{
sendV2.POST("", api.SendV2)
}
}
swaggerUrl := ginSwagger.URL("http://127.0.0.1:8080/swagger/doc.json")
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, swaggerUrl))
router.Run()
}