Skip to content

Commit cecae1c

Browse files
committed
Pass the Axis SubscriptionId into the PullMessages call.
1 parent d0524ec commit cecae1c

File tree

6 files changed

+308
-259
lines changed

6 files changed

+308
-259
lines changed

cmd/gonvif/completion/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var Command = &cobra.Command{
1313
Short: "Generate completion script.",
1414
DisableFlagsInUseLine: true,
1515
ValidArgs: []string{"bash", "zsh", "fish", "powershell"},
16-
Args: cobra.ExactValidArgs(1),
16+
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
1717
Run: func(cmd *cobra.Command, args []string) {
1818
var err error
1919
switch args[0] {

cmd/gonvif/events/stream-events.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import (
55

66
"github.com/eyetowers/gonvif/cmd/gonvif/root"
77
"github.com/eyetowers/gonvif/pkg/generated/onvif/www_onvif_org/ver10/events/wsdl"
8+
"github.com/eyetowers/gonvif/pkg/generated/onvif/www_w3_org/2005/08/addressing"
89
"github.com/eyetowers/gonvif/pkg/gonvif"
10+
"github.com/eyetowers/gonvif/pkg/gonvif/axis"
911
)
1012

1113
var streamEvents = &cobra.Command{
@@ -30,7 +32,8 @@ func runStreamEvents(client gonvif.Client) error {
3032
if err != nil {
3133
return err
3234
}
33-
subscription, err := client.Subscription(string(*resp.SubscriptionReference.Address))
35+
headers := extractHeaders(resp.SubscriptionReference)
36+
subscription, err := client.Subscription(string(*resp.SubscriptionReference.Address), headers...)
3437
if err != nil {
3538
return err
3639
}
@@ -39,7 +42,7 @@ func runStreamEvents(client gonvif.Client) error {
3942

4043
func processEvents(subscription wsdl.PullPointSubscription) error {
4144
for {
42-
resp, err := subscription.PullMessages(&wsdl.PullMessages{MessageLimit: 100})
45+
resp, err := subscription.PullMessages(&wsdl.PullMessages{MessageLimit: 100, Timeout: "PT60S"})
4346
if err != nil {
4447
return err
4548
}
@@ -49,3 +52,13 @@ func processEvents(subscription wsdl.PullPointSubscription) error {
4952
}
5053
}
5154
}
55+
56+
func extractHeaders(ref *addressing.EndpointReferenceType) []any {
57+
// NOTE: Axis returns a SubscriptionId that has to be passed into the PullMessages call as SOAP
58+
// header as-is. We try to mimic this behavior here.
59+
var headers []any
60+
if axisHeader, ok := axis.ToHeader(ref); ok {
61+
headers = append(headers, axisHeader)
62+
}
63+
return headers
64+
}

go.mod

Lines changed: 77 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -4,72 +4,74 @@ go 1.20
44

55
require (
66
github.com/eyetowers/gowsdl v0.0.0-20221014084026-eab9a0b8dfad
7-
github.com/golangci/golangci-lint v1.49.0
7+
github.com/golangci/golangci-lint v1.52.2
88
github.com/ivanpirog/coloredcobra v1.0.1
99
github.com/jellydator/ttlcache/v3 v3.0.0
1010
github.com/motemen/go-loghttp v0.0.0-20170804080138-974ac5ceac27
11-
github.com/spf13/cobra v1.5.0
11+
github.com/spf13/cobra v1.6.1
1212
golang.org/x/sync v0.1.0
1313
)
1414

1515
require (
16-
4d63.com/gochecknoglobals v0.1.0 // indirect
17-
github.com/Antonboom/errname v0.1.7 // indirect
18-
github.com/Antonboom/nilnil v0.1.1 // indirect
19-
github.com/BurntSushi/toml v1.2.0 // indirect
16+
4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
17+
4d63.com/gochecknoglobals v0.2.1 // indirect
18+
github.com/Abirdcfly/dupword v0.0.11 // indirect
19+
github.com/Antonboom/errname v0.1.9 // indirect
20+
github.com/Antonboom/nilnil v0.1.3 // indirect
21+
github.com/BurntSushi/toml v1.2.1 // indirect
2022
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
2123
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect
2224
github.com/Masterminds/semver v1.5.0 // indirect
23-
github.com/OpenPeeDeeP/depguard v1.1.0 // indirect
25+
github.com/OpenPeeDeeP/depguard v1.1.1 // indirect
2426
github.com/alexkohler/prealloc v1.0.0 // indirect
2527
github.com/alingse/asasalint v0.0.11 // indirect
26-
github.com/ashanbrown/forbidigo v1.3.0 // indirect
28+
github.com/ashanbrown/forbidigo v1.5.1 // indirect
2729
github.com/ashanbrown/makezero v1.1.1 // indirect
2830
github.com/beorn7/perks v1.0.1 // indirect
2931
github.com/bkielbasa/cyclop v1.2.0 // indirect
3032
github.com/blizzy78/varnamelen v0.8.0 // indirect
31-
github.com/bombsimon/wsl/v3 v3.3.0 // indirect
32-
github.com/breml/bidichk v0.2.3 // indirect
33-
github.com/breml/errchkjson v0.3.0 // indirect
33+
github.com/bombsimon/wsl/v3 v3.4.0 // indirect
34+
github.com/breml/bidichk v0.2.4 // indirect
35+
github.com/breml/errchkjson v0.3.1 // indirect
3436
github.com/butuzov/ireturn v0.1.1 // indirect
3537
github.com/cespare/xxhash/v2 v2.1.2 // indirect
36-
github.com/charithe/durationcheck v0.0.9 // indirect
37-
github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 // indirect
38-
github.com/curioswitch/go-reassign v0.1.2 // indirect
39-
github.com/daixiang0/gci v0.6.3 // indirect
38+
github.com/charithe/durationcheck v0.0.10 // indirect
39+
github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 // indirect
40+
github.com/curioswitch/go-reassign v0.2.0 // indirect
41+
github.com/daixiang0/gci v0.10.1 // indirect
4042
github.com/davecgh/go-spew v1.1.1 // indirect
4143
github.com/denis-tingaikin/go-header v0.4.3 // indirect
4244
github.com/elgs/gostrgen v0.0.0-20220325073726-0c3e00d082f6 // indirect
4345
github.com/esimonov/ifshort v1.0.4 // indirect
4446
github.com/ettle/strcase v0.1.1 // indirect
45-
github.com/fatih/color v1.13.0 // indirect
47+
github.com/fatih/color v1.15.0 // indirect
4648
github.com/fatih/structtag v1.2.0 // indirect
4749
github.com/firefart/nonamedreturns v1.0.4 // indirect
4850
github.com/fsnotify/fsnotify v1.5.4 // indirect
4951
github.com/fzipp/gocyclo v0.6.0 // indirect
50-
github.com/go-critic/go-critic v0.6.4 // indirect
51-
github.com/go-toolsmith/astcast v1.0.0 // indirect
52-
github.com/go-toolsmith/astcopy v1.0.1 // indirect
53-
github.com/go-toolsmith/astequal v1.0.2 // indirect
54-
github.com/go-toolsmith/astfmt v1.0.0 // indirect
55-
github.com/go-toolsmith/astp v1.0.0 // indirect
56-
github.com/go-toolsmith/strparse v1.0.0 // indirect
57-
github.com/go-toolsmith/typep v1.0.2 // indirect
58-
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect
52+
github.com/go-critic/go-critic v0.7.0 // indirect
53+
github.com/go-toolsmith/astcast v1.1.0 // indirect
54+
github.com/go-toolsmith/astcopy v1.1.0 // indirect
55+
github.com/go-toolsmith/astequal v1.1.0 // indirect
56+
github.com/go-toolsmith/astfmt v1.1.0 // indirect
57+
github.com/go-toolsmith/astp v1.1.0 // indirect
58+
github.com/go-toolsmith/strparse v1.1.0 // indirect
59+
github.com/go-toolsmith/typep v1.1.0 // indirect
60+
github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect
5961
github.com/gobwas/glob v0.2.3 // indirect
6062
github.com/gofrs/flock v0.8.1 // indirect
6163
github.com/golang/protobuf v1.5.2 // indirect
6264
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect
6365
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
6466
github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect
65-
github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a // indirect
67+
github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect
6668
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect
6769
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect
68-
github.com/golangci/misspell v0.3.5 // indirect
70+
github.com/golangci/misspell v0.4.0 // indirect
6971
github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect
7072
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect
71-
github.com/google/go-cmp v0.5.8 // indirect
72-
github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect
73+
github.com/google/go-cmp v0.5.9 // indirect
74+
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect
7375
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
7476
github.com/gostaticanalysis/comment v1.4.2 // indirect
7577
github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
@@ -79,82 +81,84 @@ require (
7981
github.com/hashicorp/go-version v1.6.0 // indirect
8082
github.com/hashicorp/hcl v1.0.0 // indirect
8183
github.com/hexops/gotextdiff v1.0.3 // indirect
82-
github.com/inconshreveable/mousetrap v1.0.0 // indirect
84+
github.com/inconshreveable/mousetrap v1.0.1 // indirect
8385
github.com/jgautheron/goconst v1.5.1 // indirect
8486
github.com/jingyugao/rowserrcheck v1.1.1 // indirect
8587
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect
8688
github.com/julz/importas v0.1.0 // indirect
87-
github.com/kisielk/errcheck v1.6.2 // indirect
89+
github.com/junk1tm/musttag v0.5.0 // indirect
90+
github.com/kisielk/errcheck v1.6.3 // indirect
8891
github.com/kisielk/gotool v1.0.0 // indirect
92+
github.com/kkHAIKE/contextcheck v1.1.4 // indirect
8993
github.com/kulti/thelper v0.6.3 // indirect
9094
github.com/kunwardeep/paralleltest v1.0.6 // indirect
91-
github.com/kyoh86/exportloopref v0.1.8 // indirect
95+
github.com/kyoh86/exportloopref v0.1.11 // indirect
9296
github.com/ldez/gomoddirectives v0.2.3 // indirect
93-
github.com/ldez/tagliatelle v0.3.1 // indirect
94-
github.com/leonklingele/grouper v1.1.0 // indirect
97+
github.com/ldez/tagliatelle v0.4.0 // indirect
98+
github.com/leonklingele/grouper v1.1.1 // indirect
9599
github.com/lufeee/execinquery v1.2.1 // indirect
96100
github.com/magiconair/properties v1.8.6 // indirect
97-
github.com/maratori/testpackage v1.1.0 // indirect
98-
github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect
101+
github.com/maratori/testableexamples v1.0.0 // indirect
102+
github.com/maratori/testpackage v1.1.1 // indirect
103+
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect
99104
github.com/mattn/go-colorable v0.1.13 // indirect
100-
github.com/mattn/go-isatty v0.0.16 // indirect
105+
github.com/mattn/go-isatty v0.0.17 // indirect
101106
github.com/mattn/go-runewidth v0.0.9 // indirect
102107
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
103108
github.com/mbilski/exhaustivestruct v1.2.0 // indirect
104-
github.com/mgechev/revive v1.2.3 // indirect
109+
github.com/mgechev/revive v1.3.1 // indirect
105110
github.com/mitchellh/go-homedir v1.1.0 // indirect
106111
github.com/mitchellh/mapstructure v1.5.0 // indirect
107-
github.com/moricho/tparallel v0.2.1 // indirect
112+
github.com/moricho/tparallel v0.3.1 // indirect
108113
github.com/motemen/go-nuts v0.0.0-20220604134737-2658d0104f31 // indirect
109114
github.com/nakabonne/nestif v0.3.1 // indirect
110115
github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect
111-
github.com/nishanths/exhaustive v0.8.1 // indirect
116+
github.com/nishanths/exhaustive v0.9.5 // indirect
112117
github.com/nishanths/predeclared v0.2.2 // indirect
118+
github.com/nunnatsa/ginkgolinter v0.9.0 // indirect
113119
github.com/olekukonko/tablewriter v0.0.5 // indirect
114120
github.com/pelletier/go-toml v1.9.5 // indirect
115-
github.com/pelletier/go-toml/v2 v2.0.2 // indirect
116-
github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect
117-
github.com/pkg/errors v0.9.1 // indirect
121+
github.com/pelletier/go-toml/v2 v2.0.5 // indirect
118122
github.com/pmezard/go-difflib v1.0.0 // indirect
119-
github.com/polyfloyd/go-errorlint v1.0.2 // indirect
123+
github.com/polyfloyd/go-errorlint v1.4.0 // indirect
120124
github.com/prometheus/client_golang v1.12.1 // indirect
121125
github.com/prometheus/client_model v0.2.0 // indirect
122126
github.com/prometheus/common v0.32.1 // indirect
123127
github.com/prometheus/procfs v0.7.3 // indirect
124-
github.com/quasilyte/go-ruleguard v0.3.17 // indirect
125-
github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 // indirect
126-
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect
128+
github.com/quasilyte/go-ruleguard v0.3.19 // indirect
129+
github.com/quasilyte/gogrep v0.5.0 // indirect
130+
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
127131
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
128-
github.com/ryancurrah/gomodguard v1.2.4 // indirect
129-
github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect
130-
github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect
132+
github.com/ryancurrah/gomodguard v1.3.0 // indirect
133+
github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect
134+
github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect
131135
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
132-
github.com/sashamelentyev/usestdlibvars v1.13.0 // indirect
133-
github.com/securego/gosec/v2 v2.13.1 // indirect
136+
github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect
137+
github.com/securego/gosec/v2 v2.15.0 // indirect
134138
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
135139
github.com/sirupsen/logrus v1.9.0 // indirect
136140
github.com/sivchari/containedctx v1.0.2 // indirect
137141
github.com/sivchari/nosnakecase v1.7.0 // indirect
138-
github.com/sivchari/tenv v1.7.0 // indirect
139-
github.com/sonatard/noctx v0.0.1 // indirect
140-
github.com/sourcegraph/go-diff v0.6.1 // indirect
142+
github.com/sivchari/tenv v1.7.1 // indirect
143+
github.com/sonatard/noctx v0.0.2 // indirect
144+
github.com/sourcegraph/go-diff v0.7.0 // indirect
141145
github.com/spf13/afero v1.8.2 // indirect
142146
github.com/spf13/cast v1.5.0 // indirect
143147
github.com/spf13/jwalterweatherman v1.1.0 // indirect
144148
github.com/spf13/pflag v1.0.5 // indirect
145149
github.com/spf13/viper v1.12.0 // indirect
146150
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
147151
github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
148-
github.com/stretchr/objx v0.4.0 // indirect
149-
github.com/stretchr/testify v1.8.0 // indirect
150-
github.com/subosito/gotenv v1.4.0 // indirect
151-
github.com/sylvia7788/contextcheck v1.0.6 // indirect
152-
github.com/tdakkota/asciicheck v0.1.1 // indirect
152+
github.com/stretchr/objx v0.5.0 // indirect
153+
github.com/stretchr/testify v1.8.2 // indirect
154+
github.com/subosito/gotenv v1.4.1 // indirect
155+
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect
156+
github.com/tdakkota/asciicheck v0.2.0 // indirect
153157
github.com/tetafro/godot v1.4.11 // indirect
154-
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect
155-
github.com/timonwong/logrlint v0.1.0 // indirect
156-
github.com/tomarrell/wrapcheck/v2 v2.6.2 // indirect
157-
github.com/tommy-muehle/go-mnd/v2 v2.5.0 // indirect
158+
github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect
159+
github.com/timonwong/loggercheck v0.9.4 // indirect
160+
github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect
161+
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
158162
github.com/ultraware/funlen v0.0.3 // indirect
159163
github.com/ultraware/whitespace v0.0.5 // indirect
160164
github.com/uudashr/gocognit v1.0.6 // indirect
@@ -163,20 +167,20 @@ require (
163167
gitlab.com/bosi/decorder v0.2.3 // indirect
164168
go.uber.org/atomic v1.7.0 // indirect
165169
go.uber.org/multierr v1.6.0 // indirect
166-
go.uber.org/zap v1.17.0 // indirect
170+
go.uber.org/zap v1.24.0 // indirect
167171
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
168-
golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d // indirect
169-
golang.org/x/mod v0.8.0 // indirect
170-
golang.org/x/sys v0.5.0 // indirect
172+
golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 // indirect
173+
golang.org/x/mod v0.9.0 // indirect
174+
golang.org/x/sys v0.6.0 // indirect
171175
golang.org/x/text v0.9.0 // indirect
172-
golang.org/x/tools v0.6.0 // indirect
176+
golang.org/x/tools v0.7.0 // indirect
173177
google.golang.org/protobuf v1.28.0 // indirect
174-
gopkg.in/ini.v1 v1.66.6 // indirect
178+
gopkg.in/ini.v1 v1.67.0 // indirect
175179
gopkg.in/yaml.v2 v2.4.0 // indirect
176180
gopkg.in/yaml.v3 v3.0.1 // indirect
177-
honnef.co/go/tools v0.3.3 // indirect
178-
mvdan.cc/gofumpt v0.3.1 // indirect
181+
honnef.co/go/tools v0.4.3 // indirect
182+
mvdan.cc/gofumpt v0.4.0 // indirect
179183
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect
180184
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect
181-
mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect
185+
mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect
182186
)

0 commit comments

Comments
 (0)