Browse Source

Updated.

develop
Mingcai SHEN 3 years ago
parent
commit
1f610865ae
5 changed files with 125 additions and 15 deletions
  1. +1
    -0
      .gitignore
  2. +40
    -0
      helper.go
  3. +1
    -9
      main.go
  4. +23
    -2
      recog.go
  5. +60
    -4
      scene.go

+ 1
- 0
.gitignore View File

@ -1 +1,2 @@
.idea/
*.exe

+ 40
- 0
helper.go View File

@ -0,0 +1,40 @@
package main
import (
"github.com/gofiber/fiber/v2"
"time"
)
type StatusResult struct {
Code string `json:"code"`
Message string `json:"msg"`
Scene string `json:"scene,omitempty"`
SequenceId int `json:"sequenceId,omitempty"`
Timestamp int64 `json:"timestamp"`
}
func failureResponse(ctx *fiber.Ctx, code string, msg string, stat int) error {
ctx.Response().SetStatusCode(stat)
var ret = make(map[string]interface{})
ret["status"] = StatusResult{Code: code, Message: msg, Timestamp: time.Now().Unix()}
return ctx.JSON(ret)
}
func successResponse(ctx *fiber.Ctx, msg string) error {
var ret = make(map[string]interface{})
ret["status"] = StatusResult{Code: "0", Message: msg, Timestamp: time.Now().Unix()}
return ctx.JSON(ret)
}
func successResponseEx(ctx *fiber.Ctx, msg string, scene string, seq int) error {
var ret = make(map[string]interface{})
ret["status"] = StatusResult{
Code: "0",
Message: msg,
Timestamp: time.Now().Unix(),
SequenceId: seq,
Scene: scene,
}
return ctx.JSON(ret)
}

+ 1
- 9
main.go View File

@ -19,7 +19,7 @@ var rootCmd = &cobra.Command{
func init() {
cobra.OnInitialize(initConfig)
rootCmd.PersistentFlags().StringVarP(&listenAddr, "listen", "L", ":3000", "Service listen address")
rootCmd.AddCommand(serveCmd, helpCmd)
rootCmd.AddCommand(serveCmd)
}
func initConfig() {
@ -46,14 +46,6 @@ var serveCmd = &cobra.Command{
},
}
var helpCmd = &cobra.Command{
Use: "help",
Short: "Show help message",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("==================== HELP =========================")
},
}
func main() {
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)

+ 23
- 2
recog.go View File

@ -1,7 +1,28 @@
package main
import "github.com/gofiber/fiber/v2"
import (
"github.com/gofiber/fiber/v2"
)
type TestCommand struct {
Command string `json:"cmd"`
SequenceId int `json:"sequenceId"`
}
var currentTest *TestCommand
func setTestCmd(c *fiber.Ctx) error {
return c.SendString("OK")
var testCmd TestCommand
if err := c.BodyParser(&testCmd); nil != err {
return failureResponse(c, "-1", err.Error(), 400)
} else if nil == currentScene {
return failureResponse(c, "1", "not in a working scene", 400)
} else {
currentTest = &testCmd
return successResponse(c, "Updated successfully.")
}
}
func init() {
currentTest = nil
}

+ 60
- 4
scene.go View File

@ -1,15 +1,71 @@
package main
import "github.com/gofiber/fiber/v2"
import (
"errors"
"github.com/gofiber/fiber/v2"
"net/url"
)
var currentScene *SceneCommand
type SceneCommand struct {
Scene string `json:"scene"`
PushUrl string `json:"pushUrl"`
CameraUrls []string `json:"cameraURls"`
}
func validateSceneCmd(cmd SceneCommand) error {
switch cmd.Scene {
case "pullUp", "standJump", "sitUps":
if len(cmd.CameraUrls) < 1 {
return errors.New("cameraUrls can not less than 1")
}
case "race":
if len(cmd.CameraUrls) < 2 {
return errors.New("cameraUrls can not less than 2")
}
default:
return errors.New("unknown scene type:" + cmd.Scene)
}
if u, e := url.Parse(cmd.PushUrl); nil != e {
return errors.New("invalid pushUrl:" + e.Error())
} else if u.Scheme != "http" && u.Scheme != "https" {
return errors.New("can not support pushUrl with " + u.Scheme)
}
return nil
}
func setScene(c *fiber.Ctx) error {
return c.SendString("OK")
var sceneCmd SceneCommand
if err := c.BodyParser(&sceneCmd); nil != err {
return failureResponse(c, "-1", err.Error(), 400)
} else if nil != currentScene {
return failureResponse(c, "1", "A working scene is started", 400)
} else if err = validateSceneCmd(sceneCmd); nil != err {
return failureResponse(c, "2", err.Error(), 400)
} else {
currentScene = &sceneCmd
return successResponse(c, "Updated successfully.")
}
}
func stopScene(c *fiber.Ctx) error {
return c.SendString("OK")
currentScene = nil
return successResponse(c, "Updated successfully.")
}
func getStatus(c *fiber.Ctx) error {
return c.SendString("OK")
var scene = ""
var seq = 0
if nil != currentScene {
scene = currentScene.Scene
}
if nil != currentTest {
seq = currentTest.SequenceId
}
return successResponseEx(c, "success", scene, seq)
}
func init() {
currentScene = nil
}

Loading…
Cancel
Save