mirror of
https://github.com/kerberos-io/onvif.git
synced 2025-10-14 20:05:42 +08:00
format api code file
This commit is contained in:
55
api/api.go
55
api/api.go
@@ -1,23 +1,24 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"path"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"errors"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/beevik/etree"
|
"github.com/beevik/etree"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/yakovlevdmv/gosoap"
|
"github.com/yakovlevdmv/WS-Discovery"
|
||||||
"github.com/yakovlevdmv/goonvif"
|
"github.com/yakovlevdmv/goonvif"
|
||||||
"github.com/yakovlevdmv/goonvif/networking"
|
"github.com/yakovlevdmv/goonvif/networking"
|
||||||
"net/http"
|
"github.com/yakovlevdmv/gosoap"
|
||||||
"io/ioutil"
|
|
||||||
"github.com/yakovlevdmv/WS-Discovery"
|
|
||||||
"path"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func RunApi () {
|
func RunApi() {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
|
||||||
router.POST("/:service/:method", func(c *gin.Context) {
|
router.POST("/:service/:method", func(c *gin.Context) {
|
||||||
@@ -49,7 +50,7 @@ func RunApi () {
|
|||||||
interfaceName := context.GetHeader("interface")
|
interfaceName := context.GetHeader("interface")
|
||||||
|
|
||||||
var response = "["
|
var response = "["
|
||||||
devices := WS_Discovery.SendProbe(interfaceName, nil, []string{"dn:NetworkVideoTransmitter"}, map[string]string{"dn":"http://www.onvif.org/ver10/network/wsdl"})
|
devices := WS_Discovery.SendProbe(interfaceName, nil, []string{"dn:NetworkVideoTransmitter"}, map[string]string{"dn": "http://www.onvif.org/ver10/network/wsdl"})
|
||||||
for _, j := range devices {
|
for _, j := range devices {
|
||||||
doc := etree.NewDocument()
|
doc := etree.NewDocument()
|
||||||
if err := doc.ReadFromString(j); err != nil {
|
if err := doc.ReadFromString(j); err != nil {
|
||||||
@@ -93,7 +94,6 @@ func RunApi () {
|
|||||||
router.Run()
|
router.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//func soapHandling(tp interface{}, tags* map[string]string) {
|
//func soapHandling(tp interface{}, tags* map[string]string) {
|
||||||
// ifaceValue := reflect.ValueOf(tp).Elem()
|
// ifaceValue := reflect.ValueOf(tp).Elem()
|
||||||
// typeOfStruct := ifaceValue.Type()
|
// typeOfStruct := ifaceValue.Type()
|
||||||
@@ -113,7 +113,6 @@ func RunApi () {
|
|||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
func callNecessaryMethod(serviceName, methodName, acceptedData, username, password, xaddr string) (string, error) {
|
func callNecessaryMethod(serviceName, methodName, acceptedData, username, password, xaddr string) (string, error) {
|
||||||
var methodStruct interface{}
|
var methodStruct interface{}
|
||||||
var err error
|
var err error
|
||||||
@@ -169,16 +168,21 @@ func getEndpoint(service, xaddr string) (string, error) {
|
|||||||
|
|
||||||
var endpoint string
|
var endpoint string
|
||||||
switch pkg {
|
switch pkg {
|
||||||
case "device": endpoint = dev.GetEndpoint("Device")
|
case "device":
|
||||||
case "event": endpoint = dev.GetEndpoint("Event")
|
endpoint = dev.GetEndpoint("Device")
|
||||||
case "imaging": endpoint = dev.GetEndpoint("Imaging")
|
case "event":
|
||||||
case "media": endpoint = dev.GetEndpoint("Media")
|
endpoint = dev.GetEndpoint("Event")
|
||||||
case "ptz": endpoint = dev.GetEndpoint("PTZ")
|
case "imaging":
|
||||||
|
endpoint = dev.GetEndpoint("Imaging")
|
||||||
|
case "media":
|
||||||
|
endpoint = dev.GetEndpoint("Media")
|
||||||
|
case "ptz":
|
||||||
|
endpoint = dev.GetEndpoint("PTZ")
|
||||||
}
|
}
|
||||||
return endpoint, nil
|
return endpoint, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func xmlAnalize(methodStruct interface{}, acceptedData* string) (*string, error) {
|
func xmlAnalize(methodStruct interface{}, acceptedData *string) (*string, error) {
|
||||||
test := make([]map[string]string, 0) //tags
|
test := make([]map[string]string, 0) //tags
|
||||||
testunMarshal := make([][]interface{}, 0) //data
|
testunMarshal := make([][]interface{}, 0) //data
|
||||||
var mas []string //idnt
|
var mas []string //idnt
|
||||||
@@ -194,7 +198,7 @@ func xmlAnalize(methodStruct interface{}, acceptedData* string) (*string, error)
|
|||||||
xmlUnmarshal(etr, &testunMarshal, &mas)
|
xmlUnmarshal(etr, &testunMarshal, &mas)
|
||||||
ident(&mas)
|
ident(&mas)
|
||||||
|
|
||||||
document:= etree.NewDocument()
|
document := etree.NewDocument()
|
||||||
var el *etree.Element
|
var el *etree.Element
|
||||||
var idntIndex = 0
|
var idntIndex = 0
|
||||||
|
|
||||||
@@ -252,7 +256,7 @@ func xmlAnalize(methodStruct interface{}, acceptedData* string) (*string, error)
|
|||||||
return &resp, err
|
return &resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func xmlMaker(lst* []interface{}, tags* []map[string]string, lstIndex int) (string, map[string]string, string, error) {
|
func xmlMaker(lst *[]interface{}, tags *[]map[string]string, lstIndex int) (string, map[string]string, string, error) {
|
||||||
var elemName, value string
|
var elemName, value string
|
||||||
attr := make(map[string]string)
|
attr := make(map[string]string)
|
||||||
for tgIndx, tg := range *tags {
|
for tgIndx, tg := range *tags {
|
||||||
@@ -287,7 +291,7 @@ func xmlMaker(lst* []interface{}, tags* []map[string]string, lstIndex int) (stri
|
|||||||
return elemName, attr, value, nil
|
return elemName, attr, value, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func xmlProcessing (tg string) (string, error) {
|
func xmlProcessing(tg string) (string, error) {
|
||||||
r, _ := regexp.Compile(`"(.*?)"`)
|
r, _ := regexp.Compile(`"(.*?)"`)
|
||||||
str := r.FindStringSubmatch(tg)
|
str := r.FindStringSubmatch(tg)
|
||||||
if len(str) == 0 {
|
if len(str) == 0 {
|
||||||
@@ -330,7 +334,7 @@ func mapProcessing(mapVar []map[string]string) []map[string]string {
|
|||||||
return mapVar
|
return mapVar
|
||||||
}
|
}
|
||||||
|
|
||||||
func soapHandling(tp interface{}, tags* []map[string]string) {
|
func soapHandling(tp interface{}, tags *[]map[string]string) {
|
||||||
s := reflect.ValueOf(tp).Elem()
|
s := reflect.ValueOf(tp).Elem()
|
||||||
typeOfT := s.Type()
|
typeOfT := s.Type()
|
||||||
if s.Kind() != reflect.Struct {
|
if s.Kind() != reflect.Struct {
|
||||||
@@ -342,23 +346,22 @@ func soapHandling(tp interface{}, tags* []map[string]string) {
|
|||||||
if err == false {
|
if err == false {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
*tags = append(*tags, map[string]string{typeOfT.Field(i).Name : string(tmp.Tag)})
|
*tags = append(*tags, map[string]string{typeOfT.Field(i).Name: string(tmp.Tag)})
|
||||||
subStruct := reflect.New(reflect.TypeOf( f.Interface() ))
|
subStruct := reflect.New(reflect.TypeOf(f.Interface()))
|
||||||
soapHandling(subStruct.Interface(), tags)
|
soapHandling(subStruct.Interface(), tags)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func xmlUnmarshal(elems []*etree.Element, data *[][]interface{}, mas *[]string) {
|
||||||
func xmlUnmarshal(elems []*etree.Element, data* [][]interface{}, mas* []string) {
|
|
||||||
for _, elem := range elems {
|
for _, elem := range elems {
|
||||||
*data = append(*data, []interface{}{elem.Tag,elem.Attr,elem.Text()})
|
*data = append(*data, []interface{}{elem.Tag, elem.Attr, elem.Text()})
|
||||||
*mas = append(*mas, "Push")
|
*mas = append(*mas, "Push")
|
||||||
xmlUnmarshal(elem.FindElements("./*"), data, mas)
|
xmlUnmarshal(elem.FindElements("./*"), data, mas)
|
||||||
*mas = append(*mas, "Pop")
|
*mas = append(*mas, "Pop")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ident(mas* []string) {
|
func ident(mas *[]string) {
|
||||||
var buffer string
|
var buffer string
|
||||||
for _, j := range *mas {
|
for _, j := range *mas {
|
||||||
buffer += j + " "
|
buffer += j + " "
|
||||||
|
Reference in New Issue
Block a user