format api code file

This commit is contained in:
Eamon
2018-05-16 14:11:00 +08:00
parent 6d8f9c3a71
commit 7d22982453

View File

@@ -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 + " "