2 Star 1 Fork 0

蔡雨生 / go-onvif

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.go 1.74 KB
一键复制 编辑 原始数据 按行查看 历史
蔡雨生 提交于 2023-06-30 10:21 . init
// Copyright (c) 2022 Jean-Francois SMIGIELSKI
// Distributed under the MIT License
package main
import (
"flag"
"log"
"os"
"text/template"
)
var mainTemplate = `// Code generated : DO NOT EDIT.
// Copyright (c) 2022 Jean-Francois SMIGIELSKI
// Distributed under the MIT License
package {{.Package}}
import (
"context"
"github.com/juju/errors"
"gitee.com/cai-yusheng/go-onvif"
"gitee.com/cai-yusheng/go-onvif/sdk"
"gitee.com/cai-yusheng/go-onvif/{{.StructPackage}}"
)
// Call_{{.TypeRequest}} forwards the call to dev.CallMethod() then parses the payload of the reply as a {{.TypeReply}}.
func Call_{{.TypeRequest}}(ctx context.Context, dev *onvif.Device, request {{.StructPackage}}.{{.TypeRequest}}) ({{.StructPackage}}.{{.TypeReply}}, error) {
type Envelope struct {
Header struct{}
Body struct {
{{.TypeReply}} {{.StructPackage}}.{{.TypeReply}}
}
}
var reply Envelope
if httpReply, err := dev.CallMethod(request); err != nil {
return reply.Body.{{.TypeReply}}, errors.Annotate(err, "call")
} else {
err = sdk.ReadAndParse(ctx, httpReply, &reply, "{{.TypeRequest}}")
return reply.Body.{{.TypeReply}}, errors.Annotate(err, "reply")
}
}
`
type parserEnv struct {
Package string
StructPackage string
TypeReply string
TypeRequest string
}
func main() {
flag.Parse()
env := parserEnv{
Package: flag.Arg(0),
StructPackage: flag.Arg(1),
TypeRequest: flag.Arg(2),
TypeReply: flag.Arg(2) + "Response",
}
log.Println(env)
body, err := template.New("body").Parse(mainTemplate)
if err != nil {
log.Fatalln(err)
}
fout, err := os.Create(env.TypeRequest + "_auto.go")
if err != nil {
log.Fatalln(err)
}
defer fout.Close()
err = body.Execute(fout, &env)
if err != nil {
log.Fatalln(err)
}
}
Go
1
https://gitee.com/cai-yusheng/go-onvif.git
git@gitee.com:cai-yusheng/go-onvif.git
cai-yusheng
go-onvif
go-onvif
v0.0.4

搜索帮助