package main

import (
	"fmt"
	"log"
	"time"

	"github.com/kr/pretty"

	"lc/common/onvif/discovery"
	"lc/common/onvif/profiles/devicemgmt"
	"lc/common/onvif/profiles/media"
	"lc/common/onvif/soap"
)

func main() {
	// discovery devices
	devices, err := discovery.StartDiscovery(5 * time.Second)
	if err != nil {
		return
	}
	if len(devices) == 0 {
		fmt.Printf("No devices descovered\n")
		return
	}

	// Create soap client
	client := soap.NewClient(
		soap.WithTimeout(time.Second * 5),
	)
	client.AddHeader(soap.NewWSSSecurityHeader("video", "123456qwe"))

	for _, d := range devices {
		dev := devicemgmt.NewDevice(client, d.XAddr)

		{
			dev.GetDeviceInformation(&devicemgmt.GetDeviceInformation{})
		}

		{
			dev.GetServices(&devicemgmt.GetServices{})
		}

		{
			dev.GetCapabilities(&devicemgmt.GetCapabilities{})
		}

		m := media.NewMedia(client, d.XAddr)
		{
			m.GetStreamUri(&media.GetStreamUri{})
		}
	}

}
