feat: simplify endpoint API and enhance documentation
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/0x524A/onvif-go"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Demonstrates the three different endpoint formats supported by NewClient
|
||||
|
||||
examples := []struct {
|
||||
name string
|
||||
endpoint string
|
||||
desc string
|
||||
}{
|
||||
{
|
||||
name: "Simple IP",
|
||||
endpoint: "192.168.1.100",
|
||||
desc: "Just the IP address - automatically adds http:// and /onvif/device_service",
|
||||
},
|
||||
{
|
||||
name: "IP with Port",
|
||||
endpoint: "192.168.1.100:8080",
|
||||
desc: "IP and port - automatically adds http:// and /onvif/device_service",
|
||||
},
|
||||
{
|
||||
name: "Full URL",
|
||||
endpoint: "http://192.168.1.100/onvif/device_service",
|
||||
desc: "Complete URL - used as-is",
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Println("ONVIF Client - Simplified Endpoint Formats Demo")
|
||||
fmt.Println("================================================")
|
||||
fmt.Println()
|
||||
|
||||
for _, ex := range examples {
|
||||
fmt.Printf("%s:\n", ex.name)
|
||||
fmt.Printf(" Input: %s\n", ex.endpoint)
|
||||
fmt.Printf(" Description: %s\n", ex.desc)
|
||||
|
||||
// Create client with simplified endpoint
|
||||
client, err := onvif.NewClient(
|
||||
ex.endpoint,
|
||||
onvif.WithCredentials("admin", "password"),
|
||||
onvif.WithTimeout(5*time.Second),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
log.Printf(" Error: %v\n\n", err)
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Printf(" Client created successfully!\n")
|
||||
fmt.Printf(" Endpoint will be: %s\n\n", client.Endpoint())
|
||||
|
||||
// Try to get device information (will fail if camera doesn't exist)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
info, err := client.GetDeviceInformation(ctx)
|
||||
cancel()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf(" Note: Could not connect to camera (this is expected in demo)\n")
|
||||
fmt.Printf(" Error: %v\n\n", err)
|
||||
} else {
|
||||
fmt.Printf(" Connected to: %s %s\n", info.Manufacturer, info.Model)
|
||||
fmt.Printf(" Firmware: %s\n\n", info.FirmwareVersion)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Key Benefits:")
|
||||
fmt.Println("- Simpler API: Just provide '192.168.1.100' instead of full URL")
|
||||
fmt.Println("- Flexible: Works with IP, IP:port, or full URL")
|
||||
fmt.Println("- Backward Compatible: Existing code continues to work")
|
||||
}
|
||||
Reference in New Issue
Block a user