goupnp-master/0000755000175000017500000000000013165111724012304 5ustar freefreegoupnp-master/.gitignore0000644000175000017500000000001713165111724014272 0ustar freefree/gotasks/specs goupnp-master/LICENSE0000644000175000017500000000245113165111724013313 0ustar freefreeCopyright (c) 2013, John Beisley All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. goupnp-master/README.md0000644000175000017500000000506013165111724013564 0ustar freefreegoupnp is a UPnP client library for Go Installation ------------ Run `go get -u github.com/huin/goupnp`. Documentation ------------- Supported DCPs (you probably want to start with one of these): * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) av1](https://godoc.org/github.com/huin/goupnp/dcps/av1) - Client for UPnP Device Control Protocol MediaServer v1 and MediaRenderer v1. * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) internetgateway1](https://godoc.org/github.com/huin/goupnp/dcps/internetgateway1) - Client for UPnP Device Control Protocol Internet Gateway Device v1. * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) internetgateway2](https://godoc.org/github.com/huin/goupnp/dcps/internetgateway2) - Client for UPnP Device Control Protocol Internet Gateway Device v2. Core components: * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) (goupnp)](https://godoc.org/github.com/huin/goupnp) core library - contains datastructures and utilities typically used by the implemented DCPs. * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) httpu](https://godoc.org/github.com/huin/goupnp/httpu) HTTPU implementation, underlies SSDP. * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) ssdp](https://godoc.org/github.com/huin/goupnp/ssdp) SSDP client implementation (simple service discovery protocol) - used to discover UPnP services on a network. * [![GoDoc](https://godoc.org/github.com/huin/goupnp?status.svg) soap](https://godoc.org/github.com/huin/goupnp/soap) SOAP client implementation (simple object access protocol) - used to communicate with discovered services. Regenerating dcps generated source code: ---------------------------------------- 1. Install gotasks: `go get -u github.com/jingweno/gotask` 2. Change to the gotasks directory: `cd gotasks` 3. Run specgen task: `gotask specgen` Supporting additional UPnP devices and services: ------------------------------------------------ Supporting additional services is, in the trivial case, simply a matter of adding the service to the `dcpMetadata` whitelist in `gotasks/specgen_task.go`, regenerating the source code (see above), and committing that source code. However, it would be helpful if anyone needing such a service could test the service against the service they have, and then reporting any trouble encountered as an [issue on this project](https://github.com/huin/goupnp/issues/new). If it just works, then please report at least minimal working functionality as an issue, and optionally contribute the metadata upstream. goupnp-master/cmd/0000755000175000017500000000000013165111724013047 5ustar freefreegoupnp-master/cmd/example_httpu_serving/0000755000175000017500000000000013165111724017463 5ustar freefreegoupnp-master/cmd/example_httpu_serving/example_httpu_serving.go0000644000175000017500000000062613165111724024432 0ustar freefreepackage main import ( "log" "net/http" "github.com/huin/goupnp/httpu" ) func main() { srv := httpu.Server{ Addr: "239.255.255.250:1900", Multicast: true, Handler: httpu.HandlerFunc(func(r *http.Request) { log.Printf("Got %s %s message from %v: %v", r.Method, r.URL.Path, r.RemoteAddr, r.Header) }), } err := srv.ListenAndServe() log.Printf("Serving failed with error: %v", err) } goupnp-master/cmd/example_internetgateway1/0000755000175000017500000000000013165111724020055 5ustar freefreegoupnp-master/cmd/example_internetgateway1/example_internetgateway1.go0000644000175000017500000000372613165111724025422 0ustar freefreepackage main import ( "fmt" "log" "github.com/huin/goupnp/dcps/internetgateway1" ) func main() { clients, errors, err := internetgateway1.NewWANPPPConnection1Clients() if err != nil { log.Fatal(err) } fmt.Printf("Got %d errors finding servers and %d successfully discovered.\n", len(errors), len(clients)) for i, e := range errors { fmt.Printf("Error finding server #%d: %v\n", i+1, e) } for _, c := range clients { dev := &c.ServiceClient.RootDevice.Device srv := c.ServiceClient.Service fmt.Println(dev.FriendlyName, " :: ", srv.String()) scpd, err := srv.RequestSCDP() if err != nil { fmt.Printf(" Error requesting service SCPD: %v\n", err) } else { fmt.Println(" Available actions:") for _, action := range scpd.Actions { fmt.Printf(" * %s\n", action.Name) for _, arg := range action.Arguments { var varDesc string if stateVar := scpd.GetStateVariable(arg.RelatedStateVariable); stateVar != nil { varDesc = fmt.Sprintf(" (%s)", stateVar.DataType.Name) } fmt.Printf(" * [%s] %s%s\n", arg.Direction, arg.Name, varDesc) } } } if scpd == nil || scpd.GetAction("GetExternalIPAddress") != nil { ip, err := c.GetExternalIPAddress() fmt.Println("GetExternalIPAddress: ", ip, err) } if scpd == nil || scpd.GetAction("GetStatusInfo") != nil { status, lastErr, uptime, err := c.GetStatusInfo() fmt.Println("GetStatusInfo: ", status, lastErr, uptime, err) } if scpd == nil || scpd.GetAction("GetIdleDisconnectTime") != nil { idleTime, err := c.GetIdleDisconnectTime() fmt.Println("GetIdleDisconnectTime: ", idleTime, err) } if scpd == nil || scpd.GetAction("AddPortMapping") != nil { err := c.AddPortMapping("", 5000, "TCP", 5001, "192.168.1.2", true, "Test port mapping", 0) fmt.Println("AddPortMapping: ", err) } if scpd == nil || scpd.GetAction("DeletePortMapping") != nil { err := c.DeletePortMapping("", 5000, "TCP") fmt.Println("DeletePortMapping: ", err) } } } goupnp-master/cmd/example_ssdp_registry/0000755000175000017500000000000013165111724017463 5ustar freefreegoupnp-master/cmd/example_ssdp_registry/example_ssdp_registry.go0000644000175000017500000000101513165111724024423 0ustar freefreepackage main import ( "log" "github.com/huin/goupnp/ssdp" ) func main() { c := make(chan ssdp.Update) srv, reg := ssdp.NewServerAndRegistry() reg.AddListener(c) go listener(c) if err := srv.ListenAndServe(); err != nil { log.Print("ListenAndServe failed: ", err) } } func listener(c <-chan ssdp.Update) { for u := range c { if u.Entry != nil { log.Printf("Event: %v USN: %s Entry: %#v", u.EventType, u.USN, *u.Entry) } else { log.Printf("Event: %v USN: %s Entry: ", u.EventType, u.USN) } } } goupnp-master/dcps/0000755000175000017500000000000013165111724013235 5ustar freefreegoupnp-master/dcps/av1/0000755000175000017500000000000013165111724013724 5ustar freefreegoupnp-master/dcps/av1/av1.go0000644000175000017500000066263413165111724014763 0ustar freefree// Client for UPnP Device Control Protocol MediaServer v1 and MediaRenderer v1. // // This DCP is documented in detail at: http://upnp.org/specs/av/av1/ // // Typically, use one of the New* functions to create clients for services. package av1 // Generated file - do not edit by hand. See README.md import ( "net/url" "time" "github.com/huin/goupnp" "github.com/huin/goupnp/soap" ) // Hack to avoid Go complaining if time isn't used. var _ time.Time // Device URNs: const () // Service URNs: const ( URN_AVTransport_1 = "urn:schemas-upnp-org:service:AVTransport:1" URN_AVTransport_2 = "urn:schemas-upnp-org:service:AVTransport:2" URN_ConnectionManager_1 = "urn:schemas-upnp-org:service:ConnectionManager:1" URN_ConnectionManager_2 = "urn:schemas-upnp-org:service:ConnectionManager:2" URN_ContentDirectory_1 = "urn:schemas-upnp-org:service:ContentDirectory:1" URN_ContentDirectory_2 = "urn:schemas-upnp-org:service:ContentDirectory:2" URN_ContentDirectory_3 = "urn:schemas-upnp-org:service:ContentDirectory:3" URN_RenderingControl_1 = "urn:schemas-upnp-org:service:RenderingControl:1" URN_RenderingControl_2 = "urn:schemas-upnp-org:service:RenderingControl:2" URN_ScheduledRecording_1 = "urn:schemas-upnp-org:service:ScheduledRecording:1" URN_ScheduledRecording_2 = "urn:schemas-upnp-org:service:ScheduledRecording:2" ) // AVTransport1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:AVTransport:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type AVTransport1 struct { goupnp.ServiceClient } // NewAVTransport1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewAVTransport1Clients() (clients []*AVTransport1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_AVTransport_1); err != nil { return } clients = newAVTransport1ClientsFromGenericClients(genericClients) return } // NewAVTransport1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewAVTransport1ClientsByURL(loc *url.URL) ([]*AVTransport1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_AVTransport_1) if err != nil { return nil, err } return newAVTransport1ClientsFromGenericClients(genericClients), nil } // NewAVTransport1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewAVTransport1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*AVTransport1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_AVTransport_1) if err != nil { return nil, err } return newAVTransport1ClientsFromGenericClients(genericClients), nil } func newAVTransport1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*AVTransport1 { clients := make([]*AVTransport1, len(genericClients)) for i := range genericClients { clients[i] = &AVTransport1{genericClients[i]} } return clients } func (client *AVTransport1) SetAVTransportURI(InstanceID uint32, CurrentURI string, CurrentURIMetaData string) (err error) { // Request structure. request := &struct { InstanceID string CurrentURI string CurrentURIMetaData string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.CurrentURI, err = soap.MarshalString(CurrentURI); err != nil { return } if request.CurrentURIMetaData, err = soap.MarshalString(CurrentURIMetaData); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "SetAVTransportURI", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) SetNextAVTransportURI(InstanceID uint32, NextURI string, NextURIMetaData string) (err error) { // Request structure. request := &struct { InstanceID string NextURI string NextURIMetaData string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.NextURI, err = soap.MarshalString(NextURI); err != nil { return } if request.NextURIMetaData, err = soap.MarshalString(NextURIMetaData); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "SetNextAVTransportURI", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NrTracks: allowed value range: minimum=0 func (client *AVTransport1) GetMediaInfo(InstanceID uint32) (NrTracks uint32, MediaDuration string, CurrentURI string, CurrentURIMetaData string, NextURI string, NextURIMetaData string, PlayMedium string, RecordMedium string, WriteStatus string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NrTracks string MediaDuration string CurrentURI string CurrentURIMetaData string NextURI string NextURIMetaData string PlayMedium string RecordMedium string WriteStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "GetMediaInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NrTracks, err = soap.UnmarshalUi4(response.NrTracks); err != nil { return } if MediaDuration, err = soap.UnmarshalString(response.MediaDuration); err != nil { return } if CurrentURI, err = soap.UnmarshalString(response.CurrentURI); err != nil { return } if CurrentURIMetaData, err = soap.UnmarshalString(response.CurrentURIMetaData); err != nil { return } if NextURI, err = soap.UnmarshalString(response.NextURI); err != nil { return } if NextURIMetaData, err = soap.UnmarshalString(response.NextURIMetaData); err != nil { return } if PlayMedium, err = soap.UnmarshalString(response.PlayMedium); err != nil { return } if RecordMedium, err = soap.UnmarshalString(response.RecordMedium); err != nil { return } if WriteStatus, err = soap.UnmarshalString(response.WriteStatus); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * CurrentTransportState: allowed values: STOPPED, PLAYING // // * CurrentTransportStatus: allowed values: OK, ERROR_OCCURRED // // * CurrentSpeed: allowed values: 1 func (client *AVTransport1) GetTransportInfo(InstanceID uint32) (CurrentTransportState string, CurrentTransportStatus string, CurrentSpeed string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentTransportState string CurrentTransportStatus string CurrentSpeed string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "GetTransportInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentTransportState, err = soap.UnmarshalString(response.CurrentTransportState); err != nil { return } if CurrentTransportStatus, err = soap.UnmarshalString(response.CurrentTransportStatus); err != nil { return } if CurrentSpeed, err = soap.UnmarshalString(response.CurrentSpeed); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * Track: allowed value range: minimum=0, step=1 func (client *AVTransport1) GetPositionInfo(InstanceID uint32) (Track uint32, TrackDuration string, TrackMetaData string, TrackURI string, RelTime string, AbsTime string, RelCount int32, AbsCount int32, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Track string TrackDuration string TrackMetaData string TrackURI string RelTime string AbsTime string RelCount string AbsCount string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "GetPositionInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Track, err = soap.UnmarshalUi4(response.Track); err != nil { return } if TrackDuration, err = soap.UnmarshalString(response.TrackDuration); err != nil { return } if TrackMetaData, err = soap.UnmarshalString(response.TrackMetaData); err != nil { return } if TrackURI, err = soap.UnmarshalString(response.TrackURI); err != nil { return } if RelTime, err = soap.UnmarshalString(response.RelTime); err != nil { return } if AbsTime, err = soap.UnmarshalString(response.AbsTime); err != nil { return } if RelCount, err = soap.UnmarshalI4(response.RelCount); err != nil { return } if AbsCount, err = soap.UnmarshalI4(response.AbsCount); err != nil { return } // END Unmarshal arguments from response. return } func (client *AVTransport1) GetDeviceCapabilities(InstanceID uint32) (PlayMedia string, RecMedia string, RecQualityModes string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PlayMedia string RecMedia string RecQualityModes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "GetDeviceCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PlayMedia, err = soap.UnmarshalString(response.PlayMedia); err != nil { return } if RecMedia, err = soap.UnmarshalString(response.RecMedia); err != nil { return } if RecQualityModes, err = soap.UnmarshalString(response.RecQualityModes); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * PlayMode: allowed values: NORMAL func (client *AVTransport1) GetTransportSettings(InstanceID uint32) (PlayMode string, RecQualityMode string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PlayMode string RecQualityMode string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "GetTransportSettings", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PlayMode, err = soap.UnmarshalString(response.PlayMode); err != nil { return } if RecQualityMode, err = soap.UnmarshalString(response.RecQualityMode); err != nil { return } // END Unmarshal arguments from response. return } func (client *AVTransport1) Stop(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Stop", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Speed: allowed values: 1 func (client *AVTransport1) Play(InstanceID uint32, Speed string) (err error) { // Request structure. request := &struct { InstanceID string Speed string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Speed, err = soap.MarshalString(Speed); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Play", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) Pause(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Pause", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) Record(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Record", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Unit: allowed values: TRACK_NR func (client *AVTransport1) Seek(InstanceID uint32, Unit string, Target string) (err error) { // Request structure. request := &struct { InstanceID string Unit string Target string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Unit, err = soap.MarshalString(Unit); err != nil { return } if request.Target, err = soap.MarshalString(Target); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Seek", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) Next(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Next", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) Previous(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "Previous", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewPlayMode: allowed values: NORMAL func (client *AVTransport1) SetPlayMode(InstanceID uint32, NewPlayMode string) (err error) { // Request structure. request := &struct { InstanceID string NewPlayMode string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.NewPlayMode, err = soap.MarshalString(NewPlayMode); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "SetPlayMode", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) SetRecordQualityMode(InstanceID uint32, NewRecordQualityMode string) (err error) { // Request structure. request := &struct { InstanceID string NewRecordQualityMode string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.NewRecordQualityMode, err = soap.MarshalString(NewRecordQualityMode); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "SetRecordQualityMode", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport1) GetCurrentTransportActions(InstanceID uint32) (Actions string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Actions string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_1, "GetCurrentTransportActions", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Actions, err = soap.UnmarshalString(response.Actions); err != nil { return } // END Unmarshal arguments from response. return } // AVTransport2 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:AVTransport:2". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type AVTransport2 struct { goupnp.ServiceClient } // NewAVTransport2Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewAVTransport2Clients() (clients []*AVTransport2, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_AVTransport_2); err != nil { return } clients = newAVTransport2ClientsFromGenericClients(genericClients) return } // NewAVTransport2ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewAVTransport2ClientsByURL(loc *url.URL) ([]*AVTransport2, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_AVTransport_2) if err != nil { return nil, err } return newAVTransport2ClientsFromGenericClients(genericClients), nil } // NewAVTransport2ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewAVTransport2ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*AVTransport2, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_AVTransport_2) if err != nil { return nil, err } return newAVTransport2ClientsFromGenericClients(genericClients), nil } func newAVTransport2ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*AVTransport2 { clients := make([]*AVTransport2, len(genericClients)) for i := range genericClients { clients[i] = &AVTransport2{genericClients[i]} } return clients } func (client *AVTransport2) SetAVTransportURI(InstanceID uint32, CurrentURI string, CurrentURIMetaData string) (err error) { // Request structure. request := &struct { InstanceID string CurrentURI string CurrentURIMetaData string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.CurrentURI, err = soap.MarshalString(CurrentURI); err != nil { return } if request.CurrentURIMetaData, err = soap.MarshalString(CurrentURIMetaData); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "SetAVTransportURI", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) SetNextAVTransportURI(InstanceID uint32, NextURI string, NextURIMetaData string) (err error) { // Request structure. request := &struct { InstanceID string NextURI string NextURIMetaData string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.NextURI, err = soap.MarshalString(NextURI); err != nil { return } if request.NextURIMetaData, err = soap.MarshalString(NextURIMetaData); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "SetNextAVTransportURI", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NrTracks: allowed value range: minimum=0 func (client *AVTransport2) GetMediaInfo(InstanceID uint32) (NrTracks uint32, MediaDuration string, CurrentURI string, CurrentURIMetaData string, NextURI string, NextURIMetaData string, PlayMedium string, RecordMedium string, WriteStatus string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NrTracks string MediaDuration string CurrentURI string CurrentURIMetaData string NextURI string NextURIMetaData string PlayMedium string RecordMedium string WriteStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetMediaInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NrTracks, err = soap.UnmarshalUi4(response.NrTracks); err != nil { return } if MediaDuration, err = soap.UnmarshalString(response.MediaDuration); err != nil { return } if CurrentURI, err = soap.UnmarshalString(response.CurrentURI); err != nil { return } if CurrentURIMetaData, err = soap.UnmarshalString(response.CurrentURIMetaData); err != nil { return } if NextURI, err = soap.UnmarshalString(response.NextURI); err != nil { return } if NextURIMetaData, err = soap.UnmarshalString(response.NextURIMetaData); err != nil { return } if PlayMedium, err = soap.UnmarshalString(response.PlayMedium); err != nil { return } if RecordMedium, err = soap.UnmarshalString(response.RecordMedium); err != nil { return } if WriteStatus, err = soap.UnmarshalString(response.WriteStatus); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * CurrentType: allowed values: NO_MEDIA, TRACK_AWARE, TRACK_UNAWARE // // * NrTracks: allowed value range: minimum=0 func (client *AVTransport2) GetMediaInfo_Ext(InstanceID uint32) (CurrentType string, NrTracks uint32, MediaDuration string, CurrentURI string, CurrentURIMetaData string, NextURI string, NextURIMetaData string, PlayMedium string, RecordMedium string, WriteStatus string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentType string NrTracks string MediaDuration string CurrentURI string CurrentURIMetaData string NextURI string NextURIMetaData string PlayMedium string RecordMedium string WriteStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetMediaInfo_Ext", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentType, err = soap.UnmarshalString(response.CurrentType); err != nil { return } if NrTracks, err = soap.UnmarshalUi4(response.NrTracks); err != nil { return } if MediaDuration, err = soap.UnmarshalString(response.MediaDuration); err != nil { return } if CurrentURI, err = soap.UnmarshalString(response.CurrentURI); err != nil { return } if CurrentURIMetaData, err = soap.UnmarshalString(response.CurrentURIMetaData); err != nil { return } if NextURI, err = soap.UnmarshalString(response.NextURI); err != nil { return } if NextURIMetaData, err = soap.UnmarshalString(response.NextURIMetaData); err != nil { return } if PlayMedium, err = soap.UnmarshalString(response.PlayMedium); err != nil { return } if RecordMedium, err = soap.UnmarshalString(response.RecordMedium); err != nil { return } if WriteStatus, err = soap.UnmarshalString(response.WriteStatus); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * CurrentTransportState: allowed values: STOPPED, PLAYING // // * CurrentTransportStatus: allowed values: OK, ERROR_OCCURRED // // * CurrentSpeed: allowed values: 1 func (client *AVTransport2) GetTransportInfo(InstanceID uint32) (CurrentTransportState string, CurrentTransportStatus string, CurrentSpeed string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentTransportState string CurrentTransportStatus string CurrentSpeed string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetTransportInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentTransportState, err = soap.UnmarshalString(response.CurrentTransportState); err != nil { return } if CurrentTransportStatus, err = soap.UnmarshalString(response.CurrentTransportStatus); err != nil { return } if CurrentSpeed, err = soap.UnmarshalString(response.CurrentSpeed); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * Track: allowed value range: minimum=0, step=1 func (client *AVTransport2) GetPositionInfo(InstanceID uint32) (Track uint32, TrackDuration string, TrackMetaData string, TrackURI string, RelTime string, AbsTime string, RelCount int32, AbsCount int32, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Track string TrackDuration string TrackMetaData string TrackURI string RelTime string AbsTime string RelCount string AbsCount string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetPositionInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Track, err = soap.UnmarshalUi4(response.Track); err != nil { return } if TrackDuration, err = soap.UnmarshalString(response.TrackDuration); err != nil { return } if TrackMetaData, err = soap.UnmarshalString(response.TrackMetaData); err != nil { return } if TrackURI, err = soap.UnmarshalString(response.TrackURI); err != nil { return } if RelTime, err = soap.UnmarshalString(response.RelTime); err != nil { return } if AbsTime, err = soap.UnmarshalString(response.AbsTime); err != nil { return } if RelCount, err = soap.UnmarshalI4(response.RelCount); err != nil { return } if AbsCount, err = soap.UnmarshalI4(response.AbsCount); err != nil { return } // END Unmarshal arguments from response. return } func (client *AVTransport2) GetDeviceCapabilities(InstanceID uint32) (PlayMedia string, RecMedia string, RecQualityModes string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PlayMedia string RecMedia string RecQualityModes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetDeviceCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PlayMedia, err = soap.UnmarshalString(response.PlayMedia); err != nil { return } if RecMedia, err = soap.UnmarshalString(response.RecMedia); err != nil { return } if RecQualityModes, err = soap.UnmarshalString(response.RecQualityModes); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * PlayMode: allowed values: NORMAL func (client *AVTransport2) GetTransportSettings(InstanceID uint32) (PlayMode string, RecQualityMode string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PlayMode string RecQualityMode string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetTransportSettings", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PlayMode, err = soap.UnmarshalString(response.PlayMode); err != nil { return } if RecQualityMode, err = soap.UnmarshalString(response.RecQualityMode); err != nil { return } // END Unmarshal arguments from response. return } func (client *AVTransport2) Stop(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Stop", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Speed: allowed values: 1 func (client *AVTransport2) Play(InstanceID uint32, Speed string) (err error) { // Request structure. request := &struct { InstanceID string Speed string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Speed, err = soap.MarshalString(Speed); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Play", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) Pause(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Pause", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) Record(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Record", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Unit: allowed values: TRACK_NR func (client *AVTransport2) Seek(InstanceID uint32, Unit string, Target string) (err error) { // Request structure. request := &struct { InstanceID string Unit string Target string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Unit, err = soap.MarshalString(Unit); err != nil { return } if request.Target, err = soap.MarshalString(Target); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Seek", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) Next(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Next", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) Previous(InstanceID uint32) (err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "Previous", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewPlayMode: allowed values: NORMAL func (client *AVTransport2) SetPlayMode(InstanceID uint32, NewPlayMode string) (err error) { // Request structure. request := &struct { InstanceID string NewPlayMode string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.NewPlayMode, err = soap.MarshalString(NewPlayMode); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "SetPlayMode", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) SetRecordQualityMode(InstanceID uint32, NewRecordQualityMode string) (err error) { // Request structure. request := &struct { InstanceID string NewRecordQualityMode string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.NewRecordQualityMode, err = soap.MarshalString(NewRecordQualityMode); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "SetRecordQualityMode", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *AVTransport2) GetCurrentTransportActions(InstanceID uint32) (Actions string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Actions string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetCurrentTransportActions", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Actions, err = soap.UnmarshalString(response.Actions); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * CurrentDRMState: allowed values: OK func (client *AVTransport2) GetDRMState(InstanceID uint32) (CurrentDRMState string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentDRMState string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetDRMState", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentDRMState, err = soap.UnmarshalString(response.CurrentDRMState); err != nil { return } // END Unmarshal arguments from response. return } func (client *AVTransport2) GetStateVariables(InstanceID uint32, StateVariableList string) (StateVariableValuePairs string, err error) { // Request structure. request := &struct { InstanceID string StateVariableList string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.StateVariableList, err = soap.MarshalString(StateVariableList); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { StateVariableValuePairs string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "GetStateVariables", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if StateVariableValuePairs, err = soap.UnmarshalString(response.StateVariableValuePairs); err != nil { return } // END Unmarshal arguments from response. return } func (client *AVTransport2) SetStateVariables(InstanceID uint32, AVTransportUDN string, ServiceType string, ServiceId string, StateVariableValuePairs string) (StateVariableList string, err error) { // Request structure. request := &struct { InstanceID string AVTransportUDN string ServiceType string ServiceId string StateVariableValuePairs string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.AVTransportUDN, err = soap.MarshalString(AVTransportUDN); err != nil { return } if request.ServiceType, err = soap.MarshalString(ServiceType); err != nil { return } if request.ServiceId, err = soap.MarshalString(ServiceId); err != nil { return } if request.StateVariableValuePairs, err = soap.MarshalString(StateVariableValuePairs); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { StateVariableList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_AVTransport_2, "SetStateVariables", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if StateVariableList, err = soap.UnmarshalString(response.StateVariableList); err != nil { return } // END Unmarshal arguments from response. return } // ConnectionManager1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ConnectionManager:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ConnectionManager1 struct { goupnp.ServiceClient } // NewConnectionManager1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewConnectionManager1Clients() (clients []*ConnectionManager1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ConnectionManager_1); err != nil { return } clients = newConnectionManager1ClientsFromGenericClients(genericClients) return } // NewConnectionManager1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewConnectionManager1ClientsByURL(loc *url.URL) ([]*ConnectionManager1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ConnectionManager_1) if err != nil { return nil, err } return newConnectionManager1ClientsFromGenericClients(genericClients), nil } // NewConnectionManager1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewConnectionManager1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ConnectionManager1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ConnectionManager_1) if err != nil { return nil, err } return newConnectionManager1ClientsFromGenericClients(genericClients), nil } func newConnectionManager1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ConnectionManager1 { clients := make([]*ConnectionManager1, len(genericClients)) for i := range genericClients { clients[i] = &ConnectionManager1{genericClients[i]} } return clients } func (client *ConnectionManager1) GetProtocolInfo() (Source string, Sink string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Source string Sink string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_1, "GetProtocolInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Source, err = soap.UnmarshalString(response.Source); err != nil { return } if Sink, err = soap.UnmarshalString(response.Sink); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Direction: allowed values: Input, Output func (client *ConnectionManager1) PrepareForConnection(RemoteProtocolInfo string, PeerConnectionManager string, PeerConnectionID int32, Direction string) (ConnectionID int32, AVTransportID int32, RcsID int32, err error) { // Request structure. request := &struct { RemoteProtocolInfo string PeerConnectionManager string PeerConnectionID string Direction string }{} // BEGIN Marshal arguments into request. if request.RemoteProtocolInfo, err = soap.MarshalString(RemoteProtocolInfo); err != nil { return } if request.PeerConnectionManager, err = soap.MarshalString(PeerConnectionManager); err != nil { return } if request.PeerConnectionID, err = soap.MarshalI4(PeerConnectionID); err != nil { return } if request.Direction, err = soap.MarshalString(Direction); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { ConnectionID string AVTransportID string RcsID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_1, "PrepareForConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ConnectionID, err = soap.UnmarshalI4(response.ConnectionID); err != nil { return } if AVTransportID, err = soap.UnmarshalI4(response.AVTransportID); err != nil { return } if RcsID, err = soap.UnmarshalI4(response.RcsID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ConnectionManager1) ConnectionComplete(ConnectionID int32) (err error) { // Request structure. request := &struct { ConnectionID string }{} // BEGIN Marshal arguments into request. if request.ConnectionID, err = soap.MarshalI4(ConnectionID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_1, "ConnectionComplete", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ConnectionManager1) GetCurrentConnectionIDs() (ConnectionIDs string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { ConnectionIDs string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_1, "GetCurrentConnectionIDs", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ConnectionIDs, err = soap.UnmarshalString(response.ConnectionIDs); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * Direction: allowed values: Input, Output // // * Status: allowed values: OK, ContentFormatMismatch, InsufficientBandwidth, UnreliableChannel, Unknown func (client *ConnectionManager1) GetCurrentConnectionInfo(ConnectionID int32) (RcsID int32, AVTransportID int32, ProtocolInfo string, PeerConnectionManager string, PeerConnectionID int32, Direction string, Status string, err error) { // Request structure. request := &struct { ConnectionID string }{} // BEGIN Marshal arguments into request. if request.ConnectionID, err = soap.MarshalI4(ConnectionID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RcsID string AVTransportID string ProtocolInfo string PeerConnectionManager string PeerConnectionID string Direction string Status string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_1, "GetCurrentConnectionInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RcsID, err = soap.UnmarshalI4(response.RcsID); err != nil { return } if AVTransportID, err = soap.UnmarshalI4(response.AVTransportID); err != nil { return } if ProtocolInfo, err = soap.UnmarshalString(response.ProtocolInfo); err != nil { return } if PeerConnectionManager, err = soap.UnmarshalString(response.PeerConnectionManager); err != nil { return } if PeerConnectionID, err = soap.UnmarshalI4(response.PeerConnectionID); err != nil { return } if Direction, err = soap.UnmarshalString(response.Direction); err != nil { return } if Status, err = soap.UnmarshalString(response.Status); err != nil { return } // END Unmarshal arguments from response. return } // ConnectionManager2 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ConnectionManager:2". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ConnectionManager2 struct { goupnp.ServiceClient } // NewConnectionManager2Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewConnectionManager2Clients() (clients []*ConnectionManager2, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ConnectionManager_2); err != nil { return } clients = newConnectionManager2ClientsFromGenericClients(genericClients) return } // NewConnectionManager2ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewConnectionManager2ClientsByURL(loc *url.URL) ([]*ConnectionManager2, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ConnectionManager_2) if err != nil { return nil, err } return newConnectionManager2ClientsFromGenericClients(genericClients), nil } // NewConnectionManager2ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewConnectionManager2ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ConnectionManager2, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ConnectionManager_2) if err != nil { return nil, err } return newConnectionManager2ClientsFromGenericClients(genericClients), nil } func newConnectionManager2ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ConnectionManager2 { clients := make([]*ConnectionManager2, len(genericClients)) for i := range genericClients { clients[i] = &ConnectionManager2{genericClients[i]} } return clients } func (client *ConnectionManager2) GetProtocolInfo() (Source string, Sink string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Source string Sink string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_2, "GetProtocolInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Source, err = soap.UnmarshalString(response.Source); err != nil { return } if Sink, err = soap.UnmarshalString(response.Sink); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Direction: allowed values: Input, Output func (client *ConnectionManager2) PrepareForConnection(RemoteProtocolInfo string, PeerConnectionManager string, PeerConnectionID int32, Direction string) (ConnectionID int32, AVTransportID int32, RcsID int32, err error) { // Request structure. request := &struct { RemoteProtocolInfo string PeerConnectionManager string PeerConnectionID string Direction string }{} // BEGIN Marshal arguments into request. if request.RemoteProtocolInfo, err = soap.MarshalString(RemoteProtocolInfo); err != nil { return } if request.PeerConnectionManager, err = soap.MarshalString(PeerConnectionManager); err != nil { return } if request.PeerConnectionID, err = soap.MarshalI4(PeerConnectionID); err != nil { return } if request.Direction, err = soap.MarshalString(Direction); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { ConnectionID string AVTransportID string RcsID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_2, "PrepareForConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ConnectionID, err = soap.UnmarshalI4(response.ConnectionID); err != nil { return } if AVTransportID, err = soap.UnmarshalI4(response.AVTransportID); err != nil { return } if RcsID, err = soap.UnmarshalI4(response.RcsID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ConnectionManager2) ConnectionComplete(ConnectionID int32) (err error) { // Request structure. request := &struct { ConnectionID string }{} // BEGIN Marshal arguments into request. if request.ConnectionID, err = soap.MarshalI4(ConnectionID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_2, "ConnectionComplete", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ConnectionManager2) GetCurrentConnectionIDs() (ConnectionIDs string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { ConnectionIDs string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_2, "GetCurrentConnectionIDs", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ConnectionIDs, err = soap.UnmarshalString(response.ConnectionIDs); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * Direction: allowed values: Input, Output // // * Status: allowed values: OK, ContentFormatMismatch, InsufficientBandwidth, UnreliableChannel, Unknown func (client *ConnectionManager2) GetCurrentConnectionInfo(ConnectionID int32) (RcsID int32, AVTransportID int32, ProtocolInfo string, PeerConnectionManager string, PeerConnectionID int32, Direction string, Status string, err error) { // Request structure. request := &struct { ConnectionID string }{} // BEGIN Marshal arguments into request. if request.ConnectionID, err = soap.MarshalI4(ConnectionID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RcsID string AVTransportID string ProtocolInfo string PeerConnectionManager string PeerConnectionID string Direction string Status string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ConnectionManager_2, "GetCurrentConnectionInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RcsID, err = soap.UnmarshalI4(response.RcsID); err != nil { return } if AVTransportID, err = soap.UnmarshalI4(response.AVTransportID); err != nil { return } if ProtocolInfo, err = soap.UnmarshalString(response.ProtocolInfo); err != nil { return } if PeerConnectionManager, err = soap.UnmarshalString(response.PeerConnectionManager); err != nil { return } if PeerConnectionID, err = soap.UnmarshalI4(response.PeerConnectionID); err != nil { return } if Direction, err = soap.UnmarshalString(response.Direction); err != nil { return } if Status, err = soap.UnmarshalString(response.Status); err != nil { return } // END Unmarshal arguments from response. return } // ContentDirectory1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ContentDirectory:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ContentDirectory1 struct { goupnp.ServiceClient } // NewContentDirectory1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewContentDirectory1Clients() (clients []*ContentDirectory1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ContentDirectory_1); err != nil { return } clients = newContentDirectory1ClientsFromGenericClients(genericClients) return } // NewContentDirectory1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewContentDirectory1ClientsByURL(loc *url.URL) ([]*ContentDirectory1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ContentDirectory_1) if err != nil { return nil, err } return newContentDirectory1ClientsFromGenericClients(genericClients), nil } // NewContentDirectory1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewContentDirectory1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ContentDirectory1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ContentDirectory_1) if err != nil { return nil, err } return newContentDirectory1ClientsFromGenericClients(genericClients), nil } func newContentDirectory1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ContentDirectory1 { clients := make([]*ContentDirectory1, len(genericClients)) for i := range genericClients { clients[i] = &ContentDirectory1{genericClients[i]} } return clients } func (client *ContentDirectory1) GetSearchCapabilities() (SearchCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SearchCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "GetSearchCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SearchCaps, err = soap.UnmarshalString(response.SearchCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) GetSortCapabilities() (SortCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "GetSortCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortCaps, err = soap.UnmarshalString(response.SortCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) GetSystemUpdateID() (Id uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Id string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "GetSystemUpdateID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Id, err = soap.UnmarshalUi4(response.Id); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * BrowseFlag: allowed values: BrowseMetadata, BrowseDirectChildren func (client *ContentDirectory1) Browse(ObjectID string, BrowseFlag string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { ObjectID string BrowseFlag string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.BrowseFlag, err = soap.MarshalString(BrowseFlag); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "Browse", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) Search(ContainerID string, SearchCriteria string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { ContainerID string SearchCriteria string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.SearchCriteria, err = soap.MarshalString(SearchCriteria); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "Search", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) CreateObject(ContainerID string, Elements string) (ObjectID string, Result string, err error) { // Request structure. request := &struct { ContainerID string Elements string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.Elements, err = soap.MarshalString(Elements); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { ObjectID string Result string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "CreateObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ObjectID, err = soap.UnmarshalString(response.ObjectID); err != nil { return } if Result, err = soap.UnmarshalString(response.Result); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) DestroyObject(ObjectID string) (err error) { // Request structure. request := &struct { ObjectID string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "DestroyObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory1) UpdateObject(ObjectID string, CurrentTagValue string, NewTagValue string) (err error) { // Request structure. request := &struct { ObjectID string CurrentTagValue string NewTagValue string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.CurrentTagValue, err = soap.MarshalString(CurrentTagValue); err != nil { return } if request.NewTagValue, err = soap.MarshalString(NewTagValue); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "UpdateObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory1) ImportResource(SourceURI *url.URL, DestinationURI *url.URL) (TransferID uint32, err error) { // Request structure. request := &struct { SourceURI string DestinationURI string }{} // BEGIN Marshal arguments into request. if request.SourceURI, err = soap.MarshalURI(SourceURI); err != nil { return } if request.DestinationURI, err = soap.MarshalURI(DestinationURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "ImportResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferID, err = soap.UnmarshalUi4(response.TransferID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) ExportResource(SourceURI *url.URL, DestinationURI *url.URL) (TransferID uint32, err error) { // Request structure. request := &struct { SourceURI string DestinationURI string }{} // BEGIN Marshal arguments into request. if request.SourceURI, err = soap.MarshalURI(SourceURI); err != nil { return } if request.DestinationURI, err = soap.MarshalURI(DestinationURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "ExportResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferID, err = soap.UnmarshalUi4(response.TransferID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) StopTransferResource(TransferID uint32) (err error) { // Request structure. request := &struct { TransferID string }{} // BEGIN Marshal arguments into request. if request.TransferID, err = soap.MarshalUi4(TransferID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "StopTransferResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * TransferStatus: allowed values: COMPLETED, ERROR, IN_PROGRESS, STOPPED func (client *ContentDirectory1) GetTransferProgress(TransferID uint32) (TransferStatus string, TransferLength string, TransferTotal string, err error) { // Request structure. request := &struct { TransferID string }{} // BEGIN Marshal arguments into request. if request.TransferID, err = soap.MarshalUi4(TransferID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferStatus string TransferLength string TransferTotal string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "GetTransferProgress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferStatus, err = soap.UnmarshalString(response.TransferStatus); err != nil { return } if TransferLength, err = soap.UnmarshalString(response.TransferLength); err != nil { return } if TransferTotal, err = soap.UnmarshalString(response.TransferTotal); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory1) DeleteResource(ResourceURI *url.URL) (err error) { // Request structure. request := &struct { ResourceURI string }{} // BEGIN Marshal arguments into request. if request.ResourceURI, err = soap.MarshalURI(ResourceURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "DeleteResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory1) CreateReference(ContainerID string, ObjectID string) (NewID string, err error) { // Request structure. request := &struct { ContainerID string ObjectID string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_1, "CreateReference", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewID, err = soap.UnmarshalString(response.NewID); err != nil { return } // END Unmarshal arguments from response. return } // ContentDirectory2 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ContentDirectory:2". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ContentDirectory2 struct { goupnp.ServiceClient } // NewContentDirectory2Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewContentDirectory2Clients() (clients []*ContentDirectory2, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ContentDirectory_2); err != nil { return } clients = newContentDirectory2ClientsFromGenericClients(genericClients) return } // NewContentDirectory2ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewContentDirectory2ClientsByURL(loc *url.URL) ([]*ContentDirectory2, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ContentDirectory_2) if err != nil { return nil, err } return newContentDirectory2ClientsFromGenericClients(genericClients), nil } // NewContentDirectory2ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewContentDirectory2ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ContentDirectory2, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ContentDirectory_2) if err != nil { return nil, err } return newContentDirectory2ClientsFromGenericClients(genericClients), nil } func newContentDirectory2ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ContentDirectory2 { clients := make([]*ContentDirectory2, len(genericClients)) for i := range genericClients { clients[i] = &ContentDirectory2{genericClients[i]} } return clients } func (client *ContentDirectory2) GetSearchCapabilities() (SearchCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SearchCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "GetSearchCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SearchCaps, err = soap.UnmarshalString(response.SearchCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) GetSortCapabilities() (SortCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "GetSortCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortCaps, err = soap.UnmarshalString(response.SortCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) GetSortExtensionCapabilities() (SortExtensionCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortExtensionCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "GetSortExtensionCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortExtensionCaps, err = soap.UnmarshalString(response.SortExtensionCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) GetFeatureList() (FeatureList string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { FeatureList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "GetFeatureList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if FeatureList, err = soap.UnmarshalString(response.FeatureList); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) GetSystemUpdateID() (Id uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Id string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "GetSystemUpdateID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Id, err = soap.UnmarshalUi4(response.Id); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * BrowseFlag: allowed values: BrowseMetadata, BrowseDirectChildren func (client *ContentDirectory2) Browse(ObjectID string, BrowseFlag string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { ObjectID string BrowseFlag string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.BrowseFlag, err = soap.MarshalString(BrowseFlag); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "Browse", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) Search(ContainerID string, SearchCriteria string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { ContainerID string SearchCriteria string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.SearchCriteria, err = soap.MarshalString(SearchCriteria); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "Search", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) CreateObject(ContainerID string, Elements string) (ObjectID string, Result string, err error) { // Request structure. request := &struct { ContainerID string Elements string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.Elements, err = soap.MarshalString(Elements); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { ObjectID string Result string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "CreateObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ObjectID, err = soap.UnmarshalString(response.ObjectID); err != nil { return } if Result, err = soap.UnmarshalString(response.Result); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) DestroyObject(ObjectID string) (err error) { // Request structure. request := &struct { ObjectID string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "DestroyObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory2) UpdateObject(ObjectID string, CurrentTagValue string, NewTagValue string) (err error) { // Request structure. request := &struct { ObjectID string CurrentTagValue string NewTagValue string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.CurrentTagValue, err = soap.MarshalString(CurrentTagValue); err != nil { return } if request.NewTagValue, err = soap.MarshalString(NewTagValue); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "UpdateObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory2) MoveObject(ObjectID string, NewParentID string) (NewObjectID string, err error) { // Request structure. request := &struct { ObjectID string NewParentID string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.NewParentID, err = soap.MarshalString(NewParentID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewObjectID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "MoveObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewObjectID, err = soap.UnmarshalString(response.NewObjectID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) ImportResource(SourceURI *url.URL, DestinationURI *url.URL) (TransferID uint32, err error) { // Request structure. request := &struct { SourceURI string DestinationURI string }{} // BEGIN Marshal arguments into request. if request.SourceURI, err = soap.MarshalURI(SourceURI); err != nil { return } if request.DestinationURI, err = soap.MarshalURI(DestinationURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "ImportResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferID, err = soap.UnmarshalUi4(response.TransferID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) ExportResource(SourceURI *url.URL, DestinationURI *url.URL) (TransferID uint32, err error) { // Request structure. request := &struct { SourceURI string DestinationURI string }{} // BEGIN Marshal arguments into request. if request.SourceURI, err = soap.MarshalURI(SourceURI); err != nil { return } if request.DestinationURI, err = soap.MarshalURI(DestinationURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "ExportResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferID, err = soap.UnmarshalUi4(response.TransferID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) DeleteResource(ResourceURI *url.URL) (err error) { // Request structure. request := &struct { ResourceURI string }{} // BEGIN Marshal arguments into request. if request.ResourceURI, err = soap.MarshalURI(ResourceURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "DeleteResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory2) StopTransferResource(TransferID uint32) (err error) { // Request structure. request := &struct { TransferID string }{} // BEGIN Marshal arguments into request. if request.TransferID, err = soap.MarshalUi4(TransferID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "StopTransferResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * TransferStatus: allowed values: COMPLETED, ERROR, IN_PROGRESS, STOPPED func (client *ContentDirectory2) GetTransferProgress(TransferID uint32) (TransferStatus string, TransferLength string, TransferTotal string, err error) { // Request structure. request := &struct { TransferID string }{} // BEGIN Marshal arguments into request. if request.TransferID, err = soap.MarshalUi4(TransferID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferStatus string TransferLength string TransferTotal string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "GetTransferProgress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferStatus, err = soap.UnmarshalString(response.TransferStatus); err != nil { return } if TransferLength, err = soap.UnmarshalString(response.TransferLength); err != nil { return } if TransferTotal, err = soap.UnmarshalString(response.TransferTotal); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory2) CreateReference(ContainerID string, ObjectID string) (NewID string, err error) { // Request structure. request := &struct { ContainerID string ObjectID string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_2, "CreateReference", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewID, err = soap.UnmarshalString(response.NewID); err != nil { return } // END Unmarshal arguments from response. return } // ContentDirectory3 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ContentDirectory:3". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ContentDirectory3 struct { goupnp.ServiceClient } // NewContentDirectory3Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewContentDirectory3Clients() (clients []*ContentDirectory3, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ContentDirectory_3); err != nil { return } clients = newContentDirectory3ClientsFromGenericClients(genericClients) return } // NewContentDirectory3ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewContentDirectory3ClientsByURL(loc *url.URL) ([]*ContentDirectory3, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ContentDirectory_3) if err != nil { return nil, err } return newContentDirectory3ClientsFromGenericClients(genericClients), nil } // NewContentDirectory3ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewContentDirectory3ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ContentDirectory3, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ContentDirectory_3) if err != nil { return nil, err } return newContentDirectory3ClientsFromGenericClients(genericClients), nil } func newContentDirectory3ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ContentDirectory3 { clients := make([]*ContentDirectory3, len(genericClients)) for i := range genericClients { clients[i] = &ContentDirectory3{genericClients[i]} } return clients } func (client *ContentDirectory3) GetSearchCapabilities() (SearchCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SearchCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetSearchCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SearchCaps, err = soap.UnmarshalString(response.SearchCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) GetSortCapabilities() (SortCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetSortCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortCaps, err = soap.UnmarshalString(response.SortCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) GetSortExtensionCapabilities() (SortExtensionCaps string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortExtensionCaps string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetSortExtensionCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortExtensionCaps, err = soap.UnmarshalString(response.SortExtensionCaps); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) GetFeatureList() (FeatureList string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { FeatureList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetFeatureList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if FeatureList, err = soap.UnmarshalString(response.FeatureList); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) GetSystemUpdateID() (Id uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Id string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetSystemUpdateID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Id, err = soap.UnmarshalUi4(response.Id); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) GetServiceResetToken() (ResetToken string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { ResetToken string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetServiceResetToken", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ResetToken, err = soap.UnmarshalString(response.ResetToken); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * BrowseFlag: allowed values: BrowseMetadata, BrowseDirectChildren func (client *ContentDirectory3) Browse(ObjectID string, BrowseFlag string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { ObjectID string BrowseFlag string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.BrowseFlag, err = soap.MarshalString(BrowseFlag); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "Browse", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) Search(ContainerID string, SearchCriteria string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { ContainerID string SearchCriteria string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.SearchCriteria, err = soap.MarshalString(SearchCriteria); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "Search", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) CreateObject(ContainerID string, Elements string) (ObjectID string, Result string, err error) { // Request structure. request := &struct { ContainerID string Elements string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.Elements, err = soap.MarshalString(Elements); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { ObjectID string Result string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "CreateObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ObjectID, err = soap.UnmarshalString(response.ObjectID); err != nil { return } if Result, err = soap.UnmarshalString(response.Result); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) DestroyObject(ObjectID string) (err error) { // Request structure. request := &struct { ObjectID string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "DestroyObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory3) UpdateObject(ObjectID string, CurrentTagValue string, NewTagValue string) (err error) { // Request structure. request := &struct { ObjectID string CurrentTagValue string NewTagValue string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.CurrentTagValue, err = soap.MarshalString(CurrentTagValue); err != nil { return } if request.NewTagValue, err = soap.MarshalString(NewTagValue); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "UpdateObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory3) MoveObject(ObjectID string, NewParentID string) (NewObjectID string, err error) { // Request structure. request := &struct { ObjectID string NewParentID string }{} // BEGIN Marshal arguments into request. if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } if request.NewParentID, err = soap.MarshalString(NewParentID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewObjectID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "MoveObject", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewObjectID, err = soap.UnmarshalString(response.NewObjectID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) ImportResource(SourceURI *url.URL, DestinationURI *url.URL) (TransferID uint32, err error) { // Request structure. request := &struct { SourceURI string DestinationURI string }{} // BEGIN Marshal arguments into request. if request.SourceURI, err = soap.MarshalURI(SourceURI); err != nil { return } if request.DestinationURI, err = soap.MarshalURI(DestinationURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "ImportResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferID, err = soap.UnmarshalUi4(response.TransferID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) ExportResource(SourceURI *url.URL, DestinationURI *url.URL) (TransferID uint32, err error) { // Request structure. request := &struct { SourceURI string DestinationURI string }{} // BEGIN Marshal arguments into request. if request.SourceURI, err = soap.MarshalURI(SourceURI); err != nil { return } if request.DestinationURI, err = soap.MarshalURI(DestinationURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "ExportResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferID, err = soap.UnmarshalUi4(response.TransferID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) DeleteResource(ResourceURI *url.URL) (err error) { // Request structure. request := &struct { ResourceURI string }{} // BEGIN Marshal arguments into request. if request.ResourceURI, err = soap.MarshalURI(ResourceURI); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "DeleteResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ContentDirectory3) StopTransferResource(TransferID uint32) (err error) { // Request structure. request := &struct { TransferID string }{} // BEGIN Marshal arguments into request. if request.TransferID, err = soap.MarshalUi4(TransferID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "StopTransferResource", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * TransferStatus: allowed values: COMPLETED, ERROR, IN_PROGRESS, STOPPED func (client *ContentDirectory3) GetTransferProgress(TransferID uint32) (TransferStatus string, TransferLength string, TransferTotal string, err error) { // Request structure. request := &struct { TransferID string }{} // BEGIN Marshal arguments into request. if request.TransferID, err = soap.MarshalUi4(TransferID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { TransferStatus string TransferLength string TransferTotal string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetTransferProgress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if TransferStatus, err = soap.UnmarshalString(response.TransferStatus); err != nil { return } if TransferLength, err = soap.UnmarshalString(response.TransferLength); err != nil { return } if TransferTotal, err = soap.UnmarshalString(response.TransferTotal); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) CreateReference(ContainerID string, ObjectID string) (NewID string, err error) { // Request structure. request := &struct { ContainerID string ObjectID string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.ObjectID, err = soap.MarshalString(ObjectID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "CreateReference", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewID, err = soap.UnmarshalString(response.NewID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) FreeFormQuery(ContainerID string, CDSView uint32, QueryRequest string) (QueryResult string, UpdateID uint32, err error) { // Request structure. request := &struct { ContainerID string CDSView string QueryRequest string }{} // BEGIN Marshal arguments into request. if request.ContainerID, err = soap.MarshalString(ContainerID); err != nil { return } if request.CDSView, err = soap.MarshalUi4(CDSView); err != nil { return } if request.QueryRequest, err = soap.MarshalString(QueryRequest); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { QueryResult string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "FreeFormQuery", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if QueryResult, err = soap.UnmarshalString(response.QueryResult); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ContentDirectory3) GetFreeFormQueryCapabilities() (FFQCapabilities string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { FFQCapabilities string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ContentDirectory_3, "GetFreeFormQueryCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if FFQCapabilities, err = soap.UnmarshalString(response.FFQCapabilities); err != nil { return } // END Unmarshal arguments from response. return } // RenderingControl1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:RenderingControl:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type RenderingControl1 struct { goupnp.ServiceClient } // NewRenderingControl1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewRenderingControl1Clients() (clients []*RenderingControl1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_RenderingControl_1); err != nil { return } clients = newRenderingControl1ClientsFromGenericClients(genericClients) return } // NewRenderingControl1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewRenderingControl1ClientsByURL(loc *url.URL) ([]*RenderingControl1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_RenderingControl_1) if err != nil { return nil, err } return newRenderingControl1ClientsFromGenericClients(genericClients), nil } // NewRenderingControl1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewRenderingControl1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*RenderingControl1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_RenderingControl_1) if err != nil { return nil, err } return newRenderingControl1ClientsFromGenericClients(genericClients), nil } func newRenderingControl1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*RenderingControl1 { clients := make([]*RenderingControl1, len(genericClients)) for i := range genericClients { clients[i] = &RenderingControl1{genericClients[i]} } return clients } func (client *RenderingControl1) ListPresets(InstanceID uint32) (CurrentPresetNameList string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentPresetNameList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "ListPresets", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentPresetNameList, err = soap.UnmarshalString(response.CurrentPresetNameList); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * PresetName: allowed values: FactoryDefaults func (client *RenderingControl1) SelectPreset(InstanceID uint32, PresetName string) (err error) { // Request structure. request := &struct { InstanceID string PresetName string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.PresetName, err = soap.MarshalString(PresetName); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SelectPreset", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentBrightness: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetBrightness(InstanceID uint32) (CurrentBrightness uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentBrightness string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetBrightness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentBrightness, err = soap.UnmarshalUi2(response.CurrentBrightness); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredBrightness: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetBrightness(InstanceID uint32, DesiredBrightness uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredBrightness string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredBrightness, err = soap.MarshalUi2(DesiredBrightness); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetBrightness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentContrast: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetContrast(InstanceID uint32) (CurrentContrast uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentContrast string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetContrast", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentContrast, err = soap.UnmarshalUi2(response.CurrentContrast); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredContrast: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetContrast(InstanceID uint32, DesiredContrast uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredContrast string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredContrast, err = soap.MarshalUi2(DesiredContrast); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetContrast", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentSharpness: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetSharpness(InstanceID uint32) (CurrentSharpness uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentSharpness string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetSharpness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentSharpness, err = soap.UnmarshalUi2(response.CurrentSharpness); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredSharpness: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetSharpness(InstanceID uint32, DesiredSharpness uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredSharpness string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredSharpness, err = soap.MarshalUi2(DesiredSharpness); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetSharpness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *RenderingControl1) GetRedVideoGain(InstanceID uint32) (CurrentRedVideoGain uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentRedVideoGain string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetRedVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentRedVideoGain, err = soap.UnmarshalUi2(response.CurrentRedVideoGain); err != nil { return } // END Unmarshal arguments from response. return } func (client *RenderingControl1) SetRedVideoGain(InstanceID uint32, DesiredRedVideoGain uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredRedVideoGain string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredRedVideoGain, err = soap.MarshalUi2(DesiredRedVideoGain); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetRedVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentGreenVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetGreenVideoGain(InstanceID uint32) (CurrentGreenVideoGain uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentGreenVideoGain string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetGreenVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentGreenVideoGain, err = soap.UnmarshalUi2(response.CurrentGreenVideoGain); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredGreenVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetGreenVideoGain(InstanceID uint32, DesiredGreenVideoGain uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredGreenVideoGain string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredGreenVideoGain, err = soap.MarshalUi2(DesiredGreenVideoGain); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetGreenVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentBlueVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetBlueVideoGain(InstanceID uint32) (CurrentBlueVideoGain uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentBlueVideoGain string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetBlueVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentBlueVideoGain, err = soap.UnmarshalUi2(response.CurrentBlueVideoGain); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredBlueVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetBlueVideoGain(InstanceID uint32, DesiredBlueVideoGain uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredBlueVideoGain string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredBlueVideoGain, err = soap.MarshalUi2(DesiredBlueVideoGain); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetBlueVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentRedVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetRedVideoBlackLevel(InstanceID uint32) (CurrentRedVideoBlackLevel uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentRedVideoBlackLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetRedVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentRedVideoBlackLevel, err = soap.UnmarshalUi2(response.CurrentRedVideoBlackLevel); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredRedVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetRedVideoBlackLevel(InstanceID uint32, DesiredRedVideoBlackLevel uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredRedVideoBlackLevel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredRedVideoBlackLevel, err = soap.MarshalUi2(DesiredRedVideoBlackLevel); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetRedVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentGreenVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetGreenVideoBlackLevel(InstanceID uint32) (CurrentGreenVideoBlackLevel uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentGreenVideoBlackLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetGreenVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentGreenVideoBlackLevel, err = soap.UnmarshalUi2(response.CurrentGreenVideoBlackLevel); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredGreenVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetGreenVideoBlackLevel(InstanceID uint32, DesiredGreenVideoBlackLevel uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredGreenVideoBlackLevel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredGreenVideoBlackLevel, err = soap.MarshalUi2(DesiredGreenVideoBlackLevel); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetGreenVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentBlueVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetBlueVideoBlackLevel(InstanceID uint32) (CurrentBlueVideoBlackLevel uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentBlueVideoBlackLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetBlueVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentBlueVideoBlackLevel, err = soap.UnmarshalUi2(response.CurrentBlueVideoBlackLevel); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredBlueVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetBlueVideoBlackLevel(InstanceID uint32, DesiredBlueVideoBlackLevel uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredBlueVideoBlackLevel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredBlueVideoBlackLevel, err = soap.MarshalUi2(DesiredBlueVideoBlackLevel); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetBlueVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentColorTemperature: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetColorTemperature(InstanceID uint32) (CurrentColorTemperature uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentColorTemperature string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetColorTemperature", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentColorTemperature, err = soap.UnmarshalUi2(response.CurrentColorTemperature); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredColorTemperature: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetColorTemperature(InstanceID uint32, DesiredColorTemperature uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredColorTemperature string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredColorTemperature, err = soap.MarshalUi2(DesiredColorTemperature); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetColorTemperature", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentHorizontalKeystone: allowed value range: step=1 func (client *RenderingControl1) GetHorizontalKeystone(InstanceID uint32) (CurrentHorizontalKeystone int16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentHorizontalKeystone string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetHorizontalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentHorizontalKeystone, err = soap.UnmarshalI2(response.CurrentHorizontalKeystone); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredHorizontalKeystone: allowed value range: step=1 func (client *RenderingControl1) SetHorizontalKeystone(InstanceID uint32, DesiredHorizontalKeystone int16) (err error) { // Request structure. request := &struct { InstanceID string DesiredHorizontalKeystone string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredHorizontalKeystone, err = soap.MarshalI2(DesiredHorizontalKeystone); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetHorizontalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentVerticalKeystone: allowed value range: step=1 func (client *RenderingControl1) GetVerticalKeystone(InstanceID uint32) (CurrentVerticalKeystone int16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentVerticalKeystone string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetVerticalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentVerticalKeystone, err = soap.UnmarshalI2(response.CurrentVerticalKeystone); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredVerticalKeystone: allowed value range: step=1 func (client *RenderingControl1) SetVerticalKeystone(InstanceID uint32, DesiredVerticalKeystone int16) (err error) { // Request structure. request := &struct { InstanceID string DesiredVerticalKeystone string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredVerticalKeystone, err = soap.MarshalI2(DesiredVerticalKeystone); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetVerticalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) GetMute(InstanceID uint32, Channel string) (CurrentMute bool, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentMute string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetMute", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentMute, err = soap.UnmarshalBoolean(response.CurrentMute); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) SetMute(InstanceID uint32, Channel string, DesiredMute bool) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredMute string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredMute, err = soap.MarshalBoolean(DesiredMute); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetMute", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master // // Return values: // // * CurrentVolume: allowed value range: minimum=0, step=1 func (client *RenderingControl1) GetVolume(InstanceID uint32, Channel string) (CurrentVolume uint16, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentVolume string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetVolume", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentVolume, err = soap.UnmarshalUi2(response.CurrentVolume); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master // // * DesiredVolume: allowed value range: minimum=0, step=1 func (client *RenderingControl1) SetVolume(InstanceID uint32, Channel string, DesiredVolume uint16) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredVolume string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredVolume, err = soap.MarshalUi2(DesiredVolume); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetVolume", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) GetVolumeDB(InstanceID uint32, Channel string) (CurrentVolume int16, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentVolume string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetVolumeDB", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentVolume, err = soap.UnmarshalI2(response.CurrentVolume); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) SetVolumeDB(InstanceID uint32, Channel string, DesiredVolume int16) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredVolume string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredVolume, err = soap.MarshalI2(DesiredVolume); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetVolumeDB", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) GetVolumeDBRange(InstanceID uint32, Channel string) (MinValue int16, MaxValue int16, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { MinValue string MaxValue string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetVolumeDBRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if MinValue, err = soap.UnmarshalI2(response.MinValue); err != nil { return } if MaxValue, err = soap.UnmarshalI2(response.MaxValue); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) GetLoudness(InstanceID uint32, Channel string) (CurrentLoudness bool, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentLoudness string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "GetLoudness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentLoudness, err = soap.UnmarshalBoolean(response.CurrentLoudness); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl1) SetLoudness(InstanceID uint32, Channel string, DesiredLoudness bool) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredLoudness string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredLoudness, err = soap.MarshalBoolean(DesiredLoudness); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_1, "SetLoudness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // RenderingControl2 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:RenderingControl:2". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type RenderingControl2 struct { goupnp.ServiceClient } // NewRenderingControl2Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewRenderingControl2Clients() (clients []*RenderingControl2, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_RenderingControl_2); err != nil { return } clients = newRenderingControl2ClientsFromGenericClients(genericClients) return } // NewRenderingControl2ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewRenderingControl2ClientsByURL(loc *url.URL) ([]*RenderingControl2, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_RenderingControl_2) if err != nil { return nil, err } return newRenderingControl2ClientsFromGenericClients(genericClients), nil } // NewRenderingControl2ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewRenderingControl2ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*RenderingControl2, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_RenderingControl_2) if err != nil { return nil, err } return newRenderingControl2ClientsFromGenericClients(genericClients), nil } func newRenderingControl2ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*RenderingControl2 { clients := make([]*RenderingControl2, len(genericClients)) for i := range genericClients { clients[i] = &RenderingControl2{genericClients[i]} } return clients } func (client *RenderingControl2) ListPresets(InstanceID uint32) (CurrentPresetNameList string, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentPresetNameList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "ListPresets", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentPresetNameList, err = soap.UnmarshalString(response.CurrentPresetNameList); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * PresetName: allowed values: FactoryDefaults func (client *RenderingControl2) SelectPreset(InstanceID uint32, PresetName string) (err error) { // Request structure. request := &struct { InstanceID string PresetName string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.PresetName, err = soap.MarshalString(PresetName); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SelectPreset", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentBrightness: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetBrightness(InstanceID uint32) (CurrentBrightness uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentBrightness string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetBrightness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentBrightness, err = soap.UnmarshalUi2(response.CurrentBrightness); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredBrightness: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetBrightness(InstanceID uint32, DesiredBrightness uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredBrightness string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredBrightness, err = soap.MarshalUi2(DesiredBrightness); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetBrightness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentContrast: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetContrast(InstanceID uint32) (CurrentContrast uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentContrast string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetContrast", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentContrast, err = soap.UnmarshalUi2(response.CurrentContrast); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredContrast: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetContrast(InstanceID uint32, DesiredContrast uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredContrast string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredContrast, err = soap.MarshalUi2(DesiredContrast); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetContrast", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentSharpness: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetSharpness(InstanceID uint32) (CurrentSharpness uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentSharpness string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetSharpness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentSharpness, err = soap.UnmarshalUi2(response.CurrentSharpness); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredSharpness: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetSharpness(InstanceID uint32, DesiredSharpness uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredSharpness string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredSharpness, err = soap.MarshalUi2(DesiredSharpness); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetSharpness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentRedVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetRedVideoGain(InstanceID uint32) (CurrentRedVideoGain uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentRedVideoGain string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetRedVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentRedVideoGain, err = soap.UnmarshalUi2(response.CurrentRedVideoGain); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredRedVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetRedVideoGain(InstanceID uint32, DesiredRedVideoGain uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredRedVideoGain string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredRedVideoGain, err = soap.MarshalUi2(DesiredRedVideoGain); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetRedVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentGreenVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetGreenVideoGain(InstanceID uint32) (CurrentGreenVideoGain uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentGreenVideoGain string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetGreenVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentGreenVideoGain, err = soap.UnmarshalUi2(response.CurrentGreenVideoGain); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredGreenVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetGreenVideoGain(InstanceID uint32, DesiredGreenVideoGain uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredGreenVideoGain string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredGreenVideoGain, err = soap.MarshalUi2(DesiredGreenVideoGain); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetGreenVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentBlueVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetBlueVideoGain(InstanceID uint32) (CurrentBlueVideoGain uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentBlueVideoGain string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetBlueVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentBlueVideoGain, err = soap.UnmarshalUi2(response.CurrentBlueVideoGain); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredBlueVideoGain: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetBlueVideoGain(InstanceID uint32, DesiredBlueVideoGain uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredBlueVideoGain string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredBlueVideoGain, err = soap.MarshalUi2(DesiredBlueVideoGain); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetBlueVideoGain", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentRedVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetRedVideoBlackLevel(InstanceID uint32) (CurrentRedVideoBlackLevel uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentRedVideoBlackLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetRedVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentRedVideoBlackLevel, err = soap.UnmarshalUi2(response.CurrentRedVideoBlackLevel); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredRedVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetRedVideoBlackLevel(InstanceID uint32, DesiredRedVideoBlackLevel uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredRedVideoBlackLevel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredRedVideoBlackLevel, err = soap.MarshalUi2(DesiredRedVideoBlackLevel); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetRedVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentGreenVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetGreenVideoBlackLevel(InstanceID uint32) (CurrentGreenVideoBlackLevel uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentGreenVideoBlackLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetGreenVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentGreenVideoBlackLevel, err = soap.UnmarshalUi2(response.CurrentGreenVideoBlackLevel); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredGreenVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetGreenVideoBlackLevel(InstanceID uint32, DesiredGreenVideoBlackLevel uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredGreenVideoBlackLevel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredGreenVideoBlackLevel, err = soap.MarshalUi2(DesiredGreenVideoBlackLevel); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetGreenVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentBlueVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetBlueVideoBlackLevel(InstanceID uint32) (CurrentBlueVideoBlackLevel uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentBlueVideoBlackLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetBlueVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentBlueVideoBlackLevel, err = soap.UnmarshalUi2(response.CurrentBlueVideoBlackLevel); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredBlueVideoBlackLevel: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetBlueVideoBlackLevel(InstanceID uint32, DesiredBlueVideoBlackLevel uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredBlueVideoBlackLevel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredBlueVideoBlackLevel, err = soap.MarshalUi2(DesiredBlueVideoBlackLevel); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetBlueVideoBlackLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentColorTemperature: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetColorTemperature(InstanceID uint32) (CurrentColorTemperature uint16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentColorTemperature string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetColorTemperature", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentColorTemperature, err = soap.UnmarshalUi2(response.CurrentColorTemperature); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredColorTemperature: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetColorTemperature(InstanceID uint32, DesiredColorTemperature uint16) (err error) { // Request structure. request := &struct { InstanceID string DesiredColorTemperature string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredColorTemperature, err = soap.MarshalUi2(DesiredColorTemperature); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetColorTemperature", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentHorizontalKeystone: allowed value range: step=1 func (client *RenderingControl2) GetHorizontalKeystone(InstanceID uint32) (CurrentHorizontalKeystone int16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentHorizontalKeystone string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetHorizontalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentHorizontalKeystone, err = soap.UnmarshalI2(response.CurrentHorizontalKeystone); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredHorizontalKeystone: allowed value range: step=1 func (client *RenderingControl2) SetHorizontalKeystone(InstanceID uint32, DesiredHorizontalKeystone int16) (err error) { // Request structure. request := &struct { InstanceID string DesiredHorizontalKeystone string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredHorizontalKeystone, err = soap.MarshalI2(DesiredHorizontalKeystone); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetHorizontalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * CurrentVerticalKeystone: allowed value range: step=1 func (client *RenderingControl2) GetVerticalKeystone(InstanceID uint32) (CurrentVerticalKeystone int16, err error) { // Request structure. request := &struct { InstanceID string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentVerticalKeystone string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetVerticalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentVerticalKeystone, err = soap.UnmarshalI2(response.CurrentVerticalKeystone); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DesiredVerticalKeystone: allowed value range: step=1 func (client *RenderingControl2) SetVerticalKeystone(InstanceID uint32, DesiredVerticalKeystone int16) (err error) { // Request structure. request := &struct { InstanceID string DesiredVerticalKeystone string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.DesiredVerticalKeystone, err = soap.MarshalI2(DesiredVerticalKeystone); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetVerticalKeystone", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) GetMute(InstanceID uint32, Channel string) (CurrentMute bool, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentMute string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetMute", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentMute, err = soap.UnmarshalBoolean(response.CurrentMute); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) SetMute(InstanceID uint32, Channel string, DesiredMute bool) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredMute string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredMute, err = soap.MarshalBoolean(DesiredMute); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetMute", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master // // Return values: // // * CurrentVolume: allowed value range: minimum=0, step=1 func (client *RenderingControl2) GetVolume(InstanceID uint32, Channel string) (CurrentVolume uint16, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentVolume string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetVolume", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentVolume, err = soap.UnmarshalUi2(response.CurrentVolume); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master // // * DesiredVolume: allowed value range: minimum=0, step=1 func (client *RenderingControl2) SetVolume(InstanceID uint32, Channel string, DesiredVolume uint16) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredVolume string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredVolume, err = soap.MarshalUi2(DesiredVolume); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetVolume", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) GetVolumeDB(InstanceID uint32, Channel string) (CurrentVolume int16, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentVolume string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetVolumeDB", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentVolume, err = soap.UnmarshalI2(response.CurrentVolume); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) SetVolumeDB(InstanceID uint32, Channel string, DesiredVolume int16) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredVolume string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredVolume, err = soap.MarshalI2(DesiredVolume); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetVolumeDB", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) GetVolumeDBRange(InstanceID uint32, Channel string) (MinValue int16, MaxValue int16, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { MinValue string MaxValue string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetVolumeDBRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if MinValue, err = soap.UnmarshalI2(response.MinValue); err != nil { return } if MaxValue, err = soap.UnmarshalI2(response.MaxValue); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) GetLoudness(InstanceID uint32, Channel string) (CurrentLoudness bool, err error) { // Request structure. request := &struct { InstanceID string Channel string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { CurrentLoudness string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetLoudness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if CurrentLoudness, err = soap.UnmarshalBoolean(response.CurrentLoudness); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * Channel: allowed values: Master func (client *RenderingControl2) SetLoudness(InstanceID uint32, Channel string, DesiredLoudness bool) (err error) { // Request structure. request := &struct { InstanceID string Channel string DesiredLoudness string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.Channel, err = soap.MarshalString(Channel); err != nil { return } if request.DesiredLoudness, err = soap.MarshalBoolean(DesiredLoudness); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetLoudness", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *RenderingControl2) GetStateVariables(InstanceID uint32, StateVariableList string) (StateVariableValuePairs string, err error) { // Request structure. request := &struct { InstanceID string StateVariableList string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.StateVariableList, err = soap.MarshalString(StateVariableList); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { StateVariableValuePairs string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "GetStateVariables", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if StateVariableValuePairs, err = soap.UnmarshalString(response.StateVariableValuePairs); err != nil { return } // END Unmarshal arguments from response. return } func (client *RenderingControl2) SetStateVariables(InstanceID uint32, RenderingControlUDN string, ServiceType string, ServiceId string, StateVariableValuePairs string) (StateVariableList string, err error) { // Request structure. request := &struct { InstanceID string RenderingControlUDN string ServiceType string ServiceId string StateVariableValuePairs string }{} // BEGIN Marshal arguments into request. if request.InstanceID, err = soap.MarshalUi4(InstanceID); err != nil { return } if request.RenderingControlUDN, err = soap.MarshalString(RenderingControlUDN); err != nil { return } if request.ServiceType, err = soap.MarshalString(ServiceType); err != nil { return } if request.ServiceId, err = soap.MarshalString(ServiceId); err != nil { return } if request.StateVariableValuePairs, err = soap.MarshalString(StateVariableValuePairs); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { StateVariableList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_RenderingControl_2, "SetStateVariables", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if StateVariableList, err = soap.UnmarshalString(response.StateVariableList); err != nil { return } // END Unmarshal arguments from response. return } // ScheduledRecording1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ScheduledRecording:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ScheduledRecording1 struct { goupnp.ServiceClient } // NewScheduledRecording1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewScheduledRecording1Clients() (clients []*ScheduledRecording1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ScheduledRecording_1); err != nil { return } clients = newScheduledRecording1ClientsFromGenericClients(genericClients) return } // NewScheduledRecording1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewScheduledRecording1ClientsByURL(loc *url.URL) ([]*ScheduledRecording1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ScheduledRecording_1) if err != nil { return nil, err } return newScheduledRecording1ClientsFromGenericClients(genericClients), nil } // NewScheduledRecording1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewScheduledRecording1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ScheduledRecording1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ScheduledRecording_1) if err != nil { return nil, err } return newScheduledRecording1ClientsFromGenericClients(genericClients), nil } func newScheduledRecording1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ScheduledRecording1 { clients := make([]*ScheduledRecording1, len(genericClients)) for i := range genericClients { clients[i] = &ScheduledRecording1{genericClients[i]} } return clients } func (client *ScheduledRecording1) GetSortCapabilities() (SortCaps string, SortLevelCap uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortCaps string SortLevelCap string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetSortCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortCaps, err = soap.UnmarshalString(response.SortCaps); err != nil { return } if SortLevelCap, err = soap.UnmarshalUi4(response.SortLevelCap); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DataTypeID: allowed values: A_ARG_TYPE_RecordSchedule, A_ARG_TYPE_RecordTask, A_ARG_TYPE_RecordScheduleParts func (client *ScheduledRecording1) GetPropertyList(DataTypeID string) (PropertyList string, err error) { // Request structure. request := &struct { DataTypeID string }{} // BEGIN Marshal arguments into request. if request.DataTypeID, err = soap.MarshalString(DataTypeID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PropertyList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetPropertyList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PropertyList, err = soap.UnmarshalString(response.PropertyList); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DataTypeID: allowed values: A_ARG_TYPE_RecordSchedule, A_ARG_TYPE_RecordTask, A_ARG_TYPE_RecordScheduleParts func (client *ScheduledRecording1) GetAllowedValues(DataTypeID string, Filter string) (PropertyInfo string, err error) { // Request structure. request := &struct { DataTypeID string Filter string }{} // BEGIN Marshal arguments into request. if request.DataTypeID, err = soap.MarshalString(DataTypeID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PropertyInfo string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetAllowedValues", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PropertyInfo, err = soap.UnmarshalString(response.PropertyInfo); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) GetStateUpdateID() (Id uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Id string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetStateUpdateID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Id, err = soap.UnmarshalUi4(response.Id); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) BrowseRecordSchedules(Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "BrowseRecordSchedules", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) BrowseRecordTasks(RecordScheduleID string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { RecordScheduleID string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "BrowseRecordTasks", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) CreateRecordSchedule(Elements string) (RecordScheduleID string, Result string, UpdateID uint32, err error) { // Request structure. request := &struct { Elements string }{} // BEGIN Marshal arguments into request. if request.Elements, err = soap.MarshalString(Elements); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RecordScheduleID string Result string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "CreateRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RecordScheduleID, err = soap.UnmarshalString(response.RecordScheduleID); err != nil { return } if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) DeleteRecordSchedule(RecordScheduleID string) (err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "DeleteRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) GetRecordSchedule(RecordScheduleID string, Filter string) (Result string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordScheduleID string Filter string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) EnableRecordSchedule(RecordScheduleID string) (err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "EnableRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) DisableRecordSchedule(RecordScheduleID string) (err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "DisableRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) DeleteRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "DeleteRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) GetRecordTask(RecordTaskID string, Filter string) (Result string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordTaskID string Filter string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) EnableRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "EnableRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) DisableRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "DisableRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) ResetRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "ResetRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) GetRecordScheduleConflicts(RecordScheduleID string) (RecordScheduleConflictIDList string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RecordScheduleConflictIDList string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetRecordScheduleConflicts", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RecordScheduleConflictIDList, err = soap.UnmarshalString(response.RecordScheduleConflictIDList); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording1) GetRecordTaskConflicts(RecordTaskID string) (RecordTaskConflictIDList string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RecordTaskConflictIDList string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_1, "GetRecordTaskConflicts", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RecordTaskConflictIDList, err = soap.UnmarshalString(response.RecordTaskConflictIDList); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } // ScheduledRecording2 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:ScheduledRecording:2". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type ScheduledRecording2 struct { goupnp.ServiceClient } // NewScheduledRecording2Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewScheduledRecording2Clients() (clients []*ScheduledRecording2, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_ScheduledRecording_2); err != nil { return } clients = newScheduledRecording2ClientsFromGenericClients(genericClients) return } // NewScheduledRecording2ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewScheduledRecording2ClientsByURL(loc *url.URL) ([]*ScheduledRecording2, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_ScheduledRecording_2) if err != nil { return nil, err } return newScheduledRecording2ClientsFromGenericClients(genericClients), nil } // NewScheduledRecording2ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewScheduledRecording2ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*ScheduledRecording2, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_ScheduledRecording_2) if err != nil { return nil, err } return newScheduledRecording2ClientsFromGenericClients(genericClients), nil } func newScheduledRecording2ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*ScheduledRecording2 { clients := make([]*ScheduledRecording2, len(genericClients)) for i := range genericClients { clients[i] = &ScheduledRecording2{genericClients[i]} } return clients } func (client *ScheduledRecording2) GetSortCapabilities() (SortCaps string, SortLevelCap uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { SortCaps string SortLevelCap string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetSortCapabilities", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if SortCaps, err = soap.UnmarshalString(response.SortCaps); err != nil { return } if SortLevelCap, err = soap.UnmarshalUi4(response.SortLevelCap); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DataTypeID: allowed values: A_ARG_TYPE_RecordSchedule, A_ARG_TYPE_RecordTask, A_ARG_TYPE_RecordScheduleParts func (client *ScheduledRecording2) GetPropertyList(DataTypeID string) (PropertyList string, err error) { // Request structure. request := &struct { DataTypeID string }{} // BEGIN Marshal arguments into request. if request.DataTypeID, err = soap.MarshalString(DataTypeID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PropertyList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetPropertyList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PropertyList, err = soap.UnmarshalString(response.PropertyList); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * DataTypeID: allowed values: A_ARG_TYPE_RecordSchedule, A_ARG_TYPE_RecordTask, A_ARG_TYPE_RecordScheduleParts func (client *ScheduledRecording2) GetAllowedValues(DataTypeID string, Filter string) (PropertyInfo string, err error) { // Request structure. request := &struct { DataTypeID string Filter string }{} // BEGIN Marshal arguments into request. if request.DataTypeID, err = soap.MarshalString(DataTypeID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PropertyInfo string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetAllowedValues", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PropertyInfo, err = soap.UnmarshalString(response.PropertyInfo); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) GetStateUpdateID() (Id uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { Id string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetStateUpdateID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Id, err = soap.UnmarshalUi4(response.Id); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) BrowseRecordSchedules(Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "BrowseRecordSchedules", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) BrowseRecordTasks(RecordScheduleID string, Filter string, StartingIndex uint32, RequestedCount uint32, SortCriteria string) (Result string, NumberReturned uint32, TotalMatches uint32, UpdateID uint32, err error) { // Request structure. request := &struct { RecordScheduleID string Filter string StartingIndex string RequestedCount string SortCriteria string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } if request.StartingIndex, err = soap.MarshalUi4(StartingIndex); err != nil { return } if request.RequestedCount, err = soap.MarshalUi4(RequestedCount); err != nil { return } if request.SortCriteria, err = soap.MarshalString(SortCriteria); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string NumberReturned string TotalMatches string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "BrowseRecordTasks", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if NumberReturned, err = soap.UnmarshalUi4(response.NumberReturned); err != nil { return } if TotalMatches, err = soap.UnmarshalUi4(response.TotalMatches); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) CreateRecordSchedule(Elements string) (RecordScheduleID string, Result string, UpdateID uint32, err error) { // Request structure. request := &struct { Elements string }{} // BEGIN Marshal arguments into request. if request.Elements, err = soap.MarshalString(Elements); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RecordScheduleID string Result string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "CreateRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RecordScheduleID, err = soap.UnmarshalString(response.RecordScheduleID); err != nil { return } if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) DeleteRecordSchedule(RecordScheduleID string) (err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "DeleteRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) GetRecordSchedule(RecordScheduleID string, Filter string) (Result string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordScheduleID string Filter string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) EnableRecordSchedule(RecordScheduleID string) (err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "EnableRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) DisableRecordSchedule(RecordScheduleID string) (err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "DisableRecordSchedule", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) DeleteRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "DeleteRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) GetRecordTask(RecordTaskID string, Filter string) (Result string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordTaskID string Filter string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } if request.Filter, err = soap.MarshalString(Filter); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Result string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Result, err = soap.UnmarshalString(response.Result); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) EnableRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "EnableRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) DisableRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "DisableRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) ResetRecordTask(RecordTaskID string) (err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "ResetRecordTask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) GetRecordScheduleConflicts(RecordScheduleID string) (RecordScheduleConflictIDList string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordScheduleID string }{} // BEGIN Marshal arguments into request. if request.RecordScheduleID, err = soap.MarshalString(RecordScheduleID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RecordScheduleConflictIDList string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetRecordScheduleConflicts", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RecordScheduleConflictIDList, err = soap.UnmarshalString(response.RecordScheduleConflictIDList); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } func (client *ScheduledRecording2) GetRecordTaskConflicts(RecordTaskID string) (RecordTaskConflictIDList string, UpdateID uint32, err error) { // Request structure. request := &struct { RecordTaskID string }{} // BEGIN Marshal arguments into request. if request.RecordTaskID, err = soap.MarshalString(RecordTaskID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RecordTaskConflictIDList string UpdateID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_ScheduledRecording_2, "GetRecordTaskConflicts", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RecordTaskConflictIDList, err = soap.UnmarshalString(response.RecordTaskConflictIDList); err != nil { return } if UpdateID, err = soap.UnmarshalUi4(response.UpdateID); err != nil { return } // END Unmarshal arguments from response. return } goupnp-master/dcps/internetgateway1/0000755000175000017500000000000013165111724016530 5ustar freefreegoupnp-master/dcps/internetgateway1/internetgateway1.go0000644000175000017500000032534113165111724022362 0ustar freefree// Client for UPnP Device Control Protocol Internet Gateway Device v1. // // This DCP is documented in detail at: http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v1-Device.pdf // // Typically, use one of the New* functions to create clients for services. package internetgateway1 // Generated file - do not edit by hand. See README.md import ( "net/url" "time" "github.com/huin/goupnp" "github.com/huin/goupnp/soap" ) // Hack to avoid Go complaining if time isn't used. var _ time.Time // Device URNs: const ( URN_LANDevice_1 = "urn:schemas-upnp-org:device:LANDevice:1" URN_WANConnectionDevice_1 = "urn:schemas-upnp-org:device:WANConnectionDevice:1" URN_WANDevice_1 = "urn:schemas-upnp-org:device:WANDevice:1" ) // Service URNs: const ( URN_LANHostConfigManagement_1 = "urn:schemas-upnp-org:service:LANHostConfigManagement:1" URN_Layer3Forwarding_1 = "urn:schemas-upnp-org:service:Layer3Forwarding:1" URN_WANCableLinkConfig_1 = "urn:schemas-upnp-org:service:WANCableLinkConfig:1" URN_WANCommonInterfaceConfig_1 = "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" URN_WANDSLLinkConfig_1 = "urn:schemas-upnp-org:service:WANDSLLinkConfig:1" URN_WANEthernetLinkConfig_1 = "urn:schemas-upnp-org:service:WANEthernetLinkConfig:1" URN_WANIPConnection_1 = "urn:schemas-upnp-org:service:WANIPConnection:1" URN_WANPOTSLinkConfig_1 = "urn:schemas-upnp-org:service:WANPOTSLinkConfig:1" URN_WANPPPConnection_1 = "urn:schemas-upnp-org:service:WANPPPConnection:1" ) // LANHostConfigManagement1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:LANHostConfigManagement:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type LANHostConfigManagement1 struct { goupnp.ServiceClient } // NewLANHostConfigManagement1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewLANHostConfigManagement1Clients() (clients []*LANHostConfigManagement1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_LANHostConfigManagement_1); err != nil { return } clients = newLANHostConfigManagement1ClientsFromGenericClients(genericClients) return } // NewLANHostConfigManagement1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewLANHostConfigManagement1ClientsByURL(loc *url.URL) ([]*LANHostConfigManagement1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_LANHostConfigManagement_1) if err != nil { return nil, err } return newLANHostConfigManagement1ClientsFromGenericClients(genericClients), nil } // NewLANHostConfigManagement1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewLANHostConfigManagement1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*LANHostConfigManagement1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_LANHostConfigManagement_1) if err != nil { return nil, err } return newLANHostConfigManagement1ClientsFromGenericClients(genericClients), nil } func newLANHostConfigManagement1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*LANHostConfigManagement1 { clients := make([]*LANHostConfigManagement1, len(genericClients)) for i := range genericClients { clients[i] = &LANHostConfigManagement1{genericClients[i]} } return clients } func (client *LANHostConfigManagement1) SetDHCPServerConfigurable(NewDHCPServerConfigurable bool) (err error) { // Request structure. request := &struct { NewDHCPServerConfigurable string }{} // BEGIN Marshal arguments into request. if request.NewDHCPServerConfigurable, err = soap.MarshalBoolean(NewDHCPServerConfigurable); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDHCPServerConfigurable", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDHCPServerConfigurable() (NewDHCPServerConfigurable bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDHCPServerConfigurable string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDHCPServerConfigurable", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDHCPServerConfigurable, err = soap.UnmarshalBoolean(response.NewDHCPServerConfigurable); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetDHCPRelay(NewDHCPRelay bool) (err error) { // Request structure. request := &struct { NewDHCPRelay string }{} // BEGIN Marshal arguments into request. if request.NewDHCPRelay, err = soap.MarshalBoolean(NewDHCPRelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDHCPRelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDHCPRelay() (NewDHCPRelay bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDHCPRelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDHCPRelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDHCPRelay, err = soap.UnmarshalBoolean(response.NewDHCPRelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetSubnetMask(NewSubnetMask string) (err error) { // Request structure. request := &struct { NewSubnetMask string }{} // BEGIN Marshal arguments into request. if request.NewSubnetMask, err = soap.MarshalString(NewSubnetMask); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetSubnetMask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetSubnetMask() (NewSubnetMask string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewSubnetMask string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetSubnetMask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewSubnetMask, err = soap.UnmarshalString(response.NewSubnetMask); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetIPRouter(NewIPRouters string) (err error) { // Request structure. request := &struct { NewIPRouters string }{} // BEGIN Marshal arguments into request. if request.NewIPRouters, err = soap.MarshalString(NewIPRouters); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetIPRouter", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) DeleteIPRouter(NewIPRouters string) (err error) { // Request structure. request := &struct { NewIPRouters string }{} // BEGIN Marshal arguments into request. if request.NewIPRouters, err = soap.MarshalString(NewIPRouters); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "DeleteIPRouter", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetIPRoutersList() (NewIPRouters string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIPRouters string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetIPRoutersList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIPRouters, err = soap.UnmarshalString(response.NewIPRouters); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetDomainName(NewDomainName string) (err error) { // Request structure. request := &struct { NewDomainName string }{} // BEGIN Marshal arguments into request. if request.NewDomainName, err = soap.MarshalString(NewDomainName); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDomainName", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDomainName() (NewDomainName string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDomainName string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDomainName", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDomainName, err = soap.UnmarshalString(response.NewDomainName); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetAddressRange(NewMinAddress string, NewMaxAddress string) (err error) { // Request structure. request := &struct { NewMinAddress string NewMaxAddress string }{} // BEGIN Marshal arguments into request. if request.NewMinAddress, err = soap.MarshalString(NewMinAddress); err != nil { return } if request.NewMaxAddress, err = soap.MarshalString(NewMaxAddress); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetAddressRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetAddressRange() (NewMinAddress string, NewMaxAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewMinAddress string NewMaxAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetAddressRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewMinAddress, err = soap.UnmarshalString(response.NewMinAddress); err != nil { return } if NewMaxAddress, err = soap.UnmarshalString(response.NewMaxAddress); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetReservedAddress(NewReservedAddresses string) (err error) { // Request structure. request := &struct { NewReservedAddresses string }{} // BEGIN Marshal arguments into request. if request.NewReservedAddresses, err = soap.MarshalString(NewReservedAddresses); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetReservedAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) DeleteReservedAddress(NewReservedAddresses string) (err error) { // Request structure. request := &struct { NewReservedAddresses string }{} // BEGIN Marshal arguments into request. if request.NewReservedAddresses, err = soap.MarshalString(NewReservedAddresses); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "DeleteReservedAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetReservedAddresses() (NewReservedAddresses string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewReservedAddresses string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetReservedAddresses", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewReservedAddresses, err = soap.UnmarshalString(response.NewReservedAddresses); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetDNSServer(NewDNSServers string) (err error) { // Request structure. request := &struct { NewDNSServers string }{} // BEGIN Marshal arguments into request. if request.NewDNSServers, err = soap.MarshalString(NewDNSServers); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDNSServer", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) DeleteDNSServer(NewDNSServers string) (err error) { // Request structure. request := &struct { NewDNSServers string }{} // BEGIN Marshal arguments into request. if request.NewDNSServers, err = soap.MarshalString(NewDNSServers); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "DeleteDNSServer", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDNSServers() (NewDNSServers string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDNSServers string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDNSServers", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDNSServers, err = soap.UnmarshalString(response.NewDNSServers); err != nil { return } // END Unmarshal arguments from response. return } // Layer3Forwarding1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:Layer3Forwarding:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type Layer3Forwarding1 struct { goupnp.ServiceClient } // NewLayer3Forwarding1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewLayer3Forwarding1Clients() (clients []*Layer3Forwarding1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_Layer3Forwarding_1); err != nil { return } clients = newLayer3Forwarding1ClientsFromGenericClients(genericClients) return } // NewLayer3Forwarding1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewLayer3Forwarding1ClientsByURL(loc *url.URL) ([]*Layer3Forwarding1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_Layer3Forwarding_1) if err != nil { return nil, err } return newLayer3Forwarding1ClientsFromGenericClients(genericClients), nil } // NewLayer3Forwarding1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewLayer3Forwarding1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*Layer3Forwarding1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_Layer3Forwarding_1) if err != nil { return nil, err } return newLayer3Forwarding1ClientsFromGenericClients(genericClients), nil } func newLayer3Forwarding1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*Layer3Forwarding1 { clients := make([]*Layer3Forwarding1, len(genericClients)) for i := range genericClients { clients[i] = &Layer3Forwarding1{genericClients[i]} } return clients } func (client *Layer3Forwarding1) SetDefaultConnectionService(NewDefaultConnectionService string) (err error) { // Request structure. request := &struct { NewDefaultConnectionService string }{} // BEGIN Marshal arguments into request. if request.NewDefaultConnectionService, err = soap.MarshalString(NewDefaultConnectionService); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_Layer3Forwarding_1, "SetDefaultConnectionService", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *Layer3Forwarding1) GetDefaultConnectionService() (NewDefaultConnectionService string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDefaultConnectionService string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_Layer3Forwarding_1, "GetDefaultConnectionService", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDefaultConnectionService, err = soap.UnmarshalString(response.NewDefaultConnectionService); err != nil { return } // END Unmarshal arguments from response. return } // WANCableLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANCableLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANCableLinkConfig1 struct { goupnp.ServiceClient } // NewWANCableLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANCableLinkConfig1Clients() (clients []*WANCableLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANCableLinkConfig_1); err != nil { return } clients = newWANCableLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANCableLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANCableLinkConfig1ClientsByURL(loc *url.URL) ([]*WANCableLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANCableLinkConfig_1) if err != nil { return nil, err } return newWANCableLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANCableLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANCableLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANCableLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANCableLinkConfig_1) if err != nil { return nil, err } return newWANCableLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANCableLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANCableLinkConfig1 { clients := make([]*WANCableLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANCableLinkConfig1{genericClients[i]} } return clients } // // Return values: // // * NewCableLinkConfigState: allowed values: notReady, dsSyncComplete, usParamAcquired, rangingComplete, ipComplete, todEstablished, paramTransferComplete, registrationComplete, operational, accessDenied // // * NewLinkType: allowed values: Ethernet func (client *WANCableLinkConfig1) GetCableLinkConfigInfo() (NewCableLinkConfigState string, NewLinkType string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewCableLinkConfigState string NewLinkType string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetCableLinkConfigInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewCableLinkConfigState, err = soap.UnmarshalString(response.NewCableLinkConfigState); err != nil { return } if NewLinkType, err = soap.UnmarshalString(response.NewLinkType); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetDownstreamFrequency() (NewDownstreamFrequency uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDownstreamFrequency string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetDownstreamFrequency", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDownstreamFrequency, err = soap.UnmarshalUi4(response.NewDownstreamFrequency); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewDownstreamModulation: allowed values: 64QAM, 256QAM func (client *WANCableLinkConfig1) GetDownstreamModulation() (NewDownstreamModulation string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDownstreamModulation string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetDownstreamModulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDownstreamModulation, err = soap.UnmarshalString(response.NewDownstreamModulation); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetUpstreamFrequency() (NewUpstreamFrequency uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamFrequency string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamFrequency", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamFrequency, err = soap.UnmarshalUi4(response.NewUpstreamFrequency); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewUpstreamModulation: allowed values: QPSK, 16QAM func (client *WANCableLinkConfig1) GetUpstreamModulation() (NewUpstreamModulation string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamModulation string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamModulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamModulation, err = soap.UnmarshalString(response.NewUpstreamModulation); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetUpstreamChannelID() (NewUpstreamChannelID uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamChannelID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamChannelID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamChannelID, err = soap.UnmarshalUi4(response.NewUpstreamChannelID); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetUpstreamPowerLevel() (NewUpstreamPowerLevel uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamPowerLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamPowerLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamPowerLevel, err = soap.UnmarshalUi4(response.NewUpstreamPowerLevel); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetBPIEncryptionEnabled() (NewBPIEncryptionEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewBPIEncryptionEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetBPIEncryptionEnabled", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewBPIEncryptionEnabled, err = soap.UnmarshalBoolean(response.NewBPIEncryptionEnabled); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetConfigFile() (NewConfigFile string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConfigFile string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetConfigFile", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConfigFile, err = soap.UnmarshalString(response.NewConfigFile); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetTFTPServer() (NewTFTPServer string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTFTPServer string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetTFTPServer", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTFTPServer, err = soap.UnmarshalString(response.NewTFTPServer); err != nil { return } // END Unmarshal arguments from response. return } // WANCommonInterfaceConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANCommonInterfaceConfig1 struct { goupnp.ServiceClient } // NewWANCommonInterfaceConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANCommonInterfaceConfig1Clients() (clients []*WANCommonInterfaceConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANCommonInterfaceConfig_1); err != nil { return } clients = newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients) return } // NewWANCommonInterfaceConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANCommonInterfaceConfig1ClientsByURL(loc *url.URL) ([]*WANCommonInterfaceConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANCommonInterfaceConfig_1) if err != nil { return nil, err } return newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients), nil } // NewWANCommonInterfaceConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANCommonInterfaceConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANCommonInterfaceConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANCommonInterfaceConfig_1) if err != nil { return nil, err } return newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients), nil } func newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANCommonInterfaceConfig1 { clients := make([]*WANCommonInterfaceConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANCommonInterfaceConfig1{genericClients[i]} } return clients } func (client *WANCommonInterfaceConfig1) SetEnabledForInternet(NewEnabledForInternet bool) (err error) { // Request structure. request := &struct { NewEnabledForInternet string }{} // BEGIN Marshal arguments into request. if request.NewEnabledForInternet, err = soap.MarshalBoolean(NewEnabledForInternet); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "SetEnabledForInternet", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetEnabledForInternet() (NewEnabledForInternet bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewEnabledForInternet string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetEnabledForInternet", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewEnabledForInternet, err = soap.UnmarshalBoolean(response.NewEnabledForInternet); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewWANAccessType: allowed values: DSL, POTS, Cable, Ethernet // // * NewPhysicalLinkStatus: allowed values: Up, Down func (client *WANCommonInterfaceConfig1) GetCommonLinkProperties() (NewWANAccessType string, NewLayer1UpstreamMaxBitRate uint32, NewLayer1DownstreamMaxBitRate uint32, NewPhysicalLinkStatus string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWANAccessType string NewLayer1UpstreamMaxBitRate string NewLayer1DownstreamMaxBitRate string NewPhysicalLinkStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetCommonLinkProperties", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWANAccessType, err = soap.UnmarshalString(response.NewWANAccessType); err != nil { return } if NewLayer1UpstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewLayer1UpstreamMaxBitRate); err != nil { return } if NewLayer1DownstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewLayer1DownstreamMaxBitRate); err != nil { return } if NewPhysicalLinkStatus, err = soap.UnmarshalString(response.NewPhysicalLinkStatus); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetWANAccessProvider() (NewWANAccessProvider string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWANAccessProvider string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetWANAccessProvider", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWANAccessProvider, err = soap.UnmarshalString(response.NewWANAccessProvider); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewMaximumActiveConnections: allowed value range: minimum=1, step=1 func (client *WANCommonInterfaceConfig1) GetMaximumActiveConnections() (NewMaximumActiveConnections uint16, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewMaximumActiveConnections string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetMaximumActiveConnections", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewMaximumActiveConnections, err = soap.UnmarshalUi2(response.NewMaximumActiveConnections); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalBytesSent() (NewTotalBytesSent uint64, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalBytesSent string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalBytesSent", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalBytesSent, err = soap.UnmarshalUi8(response.NewTotalBytesSent); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalBytesReceived() (NewTotalBytesReceived uint64, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalBytesReceived string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalBytesReceived", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalBytesReceived, err = soap.UnmarshalUi8(response.NewTotalBytesReceived); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalPacketsSent() (NewTotalPacketsSent uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalPacketsSent string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalPacketsSent", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalPacketsSent, err = soap.UnmarshalUi4(response.NewTotalPacketsSent); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalPacketsReceived() (NewTotalPacketsReceived uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalPacketsReceived string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalPacketsReceived", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalPacketsReceived, err = soap.UnmarshalUi4(response.NewTotalPacketsReceived); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetActiveConnection(NewActiveConnectionIndex uint16) (NewActiveConnDeviceContainer string, NewActiveConnectionServiceID string, err error) { // Request structure. request := &struct { NewActiveConnectionIndex string }{} // BEGIN Marshal arguments into request. if request.NewActiveConnectionIndex, err = soap.MarshalUi2(NewActiveConnectionIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewActiveConnDeviceContainer string NewActiveConnectionServiceID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetActiveConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewActiveConnDeviceContainer, err = soap.UnmarshalString(response.NewActiveConnDeviceContainer); err != nil { return } if NewActiveConnectionServiceID, err = soap.UnmarshalString(response.NewActiveConnectionServiceID); err != nil { return } // END Unmarshal arguments from response. return } // WANDSLLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANDSLLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANDSLLinkConfig1 struct { goupnp.ServiceClient } // NewWANDSLLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANDSLLinkConfig1Clients() (clients []*WANDSLLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANDSLLinkConfig_1); err != nil { return } clients = newWANDSLLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANDSLLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANDSLLinkConfig1ClientsByURL(loc *url.URL) ([]*WANDSLLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANDSLLinkConfig_1) if err != nil { return nil, err } return newWANDSLLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANDSLLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANDSLLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANDSLLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANDSLLinkConfig_1) if err != nil { return nil, err } return newWANDSLLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANDSLLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANDSLLinkConfig1 { clients := make([]*WANDSLLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANDSLLinkConfig1{genericClients[i]} } return clients } func (client *WANDSLLinkConfig1) SetDSLLinkType(NewLinkType string) (err error) { // Request structure. request := &struct { NewLinkType string }{} // BEGIN Marshal arguments into request. if request.NewLinkType, err = soap.MarshalString(NewLinkType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetDSLLinkType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewLinkStatus: allowed values: Up, Down func (client *WANDSLLinkConfig1) GetDSLLinkInfo() (NewLinkType string, NewLinkStatus string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewLinkType string NewLinkStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetDSLLinkInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewLinkType, err = soap.UnmarshalString(response.NewLinkType); err != nil { return } if NewLinkStatus, err = soap.UnmarshalString(response.NewLinkStatus); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetAutoConfig() (NewAutoConfig bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoConfig string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetAutoConfig", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoConfig, err = soap.UnmarshalBoolean(response.NewAutoConfig); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetModulationType() (NewModulationType string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewModulationType string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetModulationType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewModulationType, err = soap.UnmarshalString(response.NewModulationType); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) SetDestinationAddress(NewDestinationAddress string) (err error) { // Request structure. request := &struct { NewDestinationAddress string }{} // BEGIN Marshal arguments into request. if request.NewDestinationAddress, err = soap.MarshalString(NewDestinationAddress); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetDestinationAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetDestinationAddress() (NewDestinationAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDestinationAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetDestinationAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDestinationAddress, err = soap.UnmarshalString(response.NewDestinationAddress); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) SetATMEncapsulation(NewATMEncapsulation string) (err error) { // Request structure. request := &struct { NewATMEncapsulation string }{} // BEGIN Marshal arguments into request. if request.NewATMEncapsulation, err = soap.MarshalString(NewATMEncapsulation); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetATMEncapsulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetATMEncapsulation() (NewATMEncapsulation string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewATMEncapsulation string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetATMEncapsulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewATMEncapsulation, err = soap.UnmarshalString(response.NewATMEncapsulation); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) SetFCSPreserved(NewFCSPreserved bool) (err error) { // Request structure. request := &struct { NewFCSPreserved string }{} // BEGIN Marshal arguments into request. if request.NewFCSPreserved, err = soap.MarshalBoolean(NewFCSPreserved); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetFCSPreserved", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetFCSPreserved() (NewFCSPreserved bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewFCSPreserved string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetFCSPreserved", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewFCSPreserved, err = soap.UnmarshalBoolean(response.NewFCSPreserved); err != nil { return } // END Unmarshal arguments from response. return } // WANEthernetLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANEthernetLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANEthernetLinkConfig1 struct { goupnp.ServiceClient } // NewWANEthernetLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANEthernetLinkConfig1Clients() (clients []*WANEthernetLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANEthernetLinkConfig_1); err != nil { return } clients = newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANEthernetLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANEthernetLinkConfig1ClientsByURL(loc *url.URL) ([]*WANEthernetLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANEthernetLinkConfig_1) if err != nil { return nil, err } return newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANEthernetLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANEthernetLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANEthernetLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANEthernetLinkConfig_1) if err != nil { return nil, err } return newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANEthernetLinkConfig1 { clients := make([]*WANEthernetLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANEthernetLinkConfig1{genericClients[i]} } return clients } // // Return values: // // * NewEthernetLinkStatus: allowed values: Up, Down func (client *WANEthernetLinkConfig1) GetEthernetLinkStatus() (NewEthernetLinkStatus string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewEthernetLinkStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANEthernetLinkConfig_1, "GetEthernetLinkStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewEthernetLinkStatus, err = soap.UnmarshalString(response.NewEthernetLinkStatus); err != nil { return } // END Unmarshal arguments from response. return } // WANIPConnection1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANIPConnection:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANIPConnection1 struct { goupnp.ServiceClient } // NewWANIPConnection1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANIPConnection1Clients() (clients []*WANIPConnection1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANIPConnection_1); err != nil { return } clients = newWANIPConnection1ClientsFromGenericClients(genericClients) return } // NewWANIPConnection1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANIPConnection1ClientsByURL(loc *url.URL) ([]*WANIPConnection1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANIPConnection_1) if err != nil { return nil, err } return newWANIPConnection1ClientsFromGenericClients(genericClients), nil } // NewWANIPConnection1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANIPConnection1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANIPConnection1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANIPConnection_1) if err != nil { return nil, err } return newWANIPConnection1ClientsFromGenericClients(genericClients), nil } func newWANIPConnection1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANIPConnection1 { clients := make([]*WANIPConnection1, len(genericClients)) for i := range genericClients { clients[i] = &WANIPConnection1{genericClients[i]} } return clients } func (client *WANIPConnection1) SetConnectionType(NewConnectionType string) (err error) { // Request structure. request := &struct { NewConnectionType string }{} // BEGIN Marshal arguments into request. if request.NewConnectionType, err = soap.MarshalString(NewConnectionType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetConnectionType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewPossibleConnectionTypes: allowed values: Unconfigured, IP_Routed, IP_Bridged func (client *WANIPConnection1) GetConnectionTypeInfo() (NewConnectionType string, NewPossibleConnectionTypes string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionType string NewPossibleConnectionTypes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetConnectionTypeInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionType, err = soap.UnmarshalString(response.NewConnectionType); err != nil { return } if NewPossibleConnectionTypes, err = soap.UnmarshalString(response.NewPossibleConnectionTypes); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) RequestConnection() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "RequestConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) RequestTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "RequestTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) ForceTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "ForceTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) SetAutoDisconnectTime(NewAutoDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewAutoDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewAutoDisconnectTime, err = soap.MarshalUi4(NewAutoDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) SetIdleDisconnectTime(NewIdleDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewIdleDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewIdleDisconnectTime, err = soap.MarshalUi4(NewIdleDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) SetWarnDisconnectDelay(NewWarnDisconnectDelay uint32) (err error) { // Request structure. request := &struct { NewWarnDisconnectDelay string }{} // BEGIN Marshal arguments into request. if request.NewWarnDisconnectDelay, err = soap.MarshalUi4(NewWarnDisconnectDelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewConnectionStatus: allowed values: Unconfigured, Connected, Disconnected // // * NewLastConnectionError: allowed values: ERROR_NONE func (client *WANIPConnection1) GetStatusInfo() (NewConnectionStatus string, NewLastConnectionError string, NewUptime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionStatus string NewLastConnectionError string NewUptime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetStatusInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionStatus, err = soap.UnmarshalString(response.NewConnectionStatus); err != nil { return } if NewLastConnectionError, err = soap.UnmarshalString(response.NewLastConnectionError); err != nil { return } if NewUptime, err = soap.UnmarshalUi4(response.NewUptime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetAutoDisconnectTime() (NewAutoDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoDisconnectTime, err = soap.UnmarshalUi4(response.NewAutoDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetIdleDisconnectTime() (NewIdleDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIdleDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIdleDisconnectTime, err = soap.UnmarshalUi4(response.NewIdleDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetWarnDisconnectDelay() (NewWarnDisconnectDelay uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWarnDisconnectDelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWarnDisconnectDelay, err = soap.UnmarshalUi4(response.NewWarnDisconnectDelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetNATRSIPStatus() (NewRSIPAvailable bool, NewNATEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewRSIPAvailable string NewNATEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetNATRSIPStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRSIPAvailable, err = soap.UnmarshalBoolean(response.NewRSIPAvailable); err != nil { return } if NewNATEnabled, err = soap.UnmarshalBoolean(response.NewNATEnabled); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) GetGenericPortMappingEntry(NewPortMappingIndex uint16) (NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewPortMappingIndex string }{} // BEGIN Marshal arguments into request. if request.NewPortMappingIndex, err = soap.MarshalUi2(NewPortMappingIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetGenericPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRemoteHost, err = soap.UnmarshalString(response.NewRemoteHost); err != nil { return } if NewExternalPort, err = soap.UnmarshalUi2(response.NewExternalPort); err != nil { return } if NewProtocol, err = soap.UnmarshalString(response.NewProtocol); err != nil { return } if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) GetSpecificPortMappingEntry(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetSpecificPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) AddPortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewInternalPort, err = soap.MarshalUi2(NewInternalPort); err != nil { return } if request.NewInternalClient, err = soap.MarshalString(NewInternalClient); err != nil { return } if request.NewEnabled, err = soap.MarshalBoolean(NewEnabled); err != nil { return } if request.NewPortMappingDescription, err = soap.MarshalString(NewPortMappingDescription); err != nil { return } if request.NewLeaseDuration, err = soap.MarshalUi4(NewLeaseDuration); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "AddPortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) DeletePortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "DeletePortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetExternalIPAddress() (NewExternalIPAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewExternalIPAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetExternalIPAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewExternalIPAddress, err = soap.UnmarshalString(response.NewExternalIPAddress); err != nil { return } // END Unmarshal arguments from response. return } // WANPOTSLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANPOTSLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANPOTSLinkConfig1 struct { goupnp.ServiceClient } // NewWANPOTSLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANPOTSLinkConfig1Clients() (clients []*WANPOTSLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANPOTSLinkConfig_1); err != nil { return } clients = newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANPOTSLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANPOTSLinkConfig1ClientsByURL(loc *url.URL) ([]*WANPOTSLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANPOTSLinkConfig_1) if err != nil { return nil, err } return newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANPOTSLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANPOTSLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANPOTSLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANPOTSLinkConfig_1) if err != nil { return nil, err } return newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANPOTSLinkConfig1 { clients := make([]*WANPOTSLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANPOTSLinkConfig1{genericClients[i]} } return clients } // // Arguments: // // * NewLinkType: allowed values: PPP_Dialup func (client *WANPOTSLinkConfig1) SetISPInfo(NewISPPhoneNumber string, NewISPInfo string, NewLinkType string) (err error) { // Request structure. request := &struct { NewISPPhoneNumber string NewISPInfo string NewLinkType string }{} // BEGIN Marshal arguments into request. if request.NewISPPhoneNumber, err = soap.MarshalString(NewISPPhoneNumber); err != nil { return } if request.NewISPInfo, err = soap.MarshalString(NewISPInfo); err != nil { return } if request.NewLinkType, err = soap.MarshalString(NewLinkType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "SetISPInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) SetCallRetryInfo(NewNumberOfRetries uint32, NewDelayBetweenRetries uint32) (err error) { // Request structure. request := &struct { NewNumberOfRetries string NewDelayBetweenRetries string }{} // BEGIN Marshal arguments into request. if request.NewNumberOfRetries, err = soap.MarshalUi4(NewNumberOfRetries); err != nil { return } if request.NewDelayBetweenRetries, err = soap.MarshalUi4(NewDelayBetweenRetries); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "SetCallRetryInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewLinkType: allowed values: PPP_Dialup func (client *WANPOTSLinkConfig1) GetISPInfo() (NewISPPhoneNumber string, NewISPInfo string, NewLinkType string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewISPPhoneNumber string NewISPInfo string NewLinkType string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetISPInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewISPPhoneNumber, err = soap.UnmarshalString(response.NewISPPhoneNumber); err != nil { return } if NewISPInfo, err = soap.UnmarshalString(response.NewISPInfo); err != nil { return } if NewLinkType, err = soap.UnmarshalString(response.NewLinkType); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetCallRetryInfo() (NewNumberOfRetries uint32, NewDelayBetweenRetries uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewNumberOfRetries string NewDelayBetweenRetries string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetCallRetryInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewNumberOfRetries, err = soap.UnmarshalUi4(response.NewNumberOfRetries); err != nil { return } if NewDelayBetweenRetries, err = soap.UnmarshalUi4(response.NewDelayBetweenRetries); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetFclass() (NewFclass string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewFclass string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetFclass", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewFclass, err = soap.UnmarshalString(response.NewFclass); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetDataModulationSupported() (NewDataModulationSupported string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDataModulationSupported string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetDataModulationSupported", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDataModulationSupported, err = soap.UnmarshalString(response.NewDataModulationSupported); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetDataProtocol() (NewDataProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDataProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetDataProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDataProtocol, err = soap.UnmarshalString(response.NewDataProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetDataCompression() (NewDataCompression string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDataCompression string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetDataCompression", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDataCompression, err = soap.UnmarshalString(response.NewDataCompression); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetPlusVTRCommandSupported() (NewPlusVTRCommandSupported bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPlusVTRCommandSupported string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetPlusVTRCommandSupported", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPlusVTRCommandSupported, err = soap.UnmarshalBoolean(response.NewPlusVTRCommandSupported); err != nil { return } // END Unmarshal arguments from response. return } // WANPPPConnection1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANPPPConnection:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANPPPConnection1 struct { goupnp.ServiceClient } // NewWANPPPConnection1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANPPPConnection1Clients() (clients []*WANPPPConnection1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANPPPConnection_1); err != nil { return } clients = newWANPPPConnection1ClientsFromGenericClients(genericClients) return } // NewWANPPPConnection1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANPPPConnection1ClientsByURL(loc *url.URL) ([]*WANPPPConnection1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANPPPConnection_1) if err != nil { return nil, err } return newWANPPPConnection1ClientsFromGenericClients(genericClients), nil } // NewWANPPPConnection1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANPPPConnection1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANPPPConnection1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANPPPConnection_1) if err != nil { return nil, err } return newWANPPPConnection1ClientsFromGenericClients(genericClients), nil } func newWANPPPConnection1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANPPPConnection1 { clients := make([]*WANPPPConnection1, len(genericClients)) for i := range genericClients { clients[i] = &WANPPPConnection1{genericClients[i]} } return clients } func (client *WANPPPConnection1) SetConnectionType(NewConnectionType string) (err error) { // Request structure. request := &struct { NewConnectionType string }{} // BEGIN Marshal arguments into request. if request.NewConnectionType, err = soap.MarshalString(NewConnectionType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetConnectionType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewPossibleConnectionTypes: allowed values: Unconfigured, IP_Routed, DHCP_Spoofed, PPPoE_Bridged, PPTP_Relay, L2TP_Relay, PPPoE_Relay func (client *WANPPPConnection1) GetConnectionTypeInfo() (NewConnectionType string, NewPossibleConnectionTypes string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionType string NewPossibleConnectionTypes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetConnectionTypeInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionType, err = soap.UnmarshalString(response.NewConnectionType); err != nil { return } if NewPossibleConnectionTypes, err = soap.UnmarshalString(response.NewPossibleConnectionTypes); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) ConfigureConnection(NewUserName string, NewPassword string) (err error) { // Request structure. request := &struct { NewUserName string NewPassword string }{} // BEGIN Marshal arguments into request. if request.NewUserName, err = soap.MarshalString(NewUserName); err != nil { return } if request.NewPassword, err = soap.MarshalString(NewPassword); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "ConfigureConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) RequestConnection() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "RequestConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) RequestTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "RequestTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) ForceTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "ForceTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) SetAutoDisconnectTime(NewAutoDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewAutoDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewAutoDisconnectTime, err = soap.MarshalUi4(NewAutoDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) SetIdleDisconnectTime(NewIdleDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewIdleDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewIdleDisconnectTime, err = soap.MarshalUi4(NewIdleDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) SetWarnDisconnectDelay(NewWarnDisconnectDelay uint32) (err error) { // Request structure. request := &struct { NewWarnDisconnectDelay string }{} // BEGIN Marshal arguments into request. if request.NewWarnDisconnectDelay, err = soap.MarshalUi4(NewWarnDisconnectDelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewConnectionStatus: allowed values: Unconfigured, Connected, Disconnected // // * NewLastConnectionError: allowed values: ERROR_NONE func (client *WANPPPConnection1) GetStatusInfo() (NewConnectionStatus string, NewLastConnectionError string, NewUptime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionStatus string NewLastConnectionError string NewUptime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetStatusInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionStatus, err = soap.UnmarshalString(response.NewConnectionStatus); err != nil { return } if NewLastConnectionError, err = soap.UnmarshalString(response.NewLastConnectionError); err != nil { return } if NewUptime, err = soap.UnmarshalUi4(response.NewUptime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetLinkLayerMaxBitRates() (NewUpstreamMaxBitRate uint32, NewDownstreamMaxBitRate uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamMaxBitRate string NewDownstreamMaxBitRate string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetLinkLayerMaxBitRates", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewUpstreamMaxBitRate); err != nil { return } if NewDownstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewDownstreamMaxBitRate); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPPPEncryptionProtocol() (NewPPPEncryptionProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPPPEncryptionProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPPPEncryptionProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPPPEncryptionProtocol, err = soap.UnmarshalString(response.NewPPPEncryptionProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPPPCompressionProtocol() (NewPPPCompressionProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPPPCompressionProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPPPCompressionProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPPPCompressionProtocol, err = soap.UnmarshalString(response.NewPPPCompressionProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPPPAuthenticationProtocol() (NewPPPAuthenticationProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPPPAuthenticationProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPPPAuthenticationProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPPPAuthenticationProtocol, err = soap.UnmarshalString(response.NewPPPAuthenticationProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetUserName() (NewUserName string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUserName string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetUserName", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUserName, err = soap.UnmarshalString(response.NewUserName); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPassword() (NewPassword string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPassword string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPassword", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPassword, err = soap.UnmarshalString(response.NewPassword); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetAutoDisconnectTime() (NewAutoDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoDisconnectTime, err = soap.UnmarshalUi4(response.NewAutoDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetIdleDisconnectTime() (NewIdleDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIdleDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIdleDisconnectTime, err = soap.UnmarshalUi4(response.NewIdleDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetWarnDisconnectDelay() (NewWarnDisconnectDelay uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWarnDisconnectDelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWarnDisconnectDelay, err = soap.UnmarshalUi4(response.NewWarnDisconnectDelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetNATRSIPStatus() (NewRSIPAvailable bool, NewNATEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewRSIPAvailable string NewNATEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetNATRSIPStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRSIPAvailable, err = soap.UnmarshalBoolean(response.NewRSIPAvailable); err != nil { return } if NewNATEnabled, err = soap.UnmarshalBoolean(response.NewNATEnabled); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) GetGenericPortMappingEntry(NewPortMappingIndex uint16) (NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewPortMappingIndex string }{} // BEGIN Marshal arguments into request. if request.NewPortMappingIndex, err = soap.MarshalUi2(NewPortMappingIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetGenericPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRemoteHost, err = soap.UnmarshalString(response.NewRemoteHost); err != nil { return } if NewExternalPort, err = soap.UnmarshalUi2(response.NewExternalPort); err != nil { return } if NewProtocol, err = soap.UnmarshalString(response.NewProtocol); err != nil { return } if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) GetSpecificPortMappingEntry(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetSpecificPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) AddPortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewInternalPort, err = soap.MarshalUi2(NewInternalPort); err != nil { return } if request.NewInternalClient, err = soap.MarshalString(NewInternalClient); err != nil { return } if request.NewEnabled, err = soap.MarshalBoolean(NewEnabled); err != nil { return } if request.NewPortMappingDescription, err = soap.MarshalString(NewPortMappingDescription); err != nil { return } if request.NewLeaseDuration, err = soap.MarshalUi4(NewLeaseDuration); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "AddPortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) DeletePortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "DeletePortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetExternalIPAddress() (NewExternalIPAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewExternalIPAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetExternalIPAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewExternalIPAddress, err = soap.UnmarshalString(response.NewExternalIPAddress); err != nil { return } // END Unmarshal arguments from response. return } goupnp-master/dcps/internetgateway2/0000755000175000017500000000000013165111724016531 5ustar freefreegoupnp-master/dcps/internetgateway2/internetgateway2.go0000644000175000017500000046016513165111724022370 0ustar freefree// Client for UPnP Device Control Protocol Internet Gateway Device v2. // // This DCP is documented in detail at: http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v2-Device.pdf // // Typically, use one of the New* functions to create clients for services. package internetgateway2 // Generated file - do not edit by hand. See README.md import ( "net/url" "time" "github.com/huin/goupnp" "github.com/huin/goupnp/soap" ) // Hack to avoid Go complaining if time isn't used. var _ time.Time // Device URNs: const ( URN_LANDevice_1 = "urn:schemas-upnp-org:device:LANDevice:1" URN_WANConnectionDevice_1 = "urn:schemas-upnp-org:device:WANConnectionDevice:1" URN_WANConnectionDevice_2 = "urn:schemas-upnp-org:device:WANConnectionDevice:2" URN_WANDevice_1 = "urn:schemas-upnp-org:device:WANDevice:1" URN_WANDevice_2 = "urn:schemas-upnp-org:device:WANDevice:2" ) // Service URNs: const ( URN_DeviceProtection_1 = "urn:schemas-upnp-org:service:DeviceProtection:1" URN_LANHostConfigManagement_1 = "urn:schemas-upnp-org:service:LANHostConfigManagement:1" URN_Layer3Forwarding_1 = "urn:schemas-upnp-org:service:Layer3Forwarding:1" URN_WANCableLinkConfig_1 = "urn:schemas-upnp-org:service:WANCableLinkConfig:1" URN_WANCommonInterfaceConfig_1 = "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" URN_WANDSLLinkConfig_1 = "urn:schemas-upnp-org:service:WANDSLLinkConfig:1" URN_WANEthernetLinkConfig_1 = "urn:schemas-upnp-org:service:WANEthernetLinkConfig:1" URN_WANIPConnection_1 = "urn:schemas-upnp-org:service:WANIPConnection:1" URN_WANIPConnection_2 = "urn:schemas-upnp-org:service:WANIPConnection:2" URN_WANIPv6FirewallControl_1 = "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" URN_WANPOTSLinkConfig_1 = "urn:schemas-upnp-org:service:WANPOTSLinkConfig:1" URN_WANPPPConnection_1 = "urn:schemas-upnp-org:service:WANPPPConnection:1" ) // DeviceProtection1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:DeviceProtection:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type DeviceProtection1 struct { goupnp.ServiceClient } // NewDeviceProtection1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewDeviceProtection1Clients() (clients []*DeviceProtection1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_DeviceProtection_1); err != nil { return } clients = newDeviceProtection1ClientsFromGenericClients(genericClients) return } // NewDeviceProtection1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewDeviceProtection1ClientsByURL(loc *url.URL) ([]*DeviceProtection1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_DeviceProtection_1) if err != nil { return nil, err } return newDeviceProtection1ClientsFromGenericClients(genericClients), nil } // NewDeviceProtection1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewDeviceProtection1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*DeviceProtection1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_DeviceProtection_1) if err != nil { return nil, err } return newDeviceProtection1ClientsFromGenericClients(genericClients), nil } func newDeviceProtection1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*DeviceProtection1 { clients := make([]*DeviceProtection1, len(genericClients)) for i := range genericClients { clients[i] = &DeviceProtection1{genericClients[i]} } return clients } func (client *DeviceProtection1) SendSetupMessage(ProtocolType string, InMessage []byte) (OutMessage []byte, err error) { // Request structure. request := &struct { ProtocolType string InMessage string }{} // BEGIN Marshal arguments into request. if request.ProtocolType, err = soap.MarshalString(ProtocolType); err != nil { return } if request.InMessage, err = soap.MarshalBinBase64(InMessage); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { OutMessage string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "SendSetupMessage", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if OutMessage, err = soap.UnmarshalBinBase64(response.OutMessage); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) GetSupportedProtocols() (ProtocolList string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { ProtocolList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "GetSupportedProtocols", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ProtocolList, err = soap.UnmarshalString(response.ProtocolList); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) GetAssignedRoles() (RoleList string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { RoleList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "GetAssignedRoles", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RoleList, err = soap.UnmarshalString(response.RoleList); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) GetRolesForAction(DeviceUDN string, ServiceId string, ActionName string) (RoleList string, RestrictedRoleList string, err error) { // Request structure. request := &struct { DeviceUDN string ServiceId string ActionName string }{} // BEGIN Marshal arguments into request. if request.DeviceUDN, err = soap.MarshalString(DeviceUDN); err != nil { return } if request.ServiceId, err = soap.MarshalString(ServiceId); err != nil { return } if request.ActionName, err = soap.MarshalString(ActionName); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { RoleList string RestrictedRoleList string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "GetRolesForAction", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if RoleList, err = soap.UnmarshalString(response.RoleList); err != nil { return } if RestrictedRoleList, err = soap.UnmarshalString(response.RestrictedRoleList); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) GetUserLoginChallenge(ProtocolType string, Name string) (Salt []byte, Challenge []byte, err error) { // Request structure. request := &struct { ProtocolType string Name string }{} // BEGIN Marshal arguments into request. if request.ProtocolType, err = soap.MarshalString(ProtocolType); err != nil { return } if request.Name, err = soap.MarshalString(Name); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { Salt string Challenge string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "GetUserLoginChallenge", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if Salt, err = soap.UnmarshalBinBase64(response.Salt); err != nil { return } if Challenge, err = soap.UnmarshalBinBase64(response.Challenge); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) UserLogin(ProtocolType string, Challenge []byte, Authenticator []byte) (err error) { // Request structure. request := &struct { ProtocolType string Challenge string Authenticator string }{} // BEGIN Marshal arguments into request. if request.ProtocolType, err = soap.MarshalString(ProtocolType); err != nil { return } if request.Challenge, err = soap.MarshalBinBase64(Challenge); err != nil { return } if request.Authenticator, err = soap.MarshalBinBase64(Authenticator); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "UserLogin", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *DeviceProtection1) UserLogout() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "UserLogout", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *DeviceProtection1) GetACLData() (ACL string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { ACL string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "GetACLData", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if ACL, err = soap.UnmarshalString(response.ACL); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) AddIdentityList(IdentityList string) (IdentityListResult string, err error) { // Request structure. request := &struct { IdentityList string }{} // BEGIN Marshal arguments into request. if request.IdentityList, err = soap.MarshalString(IdentityList); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { IdentityListResult string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "AddIdentityList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if IdentityListResult, err = soap.UnmarshalString(response.IdentityListResult); err != nil { return } // END Unmarshal arguments from response. return } func (client *DeviceProtection1) RemoveIdentity(Identity string) (err error) { // Request structure. request := &struct { Identity string }{} // BEGIN Marshal arguments into request. if request.Identity, err = soap.MarshalString(Identity); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "RemoveIdentity", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *DeviceProtection1) SetUserLoginPassword(ProtocolType string, Name string, Stored []byte, Salt []byte) (err error) { // Request structure. request := &struct { ProtocolType string Name string Stored string Salt string }{} // BEGIN Marshal arguments into request. if request.ProtocolType, err = soap.MarshalString(ProtocolType); err != nil { return } if request.Name, err = soap.MarshalString(Name); err != nil { return } if request.Stored, err = soap.MarshalBinBase64(Stored); err != nil { return } if request.Salt, err = soap.MarshalBinBase64(Salt); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "SetUserLoginPassword", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *DeviceProtection1) AddRolesForIdentity(Identity string, RoleList string) (err error) { // Request structure. request := &struct { Identity string RoleList string }{} // BEGIN Marshal arguments into request. if request.Identity, err = soap.MarshalString(Identity); err != nil { return } if request.RoleList, err = soap.MarshalString(RoleList); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "AddRolesForIdentity", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *DeviceProtection1) RemoveRolesForIdentity(Identity string, RoleList string) (err error) { // Request structure. request := &struct { Identity string RoleList string }{} // BEGIN Marshal arguments into request. if request.Identity, err = soap.MarshalString(Identity); err != nil { return } if request.RoleList, err = soap.MarshalString(RoleList); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_DeviceProtection_1, "RemoveRolesForIdentity", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // LANHostConfigManagement1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:LANHostConfigManagement:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type LANHostConfigManagement1 struct { goupnp.ServiceClient } // NewLANHostConfigManagement1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewLANHostConfigManagement1Clients() (clients []*LANHostConfigManagement1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_LANHostConfigManagement_1); err != nil { return } clients = newLANHostConfigManagement1ClientsFromGenericClients(genericClients) return } // NewLANHostConfigManagement1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewLANHostConfigManagement1ClientsByURL(loc *url.URL) ([]*LANHostConfigManagement1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_LANHostConfigManagement_1) if err != nil { return nil, err } return newLANHostConfigManagement1ClientsFromGenericClients(genericClients), nil } // NewLANHostConfigManagement1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewLANHostConfigManagement1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*LANHostConfigManagement1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_LANHostConfigManagement_1) if err != nil { return nil, err } return newLANHostConfigManagement1ClientsFromGenericClients(genericClients), nil } func newLANHostConfigManagement1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*LANHostConfigManagement1 { clients := make([]*LANHostConfigManagement1, len(genericClients)) for i := range genericClients { clients[i] = &LANHostConfigManagement1{genericClients[i]} } return clients } func (client *LANHostConfigManagement1) SetDHCPServerConfigurable(NewDHCPServerConfigurable bool) (err error) { // Request structure. request := &struct { NewDHCPServerConfigurable string }{} // BEGIN Marshal arguments into request. if request.NewDHCPServerConfigurable, err = soap.MarshalBoolean(NewDHCPServerConfigurable); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDHCPServerConfigurable", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDHCPServerConfigurable() (NewDHCPServerConfigurable bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDHCPServerConfigurable string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDHCPServerConfigurable", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDHCPServerConfigurable, err = soap.UnmarshalBoolean(response.NewDHCPServerConfigurable); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetDHCPRelay(NewDHCPRelay bool) (err error) { // Request structure. request := &struct { NewDHCPRelay string }{} // BEGIN Marshal arguments into request. if request.NewDHCPRelay, err = soap.MarshalBoolean(NewDHCPRelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDHCPRelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDHCPRelay() (NewDHCPRelay bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDHCPRelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDHCPRelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDHCPRelay, err = soap.UnmarshalBoolean(response.NewDHCPRelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetSubnetMask(NewSubnetMask string) (err error) { // Request structure. request := &struct { NewSubnetMask string }{} // BEGIN Marshal arguments into request. if request.NewSubnetMask, err = soap.MarshalString(NewSubnetMask); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetSubnetMask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetSubnetMask() (NewSubnetMask string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewSubnetMask string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetSubnetMask", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewSubnetMask, err = soap.UnmarshalString(response.NewSubnetMask); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetIPRouter(NewIPRouters string) (err error) { // Request structure. request := &struct { NewIPRouters string }{} // BEGIN Marshal arguments into request. if request.NewIPRouters, err = soap.MarshalString(NewIPRouters); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetIPRouter", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) DeleteIPRouter(NewIPRouters string) (err error) { // Request structure. request := &struct { NewIPRouters string }{} // BEGIN Marshal arguments into request. if request.NewIPRouters, err = soap.MarshalString(NewIPRouters); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "DeleteIPRouter", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetIPRoutersList() (NewIPRouters string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIPRouters string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetIPRoutersList", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIPRouters, err = soap.UnmarshalString(response.NewIPRouters); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetDomainName(NewDomainName string) (err error) { // Request structure. request := &struct { NewDomainName string }{} // BEGIN Marshal arguments into request. if request.NewDomainName, err = soap.MarshalString(NewDomainName); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDomainName", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDomainName() (NewDomainName string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDomainName string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDomainName", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDomainName, err = soap.UnmarshalString(response.NewDomainName); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetAddressRange(NewMinAddress string, NewMaxAddress string) (err error) { // Request structure. request := &struct { NewMinAddress string NewMaxAddress string }{} // BEGIN Marshal arguments into request. if request.NewMinAddress, err = soap.MarshalString(NewMinAddress); err != nil { return } if request.NewMaxAddress, err = soap.MarshalString(NewMaxAddress); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetAddressRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetAddressRange() (NewMinAddress string, NewMaxAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewMinAddress string NewMaxAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetAddressRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewMinAddress, err = soap.UnmarshalString(response.NewMinAddress); err != nil { return } if NewMaxAddress, err = soap.UnmarshalString(response.NewMaxAddress); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetReservedAddress(NewReservedAddresses string) (err error) { // Request structure. request := &struct { NewReservedAddresses string }{} // BEGIN Marshal arguments into request. if request.NewReservedAddresses, err = soap.MarshalString(NewReservedAddresses); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetReservedAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) DeleteReservedAddress(NewReservedAddresses string) (err error) { // Request structure. request := &struct { NewReservedAddresses string }{} // BEGIN Marshal arguments into request. if request.NewReservedAddresses, err = soap.MarshalString(NewReservedAddresses); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "DeleteReservedAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetReservedAddresses() (NewReservedAddresses string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewReservedAddresses string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetReservedAddresses", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewReservedAddresses, err = soap.UnmarshalString(response.NewReservedAddresses); err != nil { return } // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) SetDNSServer(NewDNSServers string) (err error) { // Request structure. request := &struct { NewDNSServers string }{} // BEGIN Marshal arguments into request. if request.NewDNSServers, err = soap.MarshalString(NewDNSServers); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "SetDNSServer", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) DeleteDNSServer(NewDNSServers string) (err error) { // Request structure. request := &struct { NewDNSServers string }{} // BEGIN Marshal arguments into request. if request.NewDNSServers, err = soap.MarshalString(NewDNSServers); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "DeleteDNSServer", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *LANHostConfigManagement1) GetDNSServers() (NewDNSServers string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDNSServers string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_LANHostConfigManagement_1, "GetDNSServers", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDNSServers, err = soap.UnmarshalString(response.NewDNSServers); err != nil { return } // END Unmarshal arguments from response. return } // Layer3Forwarding1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:Layer3Forwarding:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type Layer3Forwarding1 struct { goupnp.ServiceClient } // NewLayer3Forwarding1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewLayer3Forwarding1Clients() (clients []*Layer3Forwarding1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_Layer3Forwarding_1); err != nil { return } clients = newLayer3Forwarding1ClientsFromGenericClients(genericClients) return } // NewLayer3Forwarding1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewLayer3Forwarding1ClientsByURL(loc *url.URL) ([]*Layer3Forwarding1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_Layer3Forwarding_1) if err != nil { return nil, err } return newLayer3Forwarding1ClientsFromGenericClients(genericClients), nil } // NewLayer3Forwarding1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewLayer3Forwarding1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*Layer3Forwarding1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_Layer3Forwarding_1) if err != nil { return nil, err } return newLayer3Forwarding1ClientsFromGenericClients(genericClients), nil } func newLayer3Forwarding1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*Layer3Forwarding1 { clients := make([]*Layer3Forwarding1, len(genericClients)) for i := range genericClients { clients[i] = &Layer3Forwarding1{genericClients[i]} } return clients } func (client *Layer3Forwarding1) SetDefaultConnectionService(NewDefaultConnectionService string) (err error) { // Request structure. request := &struct { NewDefaultConnectionService string }{} // BEGIN Marshal arguments into request. if request.NewDefaultConnectionService, err = soap.MarshalString(NewDefaultConnectionService); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_Layer3Forwarding_1, "SetDefaultConnectionService", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *Layer3Forwarding1) GetDefaultConnectionService() (NewDefaultConnectionService string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDefaultConnectionService string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_Layer3Forwarding_1, "GetDefaultConnectionService", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDefaultConnectionService, err = soap.UnmarshalString(response.NewDefaultConnectionService); err != nil { return } // END Unmarshal arguments from response. return } // WANCableLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANCableLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANCableLinkConfig1 struct { goupnp.ServiceClient } // NewWANCableLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANCableLinkConfig1Clients() (clients []*WANCableLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANCableLinkConfig_1); err != nil { return } clients = newWANCableLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANCableLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANCableLinkConfig1ClientsByURL(loc *url.URL) ([]*WANCableLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANCableLinkConfig_1) if err != nil { return nil, err } return newWANCableLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANCableLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANCableLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANCableLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANCableLinkConfig_1) if err != nil { return nil, err } return newWANCableLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANCableLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANCableLinkConfig1 { clients := make([]*WANCableLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANCableLinkConfig1{genericClients[i]} } return clients } // // Return values: // // * NewCableLinkConfigState: allowed values: notReady, dsSyncComplete, usParamAcquired, rangingComplete, ipComplete, todEstablished, paramTransferComplete, registrationComplete, operational, accessDenied // // * NewLinkType: allowed values: Ethernet func (client *WANCableLinkConfig1) GetCableLinkConfigInfo() (NewCableLinkConfigState string, NewLinkType string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewCableLinkConfigState string NewLinkType string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetCableLinkConfigInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewCableLinkConfigState, err = soap.UnmarshalString(response.NewCableLinkConfigState); err != nil { return } if NewLinkType, err = soap.UnmarshalString(response.NewLinkType); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetDownstreamFrequency() (NewDownstreamFrequency uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDownstreamFrequency string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetDownstreamFrequency", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDownstreamFrequency, err = soap.UnmarshalUi4(response.NewDownstreamFrequency); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewDownstreamModulation: allowed values: 64QAM, 256QAM func (client *WANCableLinkConfig1) GetDownstreamModulation() (NewDownstreamModulation string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDownstreamModulation string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetDownstreamModulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDownstreamModulation, err = soap.UnmarshalString(response.NewDownstreamModulation); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetUpstreamFrequency() (NewUpstreamFrequency uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamFrequency string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamFrequency", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamFrequency, err = soap.UnmarshalUi4(response.NewUpstreamFrequency); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewUpstreamModulation: allowed values: QPSK, 16QAM func (client *WANCableLinkConfig1) GetUpstreamModulation() (NewUpstreamModulation string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamModulation string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamModulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamModulation, err = soap.UnmarshalString(response.NewUpstreamModulation); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetUpstreamChannelID() (NewUpstreamChannelID uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamChannelID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamChannelID", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamChannelID, err = soap.UnmarshalUi4(response.NewUpstreamChannelID); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetUpstreamPowerLevel() (NewUpstreamPowerLevel uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamPowerLevel string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetUpstreamPowerLevel", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamPowerLevel, err = soap.UnmarshalUi4(response.NewUpstreamPowerLevel); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetBPIEncryptionEnabled() (NewBPIEncryptionEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewBPIEncryptionEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetBPIEncryptionEnabled", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewBPIEncryptionEnabled, err = soap.UnmarshalBoolean(response.NewBPIEncryptionEnabled); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetConfigFile() (NewConfigFile string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConfigFile string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetConfigFile", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConfigFile, err = soap.UnmarshalString(response.NewConfigFile); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCableLinkConfig1) GetTFTPServer() (NewTFTPServer string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTFTPServer string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCableLinkConfig_1, "GetTFTPServer", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTFTPServer, err = soap.UnmarshalString(response.NewTFTPServer); err != nil { return } // END Unmarshal arguments from response. return } // WANCommonInterfaceConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANCommonInterfaceConfig1 struct { goupnp.ServiceClient } // NewWANCommonInterfaceConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANCommonInterfaceConfig1Clients() (clients []*WANCommonInterfaceConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANCommonInterfaceConfig_1); err != nil { return } clients = newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients) return } // NewWANCommonInterfaceConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANCommonInterfaceConfig1ClientsByURL(loc *url.URL) ([]*WANCommonInterfaceConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANCommonInterfaceConfig_1) if err != nil { return nil, err } return newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients), nil } // NewWANCommonInterfaceConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANCommonInterfaceConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANCommonInterfaceConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANCommonInterfaceConfig_1) if err != nil { return nil, err } return newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients), nil } func newWANCommonInterfaceConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANCommonInterfaceConfig1 { clients := make([]*WANCommonInterfaceConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANCommonInterfaceConfig1{genericClients[i]} } return clients } func (client *WANCommonInterfaceConfig1) SetEnabledForInternet(NewEnabledForInternet bool) (err error) { // Request structure. request := &struct { NewEnabledForInternet string }{} // BEGIN Marshal arguments into request. if request.NewEnabledForInternet, err = soap.MarshalBoolean(NewEnabledForInternet); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "SetEnabledForInternet", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetEnabledForInternet() (NewEnabledForInternet bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewEnabledForInternet string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetEnabledForInternet", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewEnabledForInternet, err = soap.UnmarshalBoolean(response.NewEnabledForInternet); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewWANAccessType: allowed values: DSL, POTS, Cable, Ethernet // // * NewPhysicalLinkStatus: allowed values: Up, Down func (client *WANCommonInterfaceConfig1) GetCommonLinkProperties() (NewWANAccessType string, NewLayer1UpstreamMaxBitRate uint32, NewLayer1DownstreamMaxBitRate uint32, NewPhysicalLinkStatus string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWANAccessType string NewLayer1UpstreamMaxBitRate string NewLayer1DownstreamMaxBitRate string NewPhysicalLinkStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetCommonLinkProperties", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWANAccessType, err = soap.UnmarshalString(response.NewWANAccessType); err != nil { return } if NewLayer1UpstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewLayer1UpstreamMaxBitRate); err != nil { return } if NewLayer1DownstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewLayer1DownstreamMaxBitRate); err != nil { return } if NewPhysicalLinkStatus, err = soap.UnmarshalString(response.NewPhysicalLinkStatus); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetWANAccessProvider() (NewWANAccessProvider string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWANAccessProvider string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetWANAccessProvider", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWANAccessProvider, err = soap.UnmarshalString(response.NewWANAccessProvider); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewMaximumActiveConnections: allowed value range: minimum=1, step=1 func (client *WANCommonInterfaceConfig1) GetMaximumActiveConnections() (NewMaximumActiveConnections uint16, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewMaximumActiveConnections string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetMaximumActiveConnections", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewMaximumActiveConnections, err = soap.UnmarshalUi2(response.NewMaximumActiveConnections); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalBytesSent() (NewTotalBytesSent uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalBytesSent string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalBytesSent", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalBytesSent, err = soap.UnmarshalUi4(response.NewTotalBytesSent); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalBytesReceived() (NewTotalBytesReceived uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalBytesReceived string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalBytesReceived", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalBytesReceived, err = soap.UnmarshalUi4(response.NewTotalBytesReceived); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalPacketsSent() (NewTotalPacketsSent uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalPacketsSent string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalPacketsSent", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalPacketsSent, err = soap.UnmarshalUi4(response.NewTotalPacketsSent); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetTotalPacketsReceived() (NewTotalPacketsReceived uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewTotalPacketsReceived string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetTotalPacketsReceived", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewTotalPacketsReceived, err = soap.UnmarshalUi4(response.NewTotalPacketsReceived); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANCommonInterfaceConfig1) GetActiveConnection(NewActiveConnectionIndex uint16) (NewActiveConnDeviceContainer string, NewActiveConnectionServiceID string, err error) { // Request structure. request := &struct { NewActiveConnectionIndex string }{} // BEGIN Marshal arguments into request. if request.NewActiveConnectionIndex, err = soap.MarshalUi2(NewActiveConnectionIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewActiveConnDeviceContainer string NewActiveConnectionServiceID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANCommonInterfaceConfig_1, "GetActiveConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewActiveConnDeviceContainer, err = soap.UnmarshalString(response.NewActiveConnDeviceContainer); err != nil { return } if NewActiveConnectionServiceID, err = soap.UnmarshalString(response.NewActiveConnectionServiceID); err != nil { return } // END Unmarshal arguments from response. return } // WANDSLLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANDSLLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANDSLLinkConfig1 struct { goupnp.ServiceClient } // NewWANDSLLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANDSLLinkConfig1Clients() (clients []*WANDSLLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANDSLLinkConfig_1); err != nil { return } clients = newWANDSLLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANDSLLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANDSLLinkConfig1ClientsByURL(loc *url.URL) ([]*WANDSLLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANDSLLinkConfig_1) if err != nil { return nil, err } return newWANDSLLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANDSLLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANDSLLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANDSLLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANDSLLinkConfig_1) if err != nil { return nil, err } return newWANDSLLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANDSLLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANDSLLinkConfig1 { clients := make([]*WANDSLLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANDSLLinkConfig1{genericClients[i]} } return clients } func (client *WANDSLLinkConfig1) SetDSLLinkType(NewLinkType string) (err error) { // Request structure. request := &struct { NewLinkType string }{} // BEGIN Marshal arguments into request. if request.NewLinkType, err = soap.MarshalString(NewLinkType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetDSLLinkType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewLinkStatus: allowed values: Up, Down func (client *WANDSLLinkConfig1) GetDSLLinkInfo() (NewLinkType string, NewLinkStatus string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewLinkType string NewLinkStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetDSLLinkInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewLinkType, err = soap.UnmarshalString(response.NewLinkType); err != nil { return } if NewLinkStatus, err = soap.UnmarshalString(response.NewLinkStatus); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetAutoConfig() (NewAutoConfig bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoConfig string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetAutoConfig", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoConfig, err = soap.UnmarshalBoolean(response.NewAutoConfig); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetModulationType() (NewModulationType string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewModulationType string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetModulationType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewModulationType, err = soap.UnmarshalString(response.NewModulationType); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) SetDestinationAddress(NewDestinationAddress string) (err error) { // Request structure. request := &struct { NewDestinationAddress string }{} // BEGIN Marshal arguments into request. if request.NewDestinationAddress, err = soap.MarshalString(NewDestinationAddress); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetDestinationAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetDestinationAddress() (NewDestinationAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDestinationAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetDestinationAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDestinationAddress, err = soap.UnmarshalString(response.NewDestinationAddress); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) SetATMEncapsulation(NewATMEncapsulation string) (err error) { // Request structure. request := &struct { NewATMEncapsulation string }{} // BEGIN Marshal arguments into request. if request.NewATMEncapsulation, err = soap.MarshalString(NewATMEncapsulation); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetATMEncapsulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetATMEncapsulation() (NewATMEncapsulation string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewATMEncapsulation string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetATMEncapsulation", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewATMEncapsulation, err = soap.UnmarshalString(response.NewATMEncapsulation); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) SetFCSPreserved(NewFCSPreserved bool) (err error) { // Request structure. request := &struct { NewFCSPreserved string }{} // BEGIN Marshal arguments into request. if request.NewFCSPreserved, err = soap.MarshalBoolean(NewFCSPreserved); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "SetFCSPreserved", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANDSLLinkConfig1) GetFCSPreserved() (NewFCSPreserved bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewFCSPreserved string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANDSLLinkConfig_1, "GetFCSPreserved", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewFCSPreserved, err = soap.UnmarshalBoolean(response.NewFCSPreserved); err != nil { return } // END Unmarshal arguments from response. return } // WANEthernetLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANEthernetLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANEthernetLinkConfig1 struct { goupnp.ServiceClient } // NewWANEthernetLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANEthernetLinkConfig1Clients() (clients []*WANEthernetLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANEthernetLinkConfig_1); err != nil { return } clients = newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANEthernetLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANEthernetLinkConfig1ClientsByURL(loc *url.URL) ([]*WANEthernetLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANEthernetLinkConfig_1) if err != nil { return nil, err } return newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANEthernetLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANEthernetLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANEthernetLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANEthernetLinkConfig_1) if err != nil { return nil, err } return newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANEthernetLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANEthernetLinkConfig1 { clients := make([]*WANEthernetLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANEthernetLinkConfig1{genericClients[i]} } return clients } // // Return values: // // * NewEthernetLinkStatus: allowed values: Up, Down func (client *WANEthernetLinkConfig1) GetEthernetLinkStatus() (NewEthernetLinkStatus string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewEthernetLinkStatus string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANEthernetLinkConfig_1, "GetEthernetLinkStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewEthernetLinkStatus, err = soap.UnmarshalString(response.NewEthernetLinkStatus); err != nil { return } // END Unmarshal arguments from response. return } // WANIPConnection1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANIPConnection:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANIPConnection1 struct { goupnp.ServiceClient } // NewWANIPConnection1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANIPConnection1Clients() (clients []*WANIPConnection1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANIPConnection_1); err != nil { return } clients = newWANIPConnection1ClientsFromGenericClients(genericClients) return } // NewWANIPConnection1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANIPConnection1ClientsByURL(loc *url.URL) ([]*WANIPConnection1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANIPConnection_1) if err != nil { return nil, err } return newWANIPConnection1ClientsFromGenericClients(genericClients), nil } // NewWANIPConnection1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANIPConnection1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANIPConnection1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANIPConnection_1) if err != nil { return nil, err } return newWANIPConnection1ClientsFromGenericClients(genericClients), nil } func newWANIPConnection1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANIPConnection1 { clients := make([]*WANIPConnection1, len(genericClients)) for i := range genericClients { clients[i] = &WANIPConnection1{genericClients[i]} } return clients } func (client *WANIPConnection1) SetConnectionType(NewConnectionType string) (err error) { // Request structure. request := &struct { NewConnectionType string }{} // BEGIN Marshal arguments into request. if request.NewConnectionType, err = soap.MarshalString(NewConnectionType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetConnectionType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewPossibleConnectionTypes: allowed values: Unconfigured, IP_Routed, IP_Bridged func (client *WANIPConnection1) GetConnectionTypeInfo() (NewConnectionType string, NewPossibleConnectionTypes string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionType string NewPossibleConnectionTypes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetConnectionTypeInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionType, err = soap.UnmarshalString(response.NewConnectionType); err != nil { return } if NewPossibleConnectionTypes, err = soap.UnmarshalString(response.NewPossibleConnectionTypes); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) RequestConnection() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "RequestConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) RequestTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "RequestTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) ForceTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "ForceTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) SetAutoDisconnectTime(NewAutoDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewAutoDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewAutoDisconnectTime, err = soap.MarshalUi4(NewAutoDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) SetIdleDisconnectTime(NewIdleDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewIdleDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewIdleDisconnectTime, err = soap.MarshalUi4(NewIdleDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) SetWarnDisconnectDelay(NewWarnDisconnectDelay uint32) (err error) { // Request structure. request := &struct { NewWarnDisconnectDelay string }{} // BEGIN Marshal arguments into request. if request.NewWarnDisconnectDelay, err = soap.MarshalUi4(NewWarnDisconnectDelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "SetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewConnectionStatus: allowed values: Unconfigured, Connected, Disconnected // // * NewLastConnectionError: allowed values: ERROR_NONE func (client *WANIPConnection1) GetStatusInfo() (NewConnectionStatus string, NewLastConnectionError string, NewUptime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionStatus string NewLastConnectionError string NewUptime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetStatusInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionStatus, err = soap.UnmarshalString(response.NewConnectionStatus); err != nil { return } if NewLastConnectionError, err = soap.UnmarshalString(response.NewLastConnectionError); err != nil { return } if NewUptime, err = soap.UnmarshalUi4(response.NewUptime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetAutoDisconnectTime() (NewAutoDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoDisconnectTime, err = soap.UnmarshalUi4(response.NewAutoDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetIdleDisconnectTime() (NewIdleDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIdleDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIdleDisconnectTime, err = soap.UnmarshalUi4(response.NewIdleDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetWarnDisconnectDelay() (NewWarnDisconnectDelay uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWarnDisconnectDelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWarnDisconnectDelay, err = soap.UnmarshalUi4(response.NewWarnDisconnectDelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetNATRSIPStatus() (NewRSIPAvailable bool, NewNATEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewRSIPAvailable string NewNATEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetNATRSIPStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRSIPAvailable, err = soap.UnmarshalBoolean(response.NewRSIPAvailable); err != nil { return } if NewNATEnabled, err = soap.UnmarshalBoolean(response.NewNATEnabled); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) GetGenericPortMappingEntry(NewPortMappingIndex uint16) (NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewPortMappingIndex string }{} // BEGIN Marshal arguments into request. if request.NewPortMappingIndex, err = soap.MarshalUi2(NewPortMappingIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetGenericPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRemoteHost, err = soap.UnmarshalString(response.NewRemoteHost); err != nil { return } if NewExternalPort, err = soap.UnmarshalUi2(response.NewExternalPort); err != nil { return } if NewProtocol, err = soap.UnmarshalString(response.NewProtocol); err != nil { return } if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) GetSpecificPortMappingEntry(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetSpecificPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) AddPortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewInternalPort, err = soap.MarshalUi2(NewInternalPort); err != nil { return } if request.NewInternalClient, err = soap.MarshalString(NewInternalClient); err != nil { return } if request.NewEnabled, err = soap.MarshalBoolean(NewEnabled); err != nil { return } if request.NewPortMappingDescription, err = soap.MarshalString(NewPortMappingDescription); err != nil { return } if request.NewLeaseDuration, err = soap.MarshalUi4(NewLeaseDuration); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "AddPortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection1) DeletePortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "DeletePortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection1) GetExternalIPAddress() (NewExternalIPAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewExternalIPAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_1, "GetExternalIPAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewExternalIPAddress, err = soap.UnmarshalString(response.NewExternalIPAddress); err != nil { return } // END Unmarshal arguments from response. return } // WANIPConnection2 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANIPConnection:2". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANIPConnection2 struct { goupnp.ServiceClient } // NewWANIPConnection2Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANIPConnection2Clients() (clients []*WANIPConnection2, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANIPConnection_2); err != nil { return } clients = newWANIPConnection2ClientsFromGenericClients(genericClients) return } // NewWANIPConnection2ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANIPConnection2ClientsByURL(loc *url.URL) ([]*WANIPConnection2, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANIPConnection_2) if err != nil { return nil, err } return newWANIPConnection2ClientsFromGenericClients(genericClients), nil } // NewWANIPConnection2ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANIPConnection2ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANIPConnection2, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANIPConnection_2) if err != nil { return nil, err } return newWANIPConnection2ClientsFromGenericClients(genericClients), nil } func newWANIPConnection2ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANIPConnection2 { clients := make([]*WANIPConnection2, len(genericClients)) for i := range genericClients { clients[i] = &WANIPConnection2{genericClients[i]} } return clients } func (client *WANIPConnection2) SetConnectionType(NewConnectionType string) (err error) { // Request structure. request := &struct { NewConnectionType string }{} // BEGIN Marshal arguments into request. if request.NewConnectionType, err = soap.MarshalString(NewConnectionType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "SetConnectionType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) GetConnectionTypeInfo() (NewConnectionType string, NewPossibleConnectionTypes string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionType string NewPossibleConnectionTypes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetConnectionTypeInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionType, err = soap.UnmarshalString(response.NewConnectionType); err != nil { return } if NewPossibleConnectionTypes, err = soap.UnmarshalString(response.NewPossibleConnectionTypes); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection2) RequestConnection() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "RequestConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) RequestTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "RequestTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) ForceTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "ForceTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) SetAutoDisconnectTime(NewAutoDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewAutoDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewAutoDisconnectTime, err = soap.MarshalUi4(NewAutoDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "SetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) SetIdleDisconnectTime(NewIdleDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewIdleDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewIdleDisconnectTime, err = soap.MarshalUi4(NewIdleDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "SetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) SetWarnDisconnectDelay(NewWarnDisconnectDelay uint32) (err error) { // Request structure. request := &struct { NewWarnDisconnectDelay string }{} // BEGIN Marshal arguments into request. if request.NewWarnDisconnectDelay, err = soap.MarshalUi4(NewWarnDisconnectDelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "SetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewConnectionStatus: allowed values: Unconfigured, Connecting, Connected, PendingDisconnect, Disconnecting, Disconnected // // * NewLastConnectionError: allowed values: ERROR_NONE, ERROR_COMMAND_ABORTED, ERROR_NOT_ENABLED_FOR_INTERNET, ERROR_USER_DISCONNECT, ERROR_ISP_DISCONNECT, ERROR_IDLE_DISCONNECT, ERROR_FORCED_DISCONNECT, ERROR_NO_CARRIER, ERROR_IP_CONFIGURATION, ERROR_UNKNOWN func (client *WANIPConnection2) GetStatusInfo() (NewConnectionStatus string, NewLastConnectionError string, NewUptime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionStatus string NewLastConnectionError string NewUptime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetStatusInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionStatus, err = soap.UnmarshalString(response.NewConnectionStatus); err != nil { return } if NewLastConnectionError, err = soap.UnmarshalString(response.NewLastConnectionError); err != nil { return } if NewUptime, err = soap.UnmarshalUi4(response.NewUptime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection2) GetAutoDisconnectTime() (NewAutoDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoDisconnectTime, err = soap.UnmarshalUi4(response.NewAutoDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection2) GetIdleDisconnectTime() (NewIdleDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIdleDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIdleDisconnectTime, err = soap.UnmarshalUi4(response.NewIdleDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection2) GetWarnDisconnectDelay() (NewWarnDisconnectDelay uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWarnDisconnectDelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWarnDisconnectDelay, err = soap.UnmarshalUi4(response.NewWarnDisconnectDelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPConnection2) GetNATRSIPStatus() (NewRSIPAvailable bool, NewNATEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewRSIPAvailable string NewNATEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetNATRSIPStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRSIPAvailable, err = soap.UnmarshalBoolean(response.NewRSIPAvailable); err != nil { return } if NewNATEnabled, err = soap.UnmarshalBoolean(response.NewNATEnabled); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) GetGenericPortMappingEntry(NewPortMappingIndex uint16) (NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewPortMappingIndex string }{} // BEGIN Marshal arguments into request. if request.NewPortMappingIndex, err = soap.MarshalUi2(NewPortMappingIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetGenericPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRemoteHost, err = soap.UnmarshalString(response.NewRemoteHost); err != nil { return } if NewExternalPort, err = soap.UnmarshalUi2(response.NewExternalPort); err != nil { return } if NewProtocol, err = soap.UnmarshalString(response.NewProtocol); err != nil { return } if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) GetSpecificPortMappingEntry(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetSpecificPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) AddPortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewInternalPort, err = soap.MarshalUi2(NewInternalPort); err != nil { return } if request.NewInternalClient, err = soap.MarshalString(NewInternalClient); err != nil { return } if request.NewEnabled, err = soap.MarshalBoolean(NewEnabled); err != nil { return } if request.NewPortMappingDescription, err = soap.MarshalString(NewPortMappingDescription); err != nil { return } if request.NewLeaseDuration, err = soap.MarshalUi4(NewLeaseDuration); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "AddPortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) DeletePortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "DeletePortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) DeletePortMappingRange(NewStartPort uint16, NewEndPort uint16, NewProtocol string, NewManage bool) (err error) { // Request structure. request := &struct { NewStartPort string NewEndPort string NewProtocol string NewManage string }{} // BEGIN Marshal arguments into request. if request.NewStartPort, err = soap.MarshalUi2(NewStartPort); err != nil { return } if request.NewEndPort, err = soap.MarshalUi2(NewEndPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewManage, err = soap.MarshalBoolean(NewManage); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "DeletePortMappingRange", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPConnection2) GetExternalIPAddress() (NewExternalIPAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewExternalIPAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetExternalIPAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewExternalIPAddress, err = soap.UnmarshalString(response.NewExternalIPAddress); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) GetListOfPortMappings(NewStartPort uint16, NewEndPort uint16, NewProtocol string, NewManage bool, NewNumberOfPorts uint16) (NewPortListing string, err error) { // Request structure. request := &struct { NewStartPort string NewEndPort string NewProtocol string NewManage string NewNumberOfPorts string }{} // BEGIN Marshal arguments into request. if request.NewStartPort, err = soap.MarshalUi2(NewStartPort); err != nil { return } if request.NewEndPort, err = soap.MarshalUi2(NewEndPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewManage, err = soap.MarshalBoolean(NewManage); err != nil { return } if request.NewNumberOfPorts, err = soap.MarshalUi2(NewNumberOfPorts); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewPortListing string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "GetListOfPortMappings", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPortListing, err = soap.UnmarshalString(response.NewPortListing); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANIPConnection2) AddAnyPortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32) (NewReservedPort uint16, err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewInternalPort, err = soap.MarshalUi2(NewInternalPort); err != nil { return } if request.NewInternalClient, err = soap.MarshalString(NewInternalClient); err != nil { return } if request.NewEnabled, err = soap.MarshalBoolean(NewEnabled); err != nil { return } if request.NewPortMappingDescription, err = soap.MarshalString(NewPortMappingDescription); err != nil { return } if request.NewLeaseDuration, err = soap.MarshalUi4(NewLeaseDuration); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewReservedPort string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPConnection_2, "AddAnyPortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewReservedPort, err = soap.UnmarshalUi2(response.NewReservedPort); err != nil { return } // END Unmarshal arguments from response. return } // WANIPv6FirewallControl1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANIPv6FirewallControl1 struct { goupnp.ServiceClient } // NewWANIPv6FirewallControl1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANIPv6FirewallControl1Clients() (clients []*WANIPv6FirewallControl1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANIPv6FirewallControl_1); err != nil { return } clients = newWANIPv6FirewallControl1ClientsFromGenericClients(genericClients) return } // NewWANIPv6FirewallControl1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANIPv6FirewallControl1ClientsByURL(loc *url.URL) ([]*WANIPv6FirewallControl1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANIPv6FirewallControl_1) if err != nil { return nil, err } return newWANIPv6FirewallControl1ClientsFromGenericClients(genericClients), nil } // NewWANIPv6FirewallControl1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANIPv6FirewallControl1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANIPv6FirewallControl1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANIPv6FirewallControl_1) if err != nil { return nil, err } return newWANIPv6FirewallControl1ClientsFromGenericClients(genericClients), nil } func newWANIPv6FirewallControl1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANIPv6FirewallControl1 { clients := make([]*WANIPv6FirewallControl1, len(genericClients)) for i := range genericClients { clients[i] = &WANIPv6FirewallControl1{genericClients[i]} } return clients } func (client *WANIPv6FirewallControl1) GetFirewallStatus() (FirewallEnabled bool, InboundPinholeAllowed bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { FirewallEnabled string InboundPinholeAllowed string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "GetFirewallStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if FirewallEnabled, err = soap.UnmarshalBoolean(response.FirewallEnabled); err != nil { return } if InboundPinholeAllowed, err = soap.UnmarshalBoolean(response.InboundPinholeAllowed); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPv6FirewallControl1) GetOutboundPinholeTimeout(RemoteHost string, RemotePort uint16, InternalClient string, InternalPort uint16, Protocol uint16) (OutboundPinholeTimeout uint32, err error) { // Request structure. request := &struct { RemoteHost string RemotePort string InternalClient string InternalPort string Protocol string }{} // BEGIN Marshal arguments into request. if request.RemoteHost, err = soap.MarshalString(RemoteHost); err != nil { return } if request.RemotePort, err = soap.MarshalUi2(RemotePort); err != nil { return } if request.InternalClient, err = soap.MarshalString(InternalClient); err != nil { return } if request.InternalPort, err = soap.MarshalUi2(InternalPort); err != nil { return } if request.Protocol, err = soap.MarshalUi2(Protocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { OutboundPinholeTimeout string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "GetOutboundPinholeTimeout", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if OutboundPinholeTimeout, err = soap.UnmarshalUi4(response.OutboundPinholeTimeout); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * LeaseTime: allowed value range: minimum=1, maximum=86400 func (client *WANIPv6FirewallControl1) AddPinhole(RemoteHost string, RemotePort uint16, InternalClient string, InternalPort uint16, Protocol uint16, LeaseTime uint32) (UniqueID uint16, err error) { // Request structure. request := &struct { RemoteHost string RemotePort string InternalClient string InternalPort string Protocol string LeaseTime string }{} // BEGIN Marshal arguments into request. if request.RemoteHost, err = soap.MarshalString(RemoteHost); err != nil { return } if request.RemotePort, err = soap.MarshalUi2(RemotePort); err != nil { return } if request.InternalClient, err = soap.MarshalString(InternalClient); err != nil { return } if request.InternalPort, err = soap.MarshalUi2(InternalPort); err != nil { return } if request.Protocol, err = soap.MarshalUi2(Protocol); err != nil { return } if request.LeaseTime, err = soap.MarshalUi4(LeaseTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { UniqueID string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "AddPinhole", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if UniqueID, err = soap.UnmarshalUi2(response.UniqueID); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewLeaseTime: allowed value range: minimum=1, maximum=86400 func (client *WANIPv6FirewallControl1) UpdatePinhole(UniqueID uint16, NewLeaseTime uint32) (err error) { // Request structure. request := &struct { UniqueID string NewLeaseTime string }{} // BEGIN Marshal arguments into request. if request.UniqueID, err = soap.MarshalUi2(UniqueID); err != nil { return } if request.NewLeaseTime, err = soap.MarshalUi4(NewLeaseTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "UpdatePinhole", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPv6FirewallControl1) DeletePinhole(UniqueID uint16) (err error) { // Request structure. request := &struct { UniqueID string }{} // BEGIN Marshal arguments into request. if request.UniqueID, err = soap.MarshalUi2(UniqueID); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "DeletePinhole", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANIPv6FirewallControl1) GetPinholePackets(UniqueID uint16) (PinholePackets uint32, err error) { // Request structure. request := &struct { UniqueID string }{} // BEGIN Marshal arguments into request. if request.UniqueID, err = soap.MarshalUi2(UniqueID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { PinholePackets string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "GetPinholePackets", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if PinholePackets, err = soap.UnmarshalUi4(response.PinholePackets); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANIPv6FirewallControl1) CheckPinholeWorking(UniqueID uint16) (IsWorking bool, err error) { // Request structure. request := &struct { UniqueID string }{} // BEGIN Marshal arguments into request. if request.UniqueID, err = soap.MarshalUi2(UniqueID); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { IsWorking string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANIPv6FirewallControl_1, "CheckPinholeWorking", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if IsWorking, err = soap.UnmarshalBoolean(response.IsWorking); err != nil { return } // END Unmarshal arguments from response. return } // WANPOTSLinkConfig1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANPOTSLinkConfig:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANPOTSLinkConfig1 struct { goupnp.ServiceClient } // NewWANPOTSLinkConfig1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANPOTSLinkConfig1Clients() (clients []*WANPOTSLinkConfig1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANPOTSLinkConfig_1); err != nil { return } clients = newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients) return } // NewWANPOTSLinkConfig1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANPOTSLinkConfig1ClientsByURL(loc *url.URL) ([]*WANPOTSLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANPOTSLinkConfig_1) if err != nil { return nil, err } return newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients), nil } // NewWANPOTSLinkConfig1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANPOTSLinkConfig1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANPOTSLinkConfig1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANPOTSLinkConfig_1) if err != nil { return nil, err } return newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients), nil } func newWANPOTSLinkConfig1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANPOTSLinkConfig1 { clients := make([]*WANPOTSLinkConfig1, len(genericClients)) for i := range genericClients { clients[i] = &WANPOTSLinkConfig1{genericClients[i]} } return clients } // // Arguments: // // * NewLinkType: allowed values: PPP_Dialup func (client *WANPOTSLinkConfig1) SetISPInfo(NewISPPhoneNumber string, NewISPInfo string, NewLinkType string) (err error) { // Request structure. request := &struct { NewISPPhoneNumber string NewISPInfo string NewLinkType string }{} // BEGIN Marshal arguments into request. if request.NewISPPhoneNumber, err = soap.MarshalString(NewISPPhoneNumber); err != nil { return } if request.NewISPInfo, err = soap.MarshalString(NewISPInfo); err != nil { return } if request.NewLinkType, err = soap.MarshalString(NewLinkType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "SetISPInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) SetCallRetryInfo(NewNumberOfRetries uint32, NewDelayBetweenRetries uint32) (err error) { // Request structure. request := &struct { NewNumberOfRetries string NewDelayBetweenRetries string }{} // BEGIN Marshal arguments into request. if request.NewNumberOfRetries, err = soap.MarshalUi4(NewNumberOfRetries); err != nil { return } if request.NewDelayBetweenRetries, err = soap.MarshalUi4(NewDelayBetweenRetries); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "SetCallRetryInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewLinkType: allowed values: PPP_Dialup func (client *WANPOTSLinkConfig1) GetISPInfo() (NewISPPhoneNumber string, NewISPInfo string, NewLinkType string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewISPPhoneNumber string NewISPInfo string NewLinkType string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetISPInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewISPPhoneNumber, err = soap.UnmarshalString(response.NewISPPhoneNumber); err != nil { return } if NewISPInfo, err = soap.UnmarshalString(response.NewISPInfo); err != nil { return } if NewLinkType, err = soap.UnmarshalString(response.NewLinkType); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetCallRetryInfo() (NewNumberOfRetries uint32, NewDelayBetweenRetries uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewNumberOfRetries string NewDelayBetweenRetries string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetCallRetryInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewNumberOfRetries, err = soap.UnmarshalUi4(response.NewNumberOfRetries); err != nil { return } if NewDelayBetweenRetries, err = soap.UnmarshalUi4(response.NewDelayBetweenRetries); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetFclass() (NewFclass string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewFclass string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetFclass", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewFclass, err = soap.UnmarshalString(response.NewFclass); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetDataModulationSupported() (NewDataModulationSupported string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDataModulationSupported string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetDataModulationSupported", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDataModulationSupported, err = soap.UnmarshalString(response.NewDataModulationSupported); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetDataProtocol() (NewDataProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDataProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetDataProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDataProtocol, err = soap.UnmarshalString(response.NewDataProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetDataCompression() (NewDataCompression string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewDataCompression string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetDataCompression", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewDataCompression, err = soap.UnmarshalString(response.NewDataCompression); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPOTSLinkConfig1) GetPlusVTRCommandSupported() (NewPlusVTRCommandSupported bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPlusVTRCommandSupported string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPOTSLinkConfig_1, "GetPlusVTRCommandSupported", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPlusVTRCommandSupported, err = soap.UnmarshalBoolean(response.NewPlusVTRCommandSupported); err != nil { return } // END Unmarshal arguments from response. return } // WANPPPConnection1 is a client for UPnP SOAP service with URN "urn:schemas-upnp-org:service:WANPPPConnection:1". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type WANPPPConnection1 struct { goupnp.ServiceClient } // NewWANPPPConnection1Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func NewWANPPPConnection1Clients() (clients []*WANPPPConnection1, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients(URN_WANPPPConnection_1); err != nil { return } clients = newWANPPPConnection1ClientsFromGenericClients(genericClients) return } // NewWANPPPConnection1ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func NewWANPPPConnection1ClientsByURL(loc *url.URL) ([]*WANPPPConnection1, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, URN_WANPPPConnection_1) if err != nil { return nil, err } return newWANPPPConnection1ClientsFromGenericClients(genericClients), nil } // NewWANPPPConnection1ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func NewWANPPPConnection1ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*WANPPPConnection1, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, URN_WANPPPConnection_1) if err != nil { return nil, err } return newWANPPPConnection1ClientsFromGenericClients(genericClients), nil } func newWANPPPConnection1ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*WANPPPConnection1 { clients := make([]*WANPPPConnection1, len(genericClients)) for i := range genericClients { clients[i] = &WANPPPConnection1{genericClients[i]} } return clients } func (client *WANPPPConnection1) SetConnectionType(NewConnectionType string) (err error) { // Request structure. request := &struct { NewConnectionType string }{} // BEGIN Marshal arguments into request. if request.NewConnectionType, err = soap.MarshalString(NewConnectionType); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetConnectionType", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewPossibleConnectionTypes: allowed values: Unconfigured, IP_Routed, DHCP_Spoofed, PPPoE_Bridged, PPTP_Relay, L2TP_Relay, PPPoE_Relay func (client *WANPPPConnection1) GetConnectionTypeInfo() (NewConnectionType string, NewPossibleConnectionTypes string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionType string NewPossibleConnectionTypes string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetConnectionTypeInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionType, err = soap.UnmarshalString(response.NewConnectionType); err != nil { return } if NewPossibleConnectionTypes, err = soap.UnmarshalString(response.NewPossibleConnectionTypes); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) ConfigureConnection(NewUserName string, NewPassword string) (err error) { // Request structure. request := &struct { NewUserName string NewPassword string }{} // BEGIN Marshal arguments into request. if request.NewUserName, err = soap.MarshalString(NewUserName); err != nil { return } if request.NewPassword, err = soap.MarshalString(NewPassword); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "ConfigureConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) RequestConnection() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "RequestConnection", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) RequestTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "RequestTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) ForceTermination() (err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "ForceTermination", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) SetAutoDisconnectTime(NewAutoDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewAutoDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewAutoDisconnectTime, err = soap.MarshalUi4(NewAutoDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) SetIdleDisconnectTime(NewIdleDisconnectTime uint32) (err error) { // Request structure. request := &struct { NewIdleDisconnectTime string }{} // BEGIN Marshal arguments into request. if request.NewIdleDisconnectTime, err = soap.MarshalUi4(NewIdleDisconnectTime); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) SetWarnDisconnectDelay(NewWarnDisconnectDelay uint32) (err error) { // Request structure. request := &struct { NewWarnDisconnectDelay string }{} // BEGIN Marshal arguments into request. if request.NewWarnDisconnectDelay, err = soap.MarshalUi4(NewWarnDisconnectDelay); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "SetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Return values: // // * NewConnectionStatus: allowed values: Unconfigured, Connected, Disconnected // // * NewLastConnectionError: allowed values: ERROR_NONE func (client *WANPPPConnection1) GetStatusInfo() (NewConnectionStatus string, NewLastConnectionError string, NewUptime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewConnectionStatus string NewLastConnectionError string NewUptime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetStatusInfo", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewConnectionStatus, err = soap.UnmarshalString(response.NewConnectionStatus); err != nil { return } if NewLastConnectionError, err = soap.UnmarshalString(response.NewLastConnectionError); err != nil { return } if NewUptime, err = soap.UnmarshalUi4(response.NewUptime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetLinkLayerMaxBitRates() (NewUpstreamMaxBitRate uint32, NewDownstreamMaxBitRate uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUpstreamMaxBitRate string NewDownstreamMaxBitRate string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetLinkLayerMaxBitRates", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUpstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewUpstreamMaxBitRate); err != nil { return } if NewDownstreamMaxBitRate, err = soap.UnmarshalUi4(response.NewDownstreamMaxBitRate); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPPPEncryptionProtocol() (NewPPPEncryptionProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPPPEncryptionProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPPPEncryptionProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPPPEncryptionProtocol, err = soap.UnmarshalString(response.NewPPPEncryptionProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPPPCompressionProtocol() (NewPPPCompressionProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPPPCompressionProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPPPCompressionProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPPPCompressionProtocol, err = soap.UnmarshalString(response.NewPPPCompressionProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPPPAuthenticationProtocol() (NewPPPAuthenticationProtocol string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPPPAuthenticationProtocol string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPPPAuthenticationProtocol", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPPPAuthenticationProtocol, err = soap.UnmarshalString(response.NewPPPAuthenticationProtocol); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetUserName() (NewUserName string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewUserName string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetUserName", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewUserName, err = soap.UnmarshalString(response.NewUserName); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetPassword() (NewPassword string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewPassword string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetPassword", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewPassword, err = soap.UnmarshalString(response.NewPassword); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetAutoDisconnectTime() (NewAutoDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewAutoDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetAutoDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewAutoDisconnectTime, err = soap.UnmarshalUi4(response.NewAutoDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetIdleDisconnectTime() (NewIdleDisconnectTime uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewIdleDisconnectTime string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetIdleDisconnectTime", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewIdleDisconnectTime, err = soap.UnmarshalUi4(response.NewIdleDisconnectTime); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetWarnDisconnectDelay() (NewWarnDisconnectDelay uint32, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewWarnDisconnectDelay string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetWarnDisconnectDelay", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewWarnDisconnectDelay, err = soap.UnmarshalUi4(response.NewWarnDisconnectDelay); err != nil { return } // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetNATRSIPStatus() (NewRSIPAvailable bool, NewNATEnabled bool, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewRSIPAvailable string NewNATEnabled string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetNATRSIPStatus", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRSIPAvailable, err = soap.UnmarshalBoolean(response.NewRSIPAvailable); err != nil { return } if NewNATEnabled, err = soap.UnmarshalBoolean(response.NewNATEnabled); err != nil { return } // END Unmarshal arguments from response. return } // // Return values: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) GetGenericPortMappingEntry(NewPortMappingIndex uint16) (NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewPortMappingIndex string }{} // BEGIN Marshal arguments into request. if request.NewPortMappingIndex, err = soap.MarshalUi2(NewPortMappingIndex); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetGenericPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewRemoteHost, err = soap.UnmarshalString(response.NewRemoteHost); err != nil { return } if NewExternalPort, err = soap.UnmarshalUi2(response.NewExternalPort); err != nil { return } if NewProtocol, err = soap.UnmarshalString(response.NewProtocol); err != nil { return } if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) GetSpecificPortMappingEntry(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32, err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := &struct { NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetSpecificPortMappingEntry", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewInternalPort, err = soap.UnmarshalUi2(response.NewInternalPort); err != nil { return } if NewInternalClient, err = soap.UnmarshalString(response.NewInternalClient); err != nil { return } if NewEnabled, err = soap.UnmarshalBoolean(response.NewEnabled); err != nil { return } if NewPortMappingDescription, err = soap.UnmarshalString(response.NewPortMappingDescription); err != nil { return } if NewLeaseDuration, err = soap.UnmarshalUi4(response.NewLeaseDuration); err != nil { return } // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) AddPortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string, NewInternalPort uint16, NewInternalClient string, NewEnabled bool, NewPortMappingDescription string, NewLeaseDuration uint32) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string NewInternalPort string NewInternalClient string NewEnabled string NewPortMappingDescription string NewLeaseDuration string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } if request.NewInternalPort, err = soap.MarshalUi2(NewInternalPort); err != nil { return } if request.NewInternalClient, err = soap.MarshalString(NewInternalClient); err != nil { return } if request.NewEnabled, err = soap.MarshalBoolean(NewEnabled); err != nil { return } if request.NewPortMappingDescription, err = soap.MarshalString(NewPortMappingDescription); err != nil { return } if request.NewLeaseDuration, err = soap.MarshalUi4(NewLeaseDuration); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "AddPortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } // // Arguments: // // * NewProtocol: allowed values: TCP, UDP func (client *WANPPPConnection1) DeletePortMapping(NewRemoteHost string, NewExternalPort uint16, NewProtocol string) (err error) { // Request structure. request := &struct { NewRemoteHost string NewExternalPort string NewProtocol string }{} // BEGIN Marshal arguments into request. if request.NewRemoteHost, err = soap.MarshalString(NewRemoteHost); err != nil { return } if request.NewExternalPort, err = soap.MarshalUi2(NewExternalPort); err != nil { return } if request.NewProtocol, err = soap.MarshalString(NewProtocol); err != nil { return } // END Marshal arguments into request. // Response structure. response := interface{}(nil) // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "DeletePortMapping", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. // END Unmarshal arguments from response. return } func (client *WANPPPConnection1) GetExternalIPAddress() (NewExternalIPAddress string, err error) { // Request structure. request := interface{}(nil) // BEGIN Marshal arguments into request. // END Marshal arguments into request. // Response structure. response := &struct { NewExternalIPAddress string }{} // Perform the SOAP call. if err = client.SOAPClient.PerformAction(URN_WANPPPConnection_1, "GetExternalIPAddress", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. if NewExternalIPAddress, err = soap.UnmarshalString(response.NewExternalIPAddress); err != nil { return } // END Unmarshal arguments from response. return } goupnp-master/device.go0000644000175000017500000001232113165111724014071 0ustar freefree// This file contains XML structures for communicating with UPnP devices. package goupnp import ( "encoding/xml" "errors" "fmt" "net/url" "github.com/huin/goupnp/scpd" "github.com/huin/goupnp/soap" ) const ( DeviceXMLNamespace = "urn:schemas-upnp-org:device-1-0" ) // RootDevice is the device description as described by section 2.3 "Device // description" in // http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf type RootDevice struct { XMLName xml.Name `xml:"root"` SpecVersion SpecVersion `xml:"specVersion"` URLBase url.URL `xml:"-"` URLBaseStr string `xml:"URLBase"` Device Device `xml:"device"` } // SetURLBase sets the URLBase for the RootDevice and its underlying components. func (root *RootDevice) SetURLBase(urlBase *url.URL) { root.URLBase = *urlBase root.URLBaseStr = urlBase.String() root.Device.SetURLBase(urlBase) } // SpecVersion is part of a RootDevice, describes the version of the // specification that the data adheres to. type SpecVersion struct { Major int32 `xml:"major"` Minor int32 `xml:"minor"` } // Device is a UPnP device. It can have child devices. type Device struct { DeviceType string `xml:"deviceType"` FriendlyName string `xml:"friendlyName"` Manufacturer string `xml:"manufacturer"` ManufacturerURL URLField `xml:"manufacturerURL"` ModelDescription string `xml:"modelDescription"` ModelName string `xml:"modelName"` ModelNumber string `xml:"modelNumber"` ModelURL URLField `xml:"modelURL"` SerialNumber string `xml:"serialNumber"` UDN string `xml:"UDN"` UPC string `xml:"UPC,omitempty"` Icons []Icon `xml:"iconList>icon,omitempty"` Services []Service `xml:"serviceList>service,omitempty"` Devices []Device `xml:"deviceList>device,omitempty"` // Extra observed elements: PresentationURL URLField `xml:"presentationURL"` } // VisitDevices calls visitor for the device, and all its descendent devices. func (device *Device) VisitDevices(visitor func(*Device)) { visitor(device) for i := range device.Devices { device.Devices[i].VisitDevices(visitor) } } // VisitServices calls visitor for all Services under the device and all its // descendent devices. func (device *Device) VisitServices(visitor func(*Service)) { device.VisitDevices(func(d *Device) { for i := range d.Services { visitor(&d.Services[i]) } }) } // FindService finds all (if any) Services under the device and its descendents // that have the given ServiceType. func (device *Device) FindService(serviceType string) []*Service { var services []*Service device.VisitServices(func(s *Service) { if s.ServiceType == serviceType { services = append(services, s) } }) return services } // SetURLBase sets the URLBase for the Device and its underlying components. func (device *Device) SetURLBase(urlBase *url.URL) { device.ManufacturerURL.SetURLBase(urlBase) device.ModelURL.SetURLBase(urlBase) device.PresentationURL.SetURLBase(urlBase) for i := range device.Icons { device.Icons[i].SetURLBase(urlBase) } for i := range device.Services { device.Services[i].SetURLBase(urlBase) } for i := range device.Devices { device.Devices[i].SetURLBase(urlBase) } } func (device *Device) String() string { return fmt.Sprintf("Device ID %s : %s (%s)", device.UDN, device.DeviceType, device.FriendlyName) } // Icon is a representative image that a device might include in its // description. type Icon struct { Mimetype string `xml:"mimetype"` Width int32 `xml:"width"` Height int32 `xml:"height"` Depth int32 `xml:"depth"` URL URLField `xml:"url"` } // SetURLBase sets the URLBase for the Icon. func (icon *Icon) SetURLBase(url *url.URL) { icon.URL.SetURLBase(url) } // Service is a service provided by a UPnP Device. type Service struct { ServiceType string `xml:"serviceType"` ServiceId string `xml:"serviceId"` SCPDURL URLField `xml:"SCPDURL"` ControlURL URLField `xml:"controlURL"` EventSubURL URLField `xml:"eventSubURL"` } // SetURLBase sets the URLBase for the Service. func (srv *Service) SetURLBase(urlBase *url.URL) { srv.SCPDURL.SetURLBase(urlBase) srv.ControlURL.SetURLBase(urlBase) srv.EventSubURL.SetURLBase(urlBase) } func (srv *Service) String() string { return fmt.Sprintf("Service ID %s : %s", srv.ServiceId, srv.ServiceType) } // RequestSCDP requests the SCPD (soap actions and state variables description) // for the service. func (srv *Service) RequestSCDP() (*scpd.SCPD, error) { if !srv.SCPDURL.Ok { return nil, errors.New("bad/missing SCPD URL, or no URLBase has been set") } s := new(scpd.SCPD) if err := requestXml(srv.SCPDURL.URL.String(), scpd.SCPDXMLNamespace, s); err != nil { return nil, err } return s, nil } func (srv *Service) NewSOAPClient() *soap.SOAPClient { return soap.NewSOAPClient(srv.ControlURL.URL) } // URLField is a URL that is part of a device description. type URLField struct { URL url.URL `xml:"-"` Ok bool `xml:"-"` Str string `xml:",chardata"` } func (uf *URLField) SetURLBase(urlBase *url.URL) { refUrl, err := url.Parse(uf.Str) if err != nil { uf.URL = url.URL{} uf.Ok = false return } uf.URL = *urlBase.ResolveReference(refUrl) uf.Ok = true } goupnp-master/example/0000755000175000017500000000000013165111724013737 5ustar freefreegoupnp-master/example/example.go0000644000175000017500000000037013165111724015721 0ustar freefree// Serves as examples of using the goupnp library. // // To run examples and see the output for your local network, run the following // command (specifically including the -v flag): // go test -v github.com/huin/goupnp/example package example goupnp-master/example/example_test.go0000644000175000017500000001174513165111724016770 0ustar freefreepackage example_test import ( "fmt" "net/url" "os" "github.com/huin/goupnp" "github.com/huin/goupnp/dcps/internetgateway1" "github.com/huin/goupnp/dcps/internetgateway2" ) // Use discovered WANPPPConnection1 services to find external IP addresses. func Example_WANPPPConnection1_GetExternalIPAddress() { clients, errors, err := internetgateway1.NewWANPPPConnection1Clients() extIPClients := make([]GetExternalIPAddresser, len(clients)) for i, client := range clients { extIPClients[i] = client } DisplayExternalIPResults(extIPClients, errors, err) // Output: } // Use discovered WANIPConnection services to find external IP addresses. func Example_WANIPConnection_GetExternalIPAddress() { clients, errors, err := internetgateway1.NewWANIPConnection1Clients() extIPClients := make([]GetExternalIPAddresser, len(clients)) for i, client := range clients { extIPClients[i] = client } DisplayExternalIPResults(extIPClients, errors, err) // Output: } type GetExternalIPAddresser interface { GetExternalIPAddress() (NewExternalIPAddress string, err error) GetServiceClient() *goupnp.ServiceClient } func DisplayExternalIPResults(clients []GetExternalIPAddresser, errors []error, err error) { if err != nil { fmt.Fprintln(os.Stderr, "Error discovering service with UPnP: ", err) return } if len(errors) > 0 { fmt.Fprintf(os.Stderr, "Error discovering %d services:\n", len(errors)) for _, err := range errors { fmt.Println(" ", err) } } fmt.Fprintf(os.Stderr, "Successfully discovered %d services:\n", len(clients)) for _, client := range clients { device := &client.GetServiceClient().RootDevice.Device fmt.Fprintln(os.Stderr, " Device:", device.FriendlyName) if addr, err := client.GetExternalIPAddress(); err != nil { fmt.Fprintf(os.Stderr, " Failed to get external IP address: %v\n", err) } else { fmt.Fprintf(os.Stderr, " External IP address: %v\n", addr) } } } func Example_ReuseDiscoveredDevice() { var allMaybeRootDevices []goupnp.MaybeRootDevice for _, urn := range []string{internetgateway1.URN_WANPPPConnection_1, internetgateway1.URN_WANIPConnection_1} { maybeRootDevices, err := goupnp.DiscoverDevices(internetgateway1.URN_WANPPPConnection_1) if err != nil { fmt.Fprintf(os.Stderr, "Could not discover %s devices: %v\n", urn, err) } allMaybeRootDevices = append(allMaybeRootDevices, maybeRootDevices...) } locations := make([]*url.URL, 0, len(allMaybeRootDevices)) fmt.Fprintf(os.Stderr, "Found %d devices:\n", len(allMaybeRootDevices)) for _, maybeRootDevice := range allMaybeRootDevices { if maybeRootDevice.Err != nil { fmt.Fprintln(os.Stderr, " Failed to probe device at ", maybeRootDevice.Location.String()) } else { locations = append(locations, maybeRootDevice.Location) fmt.Fprintln(os.Stderr, " Successfully probed device at ", maybeRootDevice.Location.String()) } } fmt.Fprintf(os.Stderr, "Attempt to re-acquire %d devices:\n", len(locations)) for _, location := range locations { if _, err := goupnp.DeviceByURL(location); err != nil { fmt.Fprintf(os.Stderr, " Failed to reacquire device at %s: %v\n", location.String(), err) } else { fmt.Fprintf(os.Stderr, " Successfully reacquired device at %s\n", location.String()) } } // Output: } // Use discovered igd1.WANCommonInterfaceConfig1 services to discover byte // transfer counts. func Example_WANCommonInterfaceConfig1_GetBytesTransferred() { clients, errors, err := internetgateway1.NewWANCommonInterfaceConfig1Clients() if err != nil { fmt.Fprintln(os.Stderr, "Error discovering service with UPnP:", err) return } fmt.Fprintf(os.Stderr, "Error discovering %d services:\n", len(errors)) for _, err := range errors { fmt.Println(" ", err) } for _, client := range clients { if recv, err := client.GetTotalBytesReceived(); err != nil { fmt.Fprintln(os.Stderr, "Error requesting bytes received:", err) } else { fmt.Fprintln(os.Stderr, "Bytes received:", recv) } if sent, err := client.GetTotalBytesSent(); err != nil { fmt.Fprintln(os.Stderr, "Error requesting bytes sent:", err) } else { fmt.Fprintln(os.Stderr, "Bytes sent:", sent) } } // Output: } // Use discovered igd2.WANCommonInterfaceConfig1 services to discover byte // transfer counts. func Example_WANCommonInterfaceConfig2_GetBytesTransferred() { clients, errors, err := internetgateway2.NewWANCommonInterfaceConfig1Clients() if err != nil { fmt.Fprintln(os.Stderr, "Error discovering service with UPnP:", err) return } fmt.Fprintf(os.Stderr, "Error discovering %d services:\n", len(errors)) for _, err := range errors { fmt.Println(" ", err) } for _, client := range clients { if recv, err := client.GetTotalBytesReceived(); err != nil { fmt.Fprintln(os.Stderr, "Error requesting bytes received:", err) } else { fmt.Fprintln(os.Stderr, "Bytes received:", recv) } if sent, err := client.GetTotalBytesSent(); err != nil { fmt.Fprintln(os.Stderr, "Error requesting bytes sent:", err) } else { fmt.Fprintln(os.Stderr, "Bytes sent:", sent) } } // Output: } goupnp-master/gotasks/0000755000175000017500000000000013165111724013757 5ustar freefreegoupnp-master/gotasks/specgen_task.go0000644000175000017500000004404513165111724016763 0ustar freefree// +build gotask package gotasks import ( "archive/zip" "encoding/xml" "fmt" "io" "log" "net/http" "os" "path" "path/filepath" "regexp" "strings" "text/template" "github.com/huin/goupnp" "github.com/huin/goupnp/scpd" "github.com/huin/goutil/codegen" "github.com/jingweno/gotask/tasking" ) var ( deviceURNPrefix = "urn:schemas-upnp-org:device:" serviceURNPrefix = "urn:schemas-upnp-org:service:" ) // DCP contains extra metadata to use when generating DCP source files. type DCPMetadata struct { Name string // What to name the Go DCP package. OfficialName string // Official name for the DCP. DocURL string // Optional - URL for further documentation about the DCP. XMLSpecURL string // Where to download the XML spec from. // Any special-case functions to run against the DCP before writing it out. Hacks []DCPHackFn } var dcpMetadata = []DCPMetadata{ { Name: "internetgateway1", OfficialName: "Internet Gateway Device v1", DocURL: "http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v1-Device.pdf", XMLSpecURL: "http://upnp.org/specs/gw/UPnP-gw-IGD-TestFiles-20010921.zip", Hacks: []DCPHackFn{ func(dcp *DCP) error { for _, service := range dcp.Services { if service.URN == "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" { variables := service.SCPD.StateVariables for key, variable := range variables { varName := variable.Name if varName == "TotalBytesSent" || varName == "TotalBytesReceived" { // Fix size of total bytes which is by default ui4 or maximum 4 GiB. variable.DataType.Name = "ui8" variables[key] = variable } } break } } return nil }, }, }, { Name: "internetgateway2", OfficialName: "Internet Gateway Device v2", DocURL: "http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v2-Device.pdf", XMLSpecURL: "http://upnp.org/specs/gw/UPnP-gw-IGD-Testfiles-20110224.zip", Hacks: []DCPHackFn{ func(dcp *DCP) error { missingURN := "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" if _, ok := dcp.ServiceTypes[missingURN]; ok { return nil } urnParts, err := extractURNParts(missingURN, serviceURNPrefix) if err != nil { return err } dcp.ServiceTypes[missingURN] = urnParts return nil }, }, }, { Name: "av1", OfficialName: "MediaServer v1 and MediaRenderer v1", DocURL: "http://upnp.org/specs/av/av1/", XMLSpecURL: "http://upnp.org/specs/av/UPnP-av-TestFiles-20070927.zip", }, } type DCPHackFn func(*DCP) error // NAME // specgen - generates Go code from the UPnP specification files. // // DESCRIPTION // The specification is available for download from: // // OPTIONS // -s, --specs_dir= // Path to the specification storage directory. This is used to find (and download if not present) the specification ZIP files. Defaults to 'specs' // -o, --out_dir= // Path to the output directory. This is is where the DCP source files will be placed. Should normally correspond to the directory for github.com/huin/goupnp/dcps. Defaults to '../dcps' // --nogofmt // Disable passing the output through gofmt. Do this if debugging code output problems and needing to see the generated code prior to being passed through gofmt. func TaskSpecgen(t *tasking.T) { specsDir := fallbackStrValue("specs", t.Flags.String("specs_dir"), t.Flags.String("s")) if err := os.MkdirAll(specsDir, os.ModePerm); err != nil { t.Fatalf("Could not create specs-dir %q: %v\n", specsDir, err) } outDir := fallbackStrValue("../dcps", t.Flags.String("out_dir"), t.Flags.String("o")) useGofmt := !t.Flags.Bool("nogofmt") NEXT_DCP: for _, d := range dcpMetadata { specFilename := filepath.Join(specsDir, d.Name+".zip") err := acquireFile(specFilename, d.XMLSpecURL) if err != nil { t.Logf("Could not acquire spec for %s, skipping: %v\n", d.Name, err) continue NEXT_DCP } dcp := newDCP(d) if err := dcp.processZipFile(specFilename); err != nil { log.Printf("Error processing spec for %s in file %q: %v", d.Name, specFilename, err) continue NEXT_DCP } for i, hack := range d.Hacks { if err := hack(dcp); err != nil { log.Printf("Error with Hack[%d] for %s: %v", i, d.Name, err) continue NEXT_DCP } } dcp.writePackage(outDir, useGofmt) if err := dcp.writePackage(outDir, useGofmt); err != nil { log.Printf("Error writing package %q: %v", dcp.Metadata.Name, err) continue NEXT_DCP } } } func fallbackStrValue(defaultValue string, values ...string) string { for _, v := range values { if v != "" { return v } } return defaultValue } func acquireFile(specFilename string, xmlSpecURL string) error { if f, err := os.Open(specFilename); err != nil { if !os.IsNotExist(err) { return err } } else { f.Close() return nil } resp, err := http.Get(xmlSpecURL) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return fmt.Errorf("could not download spec %q from %q: ", specFilename, xmlSpecURL, resp.Status) } tmpFilename := specFilename + ".download" w, err := os.Create(tmpFilename) if err != nil { return err } defer w.Close() _, err = io.Copy(w, resp.Body) if err != nil { return err } return os.Rename(tmpFilename, specFilename) } // DCP collects together information about a UPnP Device Control Protocol. type DCP struct { Metadata DCPMetadata DeviceTypes map[string]*URNParts ServiceTypes map[string]*URNParts Services []SCPDWithURN } func newDCP(metadata DCPMetadata) *DCP { return &DCP{ Metadata: metadata, DeviceTypes: make(map[string]*URNParts), ServiceTypes: make(map[string]*URNParts), } } func (dcp *DCP) processZipFile(filename string) error { archive, err := zip.OpenReader(filename) if err != nil { return fmt.Errorf("error reading zip file %q: %v", filename, err) } defer archive.Close() for _, deviceFile := range globFiles("*/device/*.xml", archive) { if err := dcp.processDeviceFile(deviceFile); err != nil { return err } } for _, scpdFile := range globFiles("*/service/*.xml", archive) { if err := dcp.processSCPDFile(scpdFile); err != nil { return err } } return nil } func (dcp *DCP) processDeviceFile(file *zip.File) error { var device goupnp.Device if err := unmarshalXmlFile(file, &device); err != nil { return fmt.Errorf("error decoding device XML from file %q: %v", file.Name, err) } var mainErr error device.VisitDevices(func(d *goupnp.Device) { t := strings.TrimSpace(d.DeviceType) if t != "" { u, err := extractURNParts(t, deviceURNPrefix) if err != nil { mainErr = err } dcp.DeviceTypes[t] = u } }) device.VisitServices(func(s *goupnp.Service) { u, err := extractURNParts(s.ServiceType, serviceURNPrefix) if err != nil { mainErr = err } dcp.ServiceTypes[s.ServiceType] = u }) return mainErr } func (dcp *DCP) writePackage(outDir string, useGofmt bool) error { packageDirname := filepath.Join(outDir, dcp.Metadata.Name) err := os.MkdirAll(packageDirname, os.ModePerm) if err != nil && !os.IsExist(err) { return err } packageFilename := filepath.Join(packageDirname, dcp.Metadata.Name+".go") packageFile, err := os.Create(packageFilename) if err != nil { return err } var output io.WriteCloser = packageFile if useGofmt { if output, err = codegen.NewGofmtWriteCloser(output); err != nil { packageFile.Close() return err } } if err = packageTmpl.Execute(output, dcp); err != nil { output.Close() return err } return output.Close() } func (dcp *DCP) processSCPDFile(file *zip.File) error { scpd := new(scpd.SCPD) if err := unmarshalXmlFile(file, scpd); err != nil { return fmt.Errorf("error decoding SCPD XML from file %q: %v", file.Name, err) } scpd.Clean() urnParts, err := urnPartsFromSCPDFilename(file.Name) if err != nil { return fmt.Errorf("could not recognize SCPD filename %q: %v", file.Name, err) } dcp.Services = append(dcp.Services, SCPDWithURN{ URNParts: urnParts, SCPD: scpd, }) return nil } type SCPDWithURN struct { *URNParts SCPD *scpd.SCPD } func (s *SCPDWithURN) WrapArguments(args []*scpd.Argument) (argumentWrapperList, error) { wrappedArgs := make(argumentWrapperList, len(args)) for i, arg := range args { wa, err := s.wrapArgument(arg) if err != nil { return nil, err } wrappedArgs[i] = wa } return wrappedArgs, nil } func (s *SCPDWithURN) wrapArgument(arg *scpd.Argument) (*argumentWrapper, error) { relVar := s.SCPD.GetStateVariable(arg.RelatedStateVariable) if relVar == nil { return nil, fmt.Errorf("no such state variable: %q, for argument %q", arg.RelatedStateVariable, arg.Name) } cnv, ok := typeConvs[relVar.DataType.Name] if !ok { return nil, fmt.Errorf("unknown data type: %q, for state variable %q, for argument %q", relVar.DataType.Type, arg.RelatedStateVariable, arg.Name) } return &argumentWrapper{ Argument: *arg, relVar: relVar, conv: cnv, }, nil } type argumentWrapper struct { scpd.Argument relVar *scpd.StateVariable conv conv } func (arg *argumentWrapper) AsParameter() string { return fmt.Sprintf("%s %s", arg.Name, arg.conv.ExtType) } func (arg *argumentWrapper) HasDoc() bool { rng := arg.relVar.AllowedValueRange return ((rng != nil && (rng.Minimum != "" || rng.Maximum != "" || rng.Step != "")) || len(arg.relVar.AllowedValues) > 0) } func (arg *argumentWrapper) Document() string { relVar := arg.relVar if rng := relVar.AllowedValueRange; rng != nil { var parts []string if rng.Minimum != "" { parts = append(parts, fmt.Sprintf("minimum=%s", rng.Minimum)) } if rng.Maximum != "" { parts = append(parts, fmt.Sprintf("maximum=%s", rng.Maximum)) } if rng.Step != "" { parts = append(parts, fmt.Sprintf("step=%s", rng.Step)) } return "allowed value range: " + strings.Join(parts, ", ") } if len(relVar.AllowedValues) != 0 { return "allowed values: " + strings.Join(relVar.AllowedValues, ", ") } return "" } func (arg *argumentWrapper) Marshal() string { return fmt.Sprintf("soap.Marshal%s(%s)", arg.conv.FuncSuffix, arg.Name) } func (arg *argumentWrapper) Unmarshal(objVar string) string { return fmt.Sprintf("soap.Unmarshal%s(%s.%s)", arg.conv.FuncSuffix, objVar, arg.Name) } type argumentWrapperList []*argumentWrapper func (args argumentWrapperList) HasDoc() bool { for _, arg := range args { if arg.HasDoc() { return true } } return false } type conv struct { FuncSuffix string ExtType string } // typeConvs maps from a SOAP type (e.g "fixed.14.4") to the function name // suffix inside the soap module (e.g "Fixed14_4") and the Go type. var typeConvs = map[string]conv{ "ui1": conv{"Ui1", "uint8"}, "ui2": conv{"Ui2", "uint16"}, "ui4": conv{"Ui4", "uint32"}, "ui8": conv{"Ui8", "uint64"}, "i1": conv{"I1", "int8"}, "i2": conv{"I2", "int16"}, "i4": conv{"I4", "int32"}, "int": conv{"Int", "int64"}, "r4": conv{"R4", "float32"}, "r8": conv{"R8", "float64"}, "number": conv{"R8", "float64"}, // Alias for r8. "fixed.14.4": conv{"Fixed14_4", "float64"}, "float": conv{"R8", "float64"}, "char": conv{"Char", "rune"}, "string": conv{"String", "string"}, "date": conv{"Date", "time.Time"}, "dateTime": conv{"DateTime", "time.Time"}, "dateTime.tz": conv{"DateTimeTz", "time.Time"}, "time": conv{"TimeOfDay", "soap.TimeOfDay"}, "time.tz": conv{"TimeOfDayTz", "soap.TimeOfDay"}, "boolean": conv{"Boolean", "bool"}, "bin.base64": conv{"BinBase64", "[]byte"}, "bin.hex": conv{"BinHex", "[]byte"}, "uri": conv{"URI", "*url.URL"}, } func globFiles(pattern string, archive *zip.ReadCloser) []*zip.File { var files []*zip.File for _, f := range archive.File { if matched, err := path.Match(pattern, f.Name); err != nil { // This shouldn't happen - all patterns are hard-coded, errors in them // are a programming error. panic(err) } else if matched { files = append(files, f) } } return files } func unmarshalXmlFile(file *zip.File, data interface{}) error { r, err := file.Open() if err != nil { return err } decoder := xml.NewDecoder(r) defer r.Close() return decoder.Decode(data) } type URNParts struct { URN string Name string Version string } func (u *URNParts) Const() string { return fmt.Sprintf("URN_%s_%s", u.Name, u.Version) } // extractURNParts extracts the name and version from a URN string. func extractURNParts(urn, expectedPrefix string) (*URNParts, error) { if !strings.HasPrefix(urn, expectedPrefix) { return nil, fmt.Errorf("%q does not have expected prefix %q", urn, expectedPrefix) } parts := strings.SplitN(strings.TrimPrefix(urn, expectedPrefix), ":", 2) if len(parts) != 2 { return nil, fmt.Errorf("%q does not have a name and version", urn) } name, version := parts[0], parts[1] return &URNParts{urn, name, version}, nil } var scpdFilenameRe = regexp.MustCompile( `.*/([a-zA-Z0-9]+)([0-9]+)\.xml`) func urnPartsFromSCPDFilename(filename string) (*URNParts, error) { parts := scpdFilenameRe.FindStringSubmatch(filename) if len(parts) != 3 { return nil, fmt.Errorf("SCPD filename %q does not have expected number of parts", filename) } name, version := parts[1], parts[2] return &URNParts{ URN: serviceURNPrefix + name + ":" + version, Name: name, Version: version, }, nil } var packageTmpl = template.Must(template.New("package").Parse(`{{$name := .Metadata.Name}} // Client for UPnP Device Control Protocol {{.Metadata.OfficialName}}. // {{if .Metadata.DocURL}} // This DCP is documented in detail at: {{.Metadata.DocURL}}{{end}} // // Typically, use one of the New* functions to create clients for services. package {{$name}} // Generated file - do not edit by hand. See README.md import ( "net/url" "time" "github.com/huin/goupnp" "github.com/huin/goupnp/soap" ) // Hack to avoid Go complaining if time isn't used. var _ time.Time // Device URNs: const ({{range .DeviceTypes}} {{.Const}} = "{{.URN}}"{{end}} ) // Service URNs: const ({{range .ServiceTypes}} {{.Const}} = "{{.URN}}"{{end}} ) {{range .Services}} {{$srv := .}} {{$srvIdent := printf "%s%s" .Name .Version}} // {{$srvIdent}} is a client for UPnP SOAP service with URN "{{.URN}}". See // goupnp.ServiceClient, which contains RootDevice and Service attributes which // are provided for informational value. type {{$srvIdent}} struct { goupnp.ServiceClient } // New{{$srvIdent}}Clients discovers instances of the service on the network, // and returns clients to any that are found. errors will contain an error for // any devices that replied but which could not be queried, and err will be set // if the discovery process failed outright. // // This is a typical entry calling point into this package. func New{{$srvIdent}}Clients() (clients []*{{$srvIdent}}, errors []error, err error) { var genericClients []goupnp.ServiceClient if genericClients, errors, err = goupnp.NewServiceClients({{$srv.Const}}); err != nil { return } clients = new{{$srvIdent}}ClientsFromGenericClients(genericClients) return } // New{{$srvIdent}}ClientsByURL discovers instances of the service at the given // URL, and returns clients to any that are found. An error is returned if // there was an error probing the service. // // This is a typical entry calling point into this package when reusing an // previously discovered service URL. func New{{$srvIdent}}ClientsByURL(loc *url.URL) ([]*{{$srvIdent}}, error) { genericClients, err := goupnp.NewServiceClientsByURL(loc, {{$srv.Const}}) if err != nil { return nil, err } return new{{$srvIdent}}ClientsFromGenericClients(genericClients), nil } // New{{$srvIdent}}ClientsFromRootDevice discovers instances of the service in // a given root device, and returns clients to any that are found. An error is // returned if there was not at least one instance of the service within the // device. The location parameter is simply assigned to the Location attribute // of the wrapped ServiceClient(s). // // This is a typical entry calling point into this package when reusing an // previously discovered root device. func New{{$srvIdent}}ClientsFromRootDevice(rootDevice *goupnp.RootDevice, loc *url.URL) ([]*{{$srvIdent}}, error) { genericClients, err := goupnp.NewServiceClientsFromRootDevice(rootDevice, loc, {{$srv.Const}}) if err != nil { return nil, err } return new{{$srvIdent}}ClientsFromGenericClients(genericClients), nil } func new{{$srvIdent}}ClientsFromGenericClients(genericClients []goupnp.ServiceClient) []*{{$srvIdent}} { clients := make([]*{{$srvIdent}}, len(genericClients)) for i := range genericClients { clients[i] = &{{$srvIdent}}{genericClients[i]} } return clients } {{range .SCPD.Actions}}{{/* loops over *SCPDWithURN values */}} {{$winargs := $srv.WrapArguments .InputArguments}} {{$woutargs := $srv.WrapArguments .OutputArguments}} {{if $winargs.HasDoc}} // // Arguments:{{range $winargs}}{{if .HasDoc}} // // * {{.Name}}: {{.Document}}{{end}}{{end}}{{end}} {{if $woutargs.HasDoc}} // // Return values:{{range $woutargs}}{{if .HasDoc}} // // * {{.Name}}: {{.Document}}{{end}}{{end}}{{end}} func (client *{{$srvIdent}}) {{.Name}}({{range $winargs}}{{/* */}}{{.AsParameter}}, {{end}}{{/* */}}) ({{range $woutargs}}{{/* */}}{{.AsParameter}}, {{end}} err error) { // Request structure. request := {{if $winargs}}&{{template "argstruct" $winargs}}{{"{}"}}{{else}}{{"interface{}(nil)"}}{{end}} // BEGIN Marshal arguments into request. {{range $winargs}} if request.{{.Name}}, err = {{.Marshal}}; err != nil { return }{{end}} // END Marshal arguments into request. // Response structure. response := {{if $woutargs}}&{{template "argstruct" $woutargs}}{{"{}"}}{{else}}{{"interface{}(nil)"}}{{end}} // Perform the SOAP call. if err = client.SOAPClient.PerformAction({{$srv.URNParts.Const}}, "{{.Name}}", request, response); err != nil { return } // BEGIN Unmarshal arguments from response. {{range $woutargs}} if {{.Name}}, err = {{.Unmarshal "response"}}; err != nil { return }{{end}} // END Unmarshal arguments from response. return } {{end}}{{/* range .SCPD.Actions */}} {{end}}{{/* range .Services */}} {{define "argstruct"}}struct {{"{"}}{{range .}} {{.Name}} string {{end}}{{"}"}}{{end}} `)) goupnp-master/goupnp.go0000644000175000017500000000732713165111724014154 0ustar freefree// goupnp is an implementation of a client for various UPnP services. // // For most uses, it is recommended to use the code-generated packages under // github.com/huin/goupnp/dcps. Example use is shown at // http://godoc.org/github.com/huin/goupnp/example // // A commonly used client is internetgateway1.WANPPPConnection1: // http://godoc.org/github.com/huin/goupnp/dcps/internetgateway1#WANPPPConnection1 // // Currently only a couple of schemas have code generated for them from the // UPnP example XML specifications. Not all methods will work on these clients, // because the generated stubs contain the full set of specified methods from // the XML specifications, and the discovered services will likely support a // subset of those methods. package goupnp import ( "encoding/xml" "fmt" "net/http" "net/url" "time" "golang.org/x/net/html/charset" "github.com/huin/goupnp/httpu" "github.com/huin/goupnp/ssdp" ) // ContextError is an error that wraps an error with some context information. type ContextError struct { Context string Err error } func (err ContextError) Error() string { return fmt.Sprintf("%s: %v", err.Context, err.Err) } // MaybeRootDevice contains either a RootDevice or an error. type MaybeRootDevice struct { // Set iff Err == nil. Root *RootDevice // The location the device was discovered at. This can be used with // DeviceByURL, assuming the device is still present. A location represents // the discovery of a device, regardless of if there was an error probing it. Location *url.URL // Any error encountered probing a discovered device. Err error } // DiscoverDevices attempts to find targets of the given type. This is // typically the entry-point for this package. searchTarget is typically a URN // in the form "urn:schemas-upnp-org:device:..." or // "urn:schemas-upnp-org:service:...". A single error is returned for errors // while attempting to send the query. An error or RootDevice is returned for // each discovered RootDevice. func DiscoverDevices(searchTarget string) ([]MaybeRootDevice, error) { httpu, err := httpu.NewHTTPUClient() if err != nil { return nil, err } defer httpu.Close() responses, err := ssdp.SSDPRawSearch(httpu, string(searchTarget), 2, 3) if err != nil { return nil, err } results := make([]MaybeRootDevice, len(responses)) for i, response := range responses { maybe := &results[i] loc, err := response.Location() if err != nil { maybe.Err = ContextError{"unexpected bad location from search", err} continue } maybe.Location = loc if root, err := DeviceByURL(loc); err != nil { maybe.Err = err } else { maybe.Root = root } } return results, nil } func DeviceByURL(loc *url.URL) (*RootDevice, error) { locStr := loc.String() root := new(RootDevice) if err := requestXml(locStr, DeviceXMLNamespace, root); err != nil { return nil, ContextError{fmt.Sprintf("error requesting root device details from %q", locStr), err} } var urlBaseStr string if root.URLBaseStr != "" { urlBaseStr = root.URLBaseStr } else { urlBaseStr = locStr } urlBase, err := url.Parse(urlBaseStr) if err != nil { return nil, ContextError{fmt.Sprintf("error parsing location URL %q", locStr), err} } root.SetURLBase(urlBase) return root, nil } func requestXml(url string, defaultSpace string, doc interface{}) error { timeout := time.Duration(3 * time.Second) client := http.Client{ Timeout: timeout, } resp, err := client.Get(url) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != 200 { return fmt.Errorf("goupnp: got response status %s from %q", resp.Status, url) } decoder := xml.NewDecoder(resp.Body) decoder.DefaultSpace = defaultSpace decoder.CharsetReader = charset.NewReaderLabel return decoder.Decode(doc) } goupnp-master/httpu/0000755000175000017500000000000013165111724013450 5ustar freefreegoupnp-master/httpu/httpu.go0000644000175000017500000000705013165111724015145 0ustar freefreepackage httpu import ( "bufio" "bytes" "errors" "fmt" "log" "net" "net/http" "sync" "time" ) // HTTPUClient is a client for dealing with HTTPU (HTTP over UDP). Its typical // function is for HTTPMU, and particularly SSDP. type HTTPUClient struct { connLock sync.Mutex // Protects use of conn. conn net.PacketConn } // NewHTTPUClient creates a new HTTPUClient, opening up a new UDP socket for the // purpose. func NewHTTPUClient() (*HTTPUClient, error) { conn, err := net.ListenPacket("udp", ":0") if err != nil { return nil, err } return &HTTPUClient{conn: conn}, nil } // NewHTTPUClientAddr creates a new HTTPUClient which will broadcast packets // from the specified address, opening up a new UDP socket for the purpose func NewHTTPUClientAddr(addr string) (*HTTPUClient, error) { ip := net.ParseIP(addr) if ip == nil { return nil, errors.New("Invalid listening address") } conn, err := net.ListenPacket("udp", ip.String()+":0") if err != nil { return nil, err } return &HTTPUClient{conn: conn}, nil } // Close shuts down the client. The client will no longer be useful following // this. func (httpu *HTTPUClient) Close() error { httpu.connLock.Lock() defer httpu.connLock.Unlock() return httpu.conn.Close() } // Do performs a request. The timeout is how long to wait for before returning // the responses that were received. An error is only returned for failing to // send the request. Failures in receipt simply do not add to the resulting // responses. // // Note that at present only one concurrent connection will happen per // HTTPUClient. func (httpu *HTTPUClient) Do(req *http.Request, timeout time.Duration, numSends int) ([]*http.Response, error) { httpu.connLock.Lock() defer httpu.connLock.Unlock() // Create the request. This is a subset of what http.Request.Write does // deliberately to avoid creating extra fields which may confuse some // devices. var requestBuf bytes.Buffer method := req.Method if method == "" { method = "GET" } if _, err := fmt.Fprintf(&requestBuf, "%s %s HTTP/1.1\r\n", method, req.URL.RequestURI()); err != nil { return nil, err } if err := req.Header.Write(&requestBuf); err != nil { return nil, err } if _, err := requestBuf.Write([]byte{'\r', '\n'}); err != nil { return nil, err } destAddr, err := net.ResolveUDPAddr("udp", req.Host) if err != nil { return nil, err } if err = httpu.conn.SetDeadline(time.Now().Add(timeout)); err != nil { return nil, err } // Send request. for i := 0; i < numSends; i++ { if n, err := httpu.conn.WriteTo(requestBuf.Bytes(), destAddr); err != nil { return nil, err } else if n < len(requestBuf.Bytes()) { return nil, fmt.Errorf("httpu: wrote %d bytes rather than full %d in request", n, len(requestBuf.Bytes())) } time.Sleep(5 * time.Millisecond) } // Await responses until timeout. var responses []*http.Response responseBytes := make([]byte, 2048) for { // 2048 bytes should be sufficient for most networks. n, _, err := httpu.conn.ReadFrom(responseBytes) if err != nil { if err, ok := err.(net.Error); ok { if err.Timeout() { break } if err.Temporary() { // Sleep in case this is a persistent error to avoid pegging CPU until deadline. time.Sleep(10 * time.Millisecond) continue } } return nil, err } // Parse response. response, err := http.ReadResponse(bufio.NewReader(bytes.NewBuffer(responseBytes[:n])), req) if err != nil { log.Printf("httpu: error while parsing response: %v", err) continue } responses = append(responses, response) } return responses, err } goupnp-master/httpu/serve.go0000644000175000017500000000556713165111724015140 0ustar freefreepackage httpu import ( "bufio" "bytes" "log" "net" "net/http" "regexp" ) const ( DefaultMaxMessageBytes = 2048 ) var ( trailingWhitespaceRx = regexp.MustCompile(" +\r\n") crlf = []byte("\r\n") ) // Handler is the interface by which received HTTPU messages are passed to // handling code. type Handler interface { // ServeMessage is called for each HTTPU message received. peerAddr contains // the address that the message was received from. ServeMessage(r *http.Request) } // HandlerFunc is a function-to-Handler adapter. type HandlerFunc func(r *http.Request) func (f HandlerFunc) ServeMessage(r *http.Request) { f(r) } // A Server defines parameters for running an HTTPU server. type Server struct { Addr string // UDP address to listen on Multicast bool // Should listen for multicast? Interface *net.Interface // Network interface to listen on for multicast, nil for default multicast interface Handler Handler // handler to invoke MaxMessageBytes int // maximum number of bytes to read from a packet, DefaultMaxMessageBytes if 0 } // ListenAndServe listens on the UDP network address srv.Addr. If srv.Multicast // is true, then a multicast UDP listener will be used on srv.Interface (or // default interface if nil). func (srv *Server) ListenAndServe() error { var err error var addr *net.UDPAddr if addr, err = net.ResolveUDPAddr("udp", srv.Addr); err != nil { log.Fatal(err) } var conn net.PacketConn if srv.Multicast { if conn, err = net.ListenMulticastUDP("udp", srv.Interface, addr); err != nil { return err } } else { if conn, err = net.ListenUDP("udp", addr); err != nil { return err } } return srv.Serve(conn) } // Serve messages received on the given packet listener to the srv.Handler. func (srv *Server) Serve(l net.PacketConn) error { maxMessageBytes := DefaultMaxMessageBytes if srv.MaxMessageBytes != 0 { maxMessageBytes = srv.MaxMessageBytes } for { buf := make([]byte, maxMessageBytes) n, peerAddr, err := l.ReadFrom(buf) if err != nil { return err } buf = buf[:n] go func(buf []byte, peerAddr net.Addr) { // At least one router's UPnP implementation has added a trailing space // after "HTTP/1.1" - trim it. buf = trailingWhitespaceRx.ReplaceAllLiteral(buf, crlf) req, err := http.ReadRequest(bufio.NewReader(bytes.NewBuffer(buf))) if err != nil { log.Printf("httpu: Failed to parse request: %v", err) return } req.RemoteAddr = peerAddr.String() srv.Handler.ServeMessage(req) // No need to call req.Body.Close - underlying reader is bytes.Buffer. }(buf, peerAddr) } } // Serve messages received on the given packet listener to the given handler. func Serve(l net.PacketConn, handler Handler) error { srv := Server{ Handler: handler, MaxMessageBytes: DefaultMaxMessageBytes, } return srv.Serve(l) } goupnp-master/scpd/0000755000175000017500000000000013165111724013235 5ustar freefreegoupnp-master/scpd/scpd.go0000644000175000017500000001001713165111724014514 0ustar freefreepackage scpd import ( "encoding/xml" "strings" ) const ( SCPDXMLNamespace = "urn:schemas-upnp-org:service-1-0" ) func cleanWhitespace(s *string) { *s = strings.TrimSpace(*s) } // SCPD is the service description as described by section 2.5 "Service // description" in // http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf type SCPD struct { XMLName xml.Name `xml:"scpd"` ConfigId string `xml:"configId,attr"` SpecVersion SpecVersion `xml:"specVersion"` Actions []Action `xml:"actionList>action"` StateVariables []StateVariable `xml:"serviceStateTable>stateVariable"` } // Clean attempts to remove stray whitespace etc. in the structure. It seems // unfortunately common for stray whitespace to be present in SCPD documents, // this method attempts to make it easy to clean them out. func (scpd *SCPD) Clean() { cleanWhitespace(&scpd.ConfigId) for i := range scpd.Actions { scpd.Actions[i].clean() } for i := range scpd.StateVariables { scpd.StateVariables[i].clean() } } func (scpd *SCPD) GetStateVariable(variable string) *StateVariable { for i := range scpd.StateVariables { v := &scpd.StateVariables[i] if v.Name == variable { return v } } return nil } func (scpd *SCPD) GetAction(action string) *Action { for i := range scpd.Actions { a := &scpd.Actions[i] if a.Name == action { return a } } return nil } // SpecVersion is part of a SCPD document, describes the version of the // specification that the data adheres to. type SpecVersion struct { Major int32 `xml:"major"` Minor int32 `xml:"minor"` } type Action struct { Name string `xml:"name"` Arguments []Argument `xml:"argumentList>argument"` } func (action *Action) clean() { cleanWhitespace(&action.Name) for i := range action.Arguments { action.Arguments[i].clean() } } func (action *Action) InputArguments() []*Argument { var result []*Argument for i := range action.Arguments { arg := &action.Arguments[i] if arg.IsInput() { result = append(result, arg) } } return result } func (action *Action) OutputArguments() []*Argument { var result []*Argument for i := range action.Arguments { arg := &action.Arguments[i] if arg.IsOutput() { result = append(result, arg) } } return result } type Argument struct { Name string `xml:"name"` Direction string `xml:"direction"` // in|out RelatedStateVariable string `xml:"relatedStateVariable"` // ? Retval string `xml:"retval"` // ? } func (arg *Argument) clean() { cleanWhitespace(&arg.Name) cleanWhitespace(&arg.Direction) cleanWhitespace(&arg.RelatedStateVariable) cleanWhitespace(&arg.Retval) } func (arg *Argument) IsInput() bool { return arg.Direction == "in" } func (arg *Argument) IsOutput() bool { return arg.Direction == "out" } type StateVariable struct { Name string `xml:"name"` SendEvents string `xml:"sendEvents,attr"` // yes|no Multicast string `xml:"multicast,attr"` // yes|no DataType DataType `xml:"dataType"` DefaultValue string `xml:"defaultValue"` AllowedValueRange *AllowedValueRange `xml:"allowedValueRange"` AllowedValues []string `xml:"allowedValueList>allowedValue"` } func (v *StateVariable) clean() { cleanWhitespace(&v.Name) cleanWhitespace(&v.SendEvents) cleanWhitespace(&v.Multicast) v.DataType.clean() cleanWhitespace(&v.DefaultValue) if v.AllowedValueRange != nil { v.AllowedValueRange.clean() } for i := range v.AllowedValues { cleanWhitespace(&v.AllowedValues[i]) } } type AllowedValueRange struct { Minimum string `xml:"minimum"` Maximum string `xml:"maximum"` Step string `xml:"step"` } func (r *AllowedValueRange) clean() { cleanWhitespace(&r.Minimum) cleanWhitespace(&r.Maximum) cleanWhitespace(&r.Step) } type DataType struct { Name string `xml:",chardata"` Type string `xml:"type,attr"` } func (dt *DataType) clean() { cleanWhitespace(&dt.Name) cleanWhitespace(&dt.Type) } goupnp-master/service_client.go0000644000175000017500000000545413165111724015641 0ustar freefreepackage goupnp import ( "fmt" "net/url" "github.com/huin/goupnp/soap" ) // ServiceClient is a SOAP client, root device and the service for the SOAP // client rolled into one value. The root device, location, and service are // intended to be informational. Location can be used to later recreate a // ServiceClient with NewServiceClientByURL if the service is still present; // bypassing the discovery process. type ServiceClient struct { SOAPClient *soap.SOAPClient RootDevice *RootDevice Location *url.URL Service *Service } // NewServiceClients discovers services, and returns clients for them. err will // report any error with the discovery process (blocking any device/service // discovery), errors reports errors on a per-root-device basis. func NewServiceClients(searchTarget string) (clients []ServiceClient, errors []error, err error) { var maybeRootDevices []MaybeRootDevice if maybeRootDevices, err = DiscoverDevices(searchTarget); err != nil { return } clients = make([]ServiceClient, 0, len(maybeRootDevices)) for _, maybeRootDevice := range maybeRootDevices { if maybeRootDevice.Err != nil { errors = append(errors, maybeRootDevice.Err) continue } deviceClients, err := NewServiceClientsFromRootDevice(maybeRootDevice.Root, maybeRootDevice.Location, searchTarget) if err != nil { errors = append(errors, err) continue } clients = append(clients, deviceClients...) } return } // NewServiceClientsByURL creates client(s) for the given service URN, for a // root device at the given URL. func NewServiceClientsByURL(loc *url.URL, searchTarget string) ([]ServiceClient, error) { rootDevice, err := DeviceByURL(loc) if err != nil { return nil, err } return NewServiceClientsFromRootDevice(rootDevice, loc, searchTarget) } // NewServiceClientsFromDevice creates client(s) for the given service URN, in // a given root device. The loc parameter is simply assigned to the // Location attribute of the returned ServiceClient(s). func NewServiceClientsFromRootDevice(rootDevice *RootDevice, loc *url.URL, searchTarget string) ([]ServiceClient, error) { device := &rootDevice.Device srvs := device.FindService(searchTarget) if len(srvs) == 0 { return nil, fmt.Errorf("goupnp: service %q not found within device %q (UDN=%q)", searchTarget, device.FriendlyName, device.UDN) } clients := make([]ServiceClient, 0, len(srvs)) for _, srv := range srvs { clients = append(clients, ServiceClient{ SOAPClient: srv.NewSOAPClient(), RootDevice: rootDevice, Location: loc, Service: srv, }) } return clients, nil } // GetServiceClient returns the ServiceClient itself. This is provided so that the // service client attributes can be accessed via an interface method on a // wrapping type. func (client *ServiceClient) GetServiceClient() *ServiceClient { return client } goupnp-master/soap/0000755000175000017500000000000013165111724013246 5ustar freefreegoupnp-master/soap/soap.go0000644000175000017500000001170013165111724014536 0ustar freefree// Definition for the SOAP structure required for UPnP's SOAP usage. package soap import ( "bytes" "encoding/xml" "fmt" "io/ioutil" "net/http" "net/url" "reflect" ) const ( soapEncodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" soapPrefix = xml.Header + `` soapSuffix = `` ) type SOAPClient struct { EndpointURL url.URL HTTPClient http.Client } func NewSOAPClient(endpointURL url.URL) *SOAPClient { return &SOAPClient{ EndpointURL: endpointURL, } } // PerformSOAPAction makes a SOAP request, with the given action. // inAction and outAction must both be pointers to structs with string fields // only. func (client *SOAPClient) PerformAction(actionNamespace, actionName string, inAction interface{}, outAction interface{}) error { requestBytes, err := encodeRequestAction(actionNamespace, actionName, inAction) if err != nil { return err } response, err := client.HTTPClient.Do(&http.Request{ Method: "POST", URL: &client.EndpointURL, Header: http.Header{ "SOAPACTION": []string{`"` + actionNamespace + "#" + actionName + `"`}, "CONTENT-TYPE": []string{"text/xml; charset=\"utf-8\""}, }, Body: ioutil.NopCloser(bytes.NewBuffer(requestBytes)), // Set ContentLength to avoid chunked encoding - some servers might not support it. ContentLength: int64(len(requestBytes)), }) if err != nil { return fmt.Errorf("goupnp: error performing SOAP HTTP request: %v", err) } defer response.Body.Close() if response.StatusCode != 200 { return fmt.Errorf("goupnp: SOAP request got HTTP %s", response.Status) } responseEnv := newSOAPEnvelope() decoder := xml.NewDecoder(response.Body) if err := decoder.Decode(responseEnv); err != nil { return fmt.Errorf("goupnp: error decoding response body: %v", err) } if responseEnv.Body.Fault != nil { return responseEnv.Body.Fault } if outAction != nil { if err := xml.Unmarshal(responseEnv.Body.RawAction, outAction); err != nil { return fmt.Errorf("goupnp: error unmarshalling out action: %v, %v", err, responseEnv.Body.RawAction) } } return nil } // newSOAPAction creates a soapEnvelope with the given action and arguments. func newSOAPEnvelope() *soapEnvelope { return &soapEnvelope{ EncodingStyle: soapEncodingStyle, } } // encodeRequestAction is a hacky way to create an encoded SOAP envelope // containing the given action. Experiments with one router have shown that it // 500s for requests where the outer default xmlns is set to the SOAP // namespace, and then reassigning the default namespace within that to the // service namespace. Hand-coding the outer XML to work-around this. func encodeRequestAction(actionNamespace, actionName string, inAction interface{}) ([]byte, error) { requestBuf := new(bytes.Buffer) requestBuf.WriteString(soapPrefix) requestBuf.WriteString(``) if inAction != nil { if err := encodeRequestArgs(requestBuf, inAction); err != nil { return nil, err } } requestBuf.WriteString(``) requestBuf.WriteString(soapSuffix) return requestBuf.Bytes(), nil } func encodeRequestArgs(w *bytes.Buffer, inAction interface{}) error { in := reflect.Indirect(reflect.ValueOf(inAction)) if in.Kind() != reflect.Struct { return fmt.Errorf("goupnp: SOAP inAction is not a struct but of type %v", in.Type()) } enc := xml.NewEncoder(w) nFields := in.NumField() inType := in.Type() for i := 0; i < nFields; i++ { field := inType.Field(i) argName := field.Name if nameOverride := field.Tag.Get("soap"); nameOverride != "" { argName = nameOverride } value := in.Field(i) if value.Kind() != reflect.String { return fmt.Errorf("goupnp: SOAP arg %q is not of type string, but of type %v", argName, value.Type()) } if err := enc.EncodeElement(value.Interface(), xml.StartElement{xml.Name{"", argName}, nil}); err != nil { return fmt.Errorf("goupnp: error encoding SOAP arg %q: %v", argName, err) } } enc.Flush() return nil } type soapEnvelope struct { XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Envelope"` EncodingStyle string `xml:"http://schemas.xmlsoap.org/soap/envelope/ encodingStyle,attr"` Body soapBody `xml:"http://schemas.xmlsoap.org/soap/envelope/ Body"` } type soapBody struct { Fault *SOAPFaultError `xml:"Fault"` RawAction []byte `xml:",innerxml"` } // SOAPFaultError implements error, and contains SOAP fault information. type SOAPFaultError struct { FaultCode string `xml:"faultcode"` FaultString string `xml:"faultstring"` Detail string `xml:"detail"` } func (err *SOAPFaultError) Error() string { return fmt.Sprintf("SOAP fault: %s", err.FaultString) } goupnp-master/soap/soap_test.go0000644000175000017500000000324713165111724015604 0ustar freefreepackage soap import ( "bytes" "io/ioutil" "net/http" "net/url" "reflect" "testing" ) type capturingRoundTripper struct { err error resp *http.Response capturedReq *http.Request } func (rt *capturingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { rt.capturedReq = req return rt.resp, rt.err } func TestActionInputs(t *testing.T) { url, err := url.Parse("http://example.com/soap") if err != nil { t.Fatal(err) } rt := &capturingRoundTripper{ err: nil, resp: &http.Response{ StatusCode: 200, Body: ioutil.NopCloser(bytes.NewBufferString(` valueA valueB `)), }, } client := SOAPClient{ EndpointURL: *url, HTTPClient: http.Client{ Transport: rt, }, } type In struct { Foo string Bar string `soap:"bar"` } type Out struct { A string B string } in := In{"foo", "bar"} gotOut := Out{} err = client.PerformAction("mynamespace", "myaction", &in, &gotOut) if err != nil { t.Fatal(err) } wantBody := (soapPrefix + `` + `foo` + `bar` + `` + soapSuffix) body, err := ioutil.ReadAll(rt.capturedReq.Body) if err != nil { t.Fatal(err) } gotBody := string(body) if wantBody != gotBody { t.Errorf("Bad request body\nwant: %q\n got: %q", wantBody, gotBody) } wantOut := Out{"valueA", "valueB"} if !reflect.DeepEqual(wantOut, gotOut) { t.Errorf("Bad output\nwant: %+v\n got: %+v", wantOut, gotOut) } } goupnp-master/soap/types.go0000644000175000017500000003173613165111724014753 0ustar freefreepackage soap import ( "encoding/base64" "encoding/hex" "errors" "fmt" "net/url" "regexp" "strconv" "strings" "time" "unicode/utf8" ) var ( // localLoc acts like time.Local for this package, but is faked out by the // unit tests to ensure that things stay constant (especially when running // this test in a place where local time is UTC which might mask bugs). localLoc = time.Local ) func MarshalUi1(v uint8) (string, error) { return strconv.FormatUint(uint64(v), 10), nil } func UnmarshalUi1(s string) (uint8, error) { v, err := strconv.ParseUint(s, 10, 8) return uint8(v), err } func MarshalUi2(v uint16) (string, error) { return strconv.FormatUint(uint64(v), 10), nil } func UnmarshalUi2(s string) (uint16, error) { v, err := strconv.ParseUint(s, 10, 16) return uint16(v), err } func MarshalUi4(v uint32) (string, error) { return strconv.FormatUint(uint64(v), 10), nil } func UnmarshalUi4(s string) (uint32, error) { v, err := strconv.ParseUint(s, 10, 32) return uint32(v), err } func MarshalUi8(v uint64) (string, error) { return strconv.FormatUint(v, 10), nil } func UnmarshalUi8(s string) (uint64, error) { v, err := strconv.ParseUint(s, 10, 64) return uint64(v), err } func MarshalI1(v int8) (string, error) { return strconv.FormatInt(int64(v), 10), nil } func UnmarshalI1(s string) (int8, error) { v, err := strconv.ParseInt(s, 10, 8) return int8(v), err } func MarshalI2(v int16) (string, error) { return strconv.FormatInt(int64(v), 10), nil } func UnmarshalI2(s string) (int16, error) { v, err := strconv.ParseInt(s, 10, 16) return int16(v), err } func MarshalI4(v int32) (string, error) { return strconv.FormatInt(int64(v), 10), nil } func UnmarshalI4(s string) (int32, error) { v, err := strconv.ParseInt(s, 10, 32) return int32(v), err } func MarshalInt(v int64) (string, error) { return strconv.FormatInt(v, 10), nil } func UnmarshalInt(s string) (int64, error) { return strconv.ParseInt(s, 10, 64) } func MarshalR4(v float32) (string, error) { return strconv.FormatFloat(float64(v), 'G', -1, 32), nil } func UnmarshalR4(s string) (float32, error) { v, err := strconv.ParseFloat(s, 32) return float32(v), err } func MarshalR8(v float64) (string, error) { return strconv.FormatFloat(v, 'G', -1, 64), nil } func UnmarshalR8(s string) (float64, error) { v, err := strconv.ParseFloat(s, 64) return float64(v), err } // MarshalFixed14_4 marshals float64 to SOAP "fixed.14.4" type. func MarshalFixed14_4(v float64) (string, error) { if v >= 1e14 || v <= -1e14 { return "", fmt.Errorf("soap fixed14.4: value %v out of bounds", v) } return strconv.FormatFloat(v, 'f', 4, 64), nil } // UnmarshalFixed14_4 unmarshals float64 from SOAP "fixed.14.4" type. func UnmarshalFixed14_4(s string) (float64, error) { v, err := strconv.ParseFloat(s, 64) if err != nil { return 0, err } if v >= 1e14 || v <= -1e14 { return 0, fmt.Errorf("soap fixed14.4: value %q out of bounds", s) } return v, nil } // MarshalChar marshals rune to SOAP "char" type. func MarshalChar(v rune) (string, error) { if v == 0 { return "", errors.New("soap char: rune 0 is not allowed") } return string(v), nil } // UnmarshalChar unmarshals rune from SOAP "char" type. func UnmarshalChar(s string) (rune, error) { if len(s) == 0 { return 0, errors.New("soap char: got empty string") } r, n := utf8.DecodeRune([]byte(s)) if n != len(s) { return 0, fmt.Errorf("soap char: value %q is not a single rune", s) } return r, nil } func MarshalString(v string) (string, error) { return v, nil } func UnmarshalString(v string) (string, error) { return v, nil } func parseInt(s string, err *error) int { v, parseErr := strconv.ParseInt(s, 10, 64) if parseErr != nil { *err = parseErr } return int(v) } var dateRegexps = []*regexp.Regexp{ // yyyy[-mm[-dd]] regexp.MustCompile(`^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?$`), // yyyy[mm[dd]] regexp.MustCompile(`^(\d{4})(?:(\d{2})(?:(\d{2}))?)?$`), } func parseDateParts(s string) (year, month, day int, err error) { var parts []string for _, re := range dateRegexps { parts = re.FindStringSubmatch(s) if parts != nil { break } } if parts == nil { err = fmt.Errorf("soap date: value %q is not in a recognized ISO8601 date format", s) return } year = parseInt(parts[1], &err) month = 1 day = 1 if len(parts[2]) != 0 { month = parseInt(parts[2], &err) if len(parts[3]) != 0 { day = parseInt(parts[3], &err) } } if err != nil { err = fmt.Errorf("soap date: %q: %v", s, err) } return } var timeRegexps = []*regexp.Regexp{ // hh[:mm[:ss]] regexp.MustCompile(`^(\d{2})(?::(\d{2})(?::(\d{2}))?)?$`), // hh[mm[ss]] regexp.MustCompile(`^(\d{2})(?:(\d{2})(?:(\d{2}))?)?$`), } func parseTimeParts(s string) (hour, minute, second int, err error) { var parts []string for _, re := range timeRegexps { parts = re.FindStringSubmatch(s) if parts != nil { break } } if parts == nil { err = fmt.Errorf("soap time: value %q is not in ISO8601 time format", s) return } hour = parseInt(parts[1], &err) if len(parts[2]) != 0 { minute = parseInt(parts[2], &err) if len(parts[3]) != 0 { second = parseInt(parts[3], &err) } } if err != nil { err = fmt.Errorf("soap time: %q: %v", s, err) } return } // (+|-)hh[[:]mm] var timezoneRegexp = regexp.MustCompile(`^([+-])(\d{2})(?::?(\d{2}))?$`) func parseTimezone(s string) (offset int, err error) { if s == "Z" { return 0, nil } parts := timezoneRegexp.FindStringSubmatch(s) if parts == nil { err = fmt.Errorf("soap timezone: value %q is not in ISO8601 timezone format", s) return } offset = parseInt(parts[2], &err) * 3600 if len(parts[3]) != 0 { offset += parseInt(parts[3], &err) * 60 } if parts[1] == "-" { offset = -offset } if err != nil { err = fmt.Errorf("soap timezone: %q: %v", s, err) } return } var completeDateTimeZoneRegexp = regexp.MustCompile(`^([^T]+)(?:T([^-+Z]+)(.+)?)?$`) // splitCompleteDateTimeZone splits date, time and timezone apart from an // ISO8601 string. It does not ensure that the contents of each part are // correct, it merely splits on certain delimiters. // e.g "2010-09-08T12:15:10+0700" => "2010-09-08", "12:15:10", "+0700". // Timezone can only be present if time is also present. func splitCompleteDateTimeZone(s string) (dateStr, timeStr, zoneStr string, err error) { parts := completeDateTimeZoneRegexp.FindStringSubmatch(s) if parts == nil { err = fmt.Errorf("soap date/time/zone: value %q is not in ISO8601 datetime format", s) return } dateStr = parts[1] timeStr = parts[2] zoneStr = parts[3] return } // MarshalDate marshals time.Time to SOAP "date" type. Note that this converts // to local time, and discards the time-of-day components. func MarshalDate(v time.Time) (string, error) { return v.In(localLoc).Format("2006-01-02"), nil } var dateFmts = []string{"2006-01-02", "20060102"} // UnmarshalDate unmarshals time.Time from SOAP "date" type. This outputs the // date as midnight in the local time zone. func UnmarshalDate(s string) (time.Time, error) { year, month, day, err := parseDateParts(s) if err != nil { return time.Time{}, err } return time.Date(year, time.Month(month), day, 0, 0, 0, 0, localLoc), nil } // TimeOfDay is used in cases where SOAP "time" or "time.tz" is used. type TimeOfDay struct { // Duration of time since midnight. FromMidnight time.Duration // Set to true if Offset is specified. If false, then the timezone is // unspecified (and by ISO8601 - implies some "local" time). HasOffset bool // Offset is non-zero only if time.tz is used. It is otherwise ignored. If // non-zero, then it is regarded as a UTC offset in seconds. Note that the // sub-minutes is ignored by the marshal function. Offset int } // MarshalTimeOfDay marshals TimeOfDay to the "time" type. func MarshalTimeOfDay(v TimeOfDay) (string, error) { d := int64(v.FromMidnight / time.Second) hour := d / 3600 d = d % 3600 minute := d / 60 second := d % 60 return fmt.Sprintf("%02d:%02d:%02d", hour, minute, second), nil } // UnmarshalTimeOfDay unmarshals TimeOfDay from the "time" type. func UnmarshalTimeOfDay(s string) (TimeOfDay, error) { t, err := UnmarshalTimeOfDayTz(s) if err != nil { return TimeOfDay{}, err } else if t.HasOffset { return TimeOfDay{}, fmt.Errorf("soap time: value %q contains unexpected timezone") } return t, nil } // MarshalTimeOfDayTz marshals TimeOfDay to the "time.tz" type. func MarshalTimeOfDayTz(v TimeOfDay) (string, error) { d := int64(v.FromMidnight / time.Second) hour := d / 3600 d = d % 3600 minute := d / 60 second := d % 60 tz := "" if v.HasOffset { if v.Offset == 0 { tz = "Z" } else { offsetMins := v.Offset / 60 sign := '+' if offsetMins < 1 { offsetMins = -offsetMins sign = '-' } tz = fmt.Sprintf("%c%02d:%02d", sign, offsetMins/60, offsetMins%60) } } return fmt.Sprintf("%02d:%02d:%02d%s", hour, minute, second, tz), nil } // UnmarshalTimeOfDayTz unmarshals TimeOfDay from the "time.tz" type. func UnmarshalTimeOfDayTz(s string) (tod TimeOfDay, err error) { zoneIndex := strings.IndexAny(s, "Z+-") var timePart string var hasOffset bool var offset int if zoneIndex == -1 { hasOffset = false timePart = s } else { hasOffset = true timePart = s[:zoneIndex] if offset, err = parseTimezone(s[zoneIndex:]); err != nil { return } } hour, minute, second, err := parseTimeParts(timePart) if err != nil { return } fromMidnight := time.Duration(hour*3600+minute*60+second) * time.Second // ISO8601 special case - values up to 24:00:00 are allowed, so using // strictly greater-than for the maximum value. if fromMidnight > 24*time.Hour || minute >= 60 || second >= 60 { return TimeOfDay{}, fmt.Errorf("soap time.tz: value %q has value(s) out of range", s) } return TimeOfDay{ FromMidnight: time.Duration(hour*3600+minute*60+second) * time.Second, HasOffset: hasOffset, Offset: offset, }, nil } // MarshalDateTime marshals time.Time to SOAP "dateTime" type. Note that this // converts to local time. func MarshalDateTime(v time.Time) (string, error) { return v.In(localLoc).Format("2006-01-02T15:04:05"), nil } // UnmarshalDateTime unmarshals time.Time from the SOAP "dateTime" type. This // returns a value in the local timezone. func UnmarshalDateTime(s string) (result time.Time, err error) { dateStr, timeStr, zoneStr, err := splitCompleteDateTimeZone(s) if err != nil { return } if len(zoneStr) != 0 { err = fmt.Errorf("soap datetime: unexpected timezone in %q", s) return } year, month, day, err := parseDateParts(dateStr) if err != nil { return } var hour, minute, second int if len(timeStr) != 0 { hour, minute, second, err = parseTimeParts(timeStr) if err != nil { return } } result = time.Date(year, time.Month(month), day, hour, minute, second, 0, localLoc) return } // MarshalDateTimeTz marshals time.Time to SOAP "dateTime.tz" type. func MarshalDateTimeTz(v time.Time) (string, error) { return v.Format("2006-01-02T15:04:05-07:00"), nil } // UnmarshalDateTimeTz unmarshals time.Time from the SOAP "dateTime.tz" type. // This returns a value in the local timezone when the timezone is unspecified. func UnmarshalDateTimeTz(s string) (result time.Time, err error) { dateStr, timeStr, zoneStr, err := splitCompleteDateTimeZone(s) if err != nil { return } year, month, day, err := parseDateParts(dateStr) if err != nil { return } var hour, minute, second int var location *time.Location = localLoc if len(timeStr) != 0 { hour, minute, second, err = parseTimeParts(timeStr) if err != nil { return } if len(zoneStr) != 0 { var offset int offset, err = parseTimezone(zoneStr) if offset == 0 { location = time.UTC } else { location = time.FixedZone("", offset) } } } result = time.Date(year, time.Month(month), day, hour, minute, second, 0, location) return } // MarshalBoolean marshals bool to SOAP "boolean" type. func MarshalBoolean(v bool) (string, error) { if v { return "1", nil } return "0", nil } // UnmarshalBoolean unmarshals bool from the SOAP "boolean" type. func UnmarshalBoolean(s string) (bool, error) { switch s { case "0", "false", "no": return false, nil case "1", "true", "yes": return true, nil } return false, fmt.Errorf("soap boolean: %q is not a valid boolean value", s) } // MarshalBinBase64 marshals []byte to SOAP "bin.base64" type. func MarshalBinBase64(v []byte) (string, error) { return base64.StdEncoding.EncodeToString(v), nil } // UnmarshalBinBase64 unmarshals []byte from the SOAP "bin.base64" type. func UnmarshalBinBase64(s string) ([]byte, error) { return base64.StdEncoding.DecodeString(s) } // MarshalBinHex marshals []byte to SOAP "bin.hex" type. func MarshalBinHex(v []byte) (string, error) { return hex.EncodeToString(v), nil } // UnmarshalBinHex unmarshals []byte from the SOAP "bin.hex" type. func UnmarshalBinHex(s string) ([]byte, error) { return hex.DecodeString(s) } // MarshalURI marshals *url.URL to SOAP "uri" type. func MarshalURI(v *url.URL) (string, error) { return v.String(), nil } // UnmarshalURI unmarshals *url.URL from the SOAP "uri" type. func UnmarshalURI(s string) (*url.URL, error) { return url.Parse(s) } goupnp-master/soap/types_test.go0000644000175000017500000004572113165111724016011 0ustar freefreepackage soap import ( "bytes" "math" "net/url" "testing" "time" ) type convTest interface { Marshal() (string, error) Unmarshal(string) (interface{}, error) Equal(result interface{}) bool } // duper is an interface that convTest values may optionally also implement to // generate another convTest for a value in an otherwise identical testCase. type duper interface { Dupe(tag string) []convTest } type testCase struct { value convTest str string wantMarshalErr bool wantUnmarshalErr bool noMarshal bool noUnMarshal bool tag string } type Ui1Test uint8 func (v Ui1Test) Marshal() (string, error) { return MarshalUi1(uint8(v)) } func (v Ui1Test) Unmarshal(s string) (interface{}, error) { return UnmarshalUi1(s) } func (v Ui1Test) Equal(result interface{}) bool { return uint8(v) == result.(uint8) } func (v Ui1Test) Dupe(tag string) []convTest { if tag == "dupe" { return []convTest{ Ui2Test(v), Ui4Test(v), } } return nil } type Ui2Test uint16 func (v Ui2Test) Marshal() (string, error) { return MarshalUi2(uint16(v)) } func (v Ui2Test) Unmarshal(s string) (interface{}, error) { return UnmarshalUi2(s) } func (v Ui2Test) Equal(result interface{}) bool { return uint16(v) == result.(uint16) } type Ui4Test uint32 func (v Ui4Test) Marshal() (string, error) { return MarshalUi4(uint32(v)) } func (v Ui4Test) Unmarshal(s string) (interface{}, error) { return UnmarshalUi4(s) } func (v Ui4Test) Equal(result interface{}) bool { return uint32(v) == result.(uint32) } type I1Test int8 func (v I1Test) Marshal() (string, error) { return MarshalI1(int8(v)) } func (v I1Test) Unmarshal(s string) (interface{}, error) { return UnmarshalI1(s) } func (v I1Test) Equal(result interface{}) bool { return int8(v) == result.(int8) } func (v I1Test) Dupe(tag string) []convTest { if tag == "dupe" { return []convTest{ I2Test(v), I4Test(v), } } return nil } type I2Test int16 func (v I2Test) Marshal() (string, error) { return MarshalI2(int16(v)) } func (v I2Test) Unmarshal(s string) (interface{}, error) { return UnmarshalI2(s) } func (v I2Test) Equal(result interface{}) bool { return int16(v) == result.(int16) } type I4Test int32 func (v I4Test) Marshal() (string, error) { return MarshalI4(int32(v)) } func (v I4Test) Unmarshal(s string) (interface{}, error) { return UnmarshalI4(s) } func (v I4Test) Equal(result interface{}) bool { return int32(v) == result.(int32) } type IntTest int64 func (v IntTest) Marshal() (string, error) { return MarshalInt(int64(v)) } func (v IntTest) Unmarshal(s string) (interface{}, error) { return UnmarshalInt(s) } func (v IntTest) Equal(result interface{}) bool { return int64(v) == result.(int64) } type Fixed14_4Test float64 func (v Fixed14_4Test) Marshal() (string, error) { return MarshalFixed14_4(float64(v)) } func (v Fixed14_4Test) Unmarshal(s string) (interface{}, error) { return UnmarshalFixed14_4(s) } func (v Fixed14_4Test) Equal(result interface{}) bool { return math.Abs(float64(v)-result.(float64)) < 0.001 } type CharTest rune func (v CharTest) Marshal() (string, error) { return MarshalChar(rune(v)) } func (v CharTest) Unmarshal(s string) (interface{}, error) { return UnmarshalChar(s) } func (v CharTest) Equal(result interface{}) bool { return rune(v) == result.(rune) } type DateTest struct{ time.Time } func (v DateTest) Marshal() (string, error) { return MarshalDate(time.Time(v.Time)) } func (v DateTest) Unmarshal(s string) (interface{}, error) { return UnmarshalDate(s) } func (v DateTest) Equal(result interface{}) bool { return v.Time.Equal(result.(time.Time)) } func (v DateTest) Dupe(tag string) []convTest { if tag != "no:dateTime" { return []convTest{DateTimeTest{v.Time}} } return nil } type TimeOfDayTest struct { TimeOfDay } func (v TimeOfDayTest) Marshal() (string, error) { return MarshalTimeOfDay(v.TimeOfDay) } func (v TimeOfDayTest) Unmarshal(s string) (interface{}, error) { return UnmarshalTimeOfDay(s) } func (v TimeOfDayTest) Equal(result interface{}) bool { return v.TimeOfDay == result.(TimeOfDay) } func (v TimeOfDayTest) Dupe(tag string) []convTest { if tag != "no:time.tz" { return []convTest{TimeOfDayTzTest{v.TimeOfDay}} } return nil } type TimeOfDayTzTest struct { TimeOfDay } func (v TimeOfDayTzTest) Marshal() (string, error) { return MarshalTimeOfDayTz(v.TimeOfDay) } func (v TimeOfDayTzTest) Unmarshal(s string) (interface{}, error) { return UnmarshalTimeOfDayTz(s) } func (v TimeOfDayTzTest) Equal(result interface{}) bool { return v.TimeOfDay == result.(TimeOfDay) } type DateTimeTest struct{ time.Time } func (v DateTimeTest) Marshal() (string, error) { return MarshalDateTime(time.Time(v.Time)) } func (v DateTimeTest) Unmarshal(s string) (interface{}, error) { return UnmarshalDateTime(s) } func (v DateTimeTest) Equal(result interface{}) bool { return v.Time.Equal(result.(time.Time)) } func (v DateTimeTest) Dupe(tag string) []convTest { if tag != "no:dateTime.tz" { return []convTest{DateTimeTzTest{v.Time}} } return nil } type DateTimeTzTest struct{ time.Time } func (v DateTimeTzTest) Marshal() (string, error) { return MarshalDateTimeTz(time.Time(v.Time)) } func (v DateTimeTzTest) Unmarshal(s string) (interface{}, error) { return UnmarshalDateTimeTz(s) } func (v DateTimeTzTest) Equal(result interface{}) bool { return v.Time.Equal(result.(time.Time)) } type BooleanTest bool func (v BooleanTest) Marshal() (string, error) { return MarshalBoolean(bool(v)) } func (v BooleanTest) Unmarshal(s string) (interface{}, error) { return UnmarshalBoolean(s) } func (v BooleanTest) Equal(result interface{}) bool { return bool(v) == result.(bool) } type BinBase64Test []byte func (v BinBase64Test) Marshal() (string, error) { return MarshalBinBase64([]byte(v)) } func (v BinBase64Test) Unmarshal(s string) (interface{}, error) { return UnmarshalBinBase64(s) } func (v BinBase64Test) Equal(result interface{}) bool { return bytes.Equal([]byte(v), result.([]byte)) } type BinHexTest []byte func (v BinHexTest) Marshal() (string, error) { return MarshalBinHex([]byte(v)) } func (v BinHexTest) Unmarshal(s string) (interface{}, error) { return UnmarshalBinHex(s) } func (v BinHexTest) Equal(result interface{}) bool { return bytes.Equal([]byte(v), result.([]byte)) } type URITest struct{ URL *url.URL } func (v URITest) Marshal() (string, error) { return MarshalURI(v.URL) } func (v URITest) Unmarshal(s string) (interface{}, error) { return UnmarshalURI(s) } func (v URITest) Equal(result interface{}) bool { return v.URL.String() == result.(*url.URL).String() } func Test(t *testing.T) { const time010203 time.Duration = (1*3600 + 2*60 + 3) * time.Second const time0102 time.Duration = (1*3600 + 2*60) * time.Second const time01 time.Duration = (1 * 3600) * time.Second const time235959 time.Duration = (23*3600 + 59*60 + 59) * time.Second // Fake out the local time for the implementation. localLoc = time.FixedZone("Fake/Local", 6*3600) defer func() { localLoc = time.Local }() tests := []testCase{ // ui1 {str: "", value: Ui1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: " ", value: Ui1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: "abc", value: Ui1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: "-1", value: Ui1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: "0", value: Ui1Test(0), tag: "dupe"}, {str: "1", value: Ui1Test(1), tag: "dupe"}, {str: "255", value: Ui1Test(255), tag: "dupe"}, {str: "256", value: Ui1Test(0), wantUnmarshalErr: true, noMarshal: true}, // ui2 {str: "65535", value: Ui2Test(65535)}, {str: "65536", value: Ui2Test(0), wantUnmarshalErr: true, noMarshal: true}, // ui4 {str: "4294967295", value: Ui4Test(4294967295)}, {str: "4294967296", value: Ui4Test(0), wantUnmarshalErr: true, noMarshal: true}, // i1 {str: "", value: I1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: " ", value: I1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: "abc", value: I1Test(0), wantUnmarshalErr: true, noMarshal: true, tag: "dupe"}, {str: "0", value: I1Test(0), tag: "dupe"}, {str: "-1", value: I1Test(-1), tag: "dupe"}, {str: "127", value: I1Test(127), tag: "dupe"}, {str: "-128", value: I1Test(-128), tag: "dupe"}, {str: "128", value: I1Test(0), wantUnmarshalErr: true, noMarshal: true}, {str: "-129", value: I1Test(0), wantUnmarshalErr: true, noMarshal: true}, // i2 {str: "32767", value: I2Test(32767)}, {str: "-32768", value: I2Test(-32768)}, {str: "32768", value: I2Test(0), wantUnmarshalErr: true, noMarshal: true}, {str: "-32769", value: I2Test(0), wantUnmarshalErr: true, noMarshal: true}, // i4 {str: "2147483647", value: I4Test(2147483647)}, {str: "-2147483648", value: I4Test(-2147483648)}, {str: "2147483648", value: I4Test(0), wantUnmarshalErr: true, noMarshal: true}, {str: "-2147483649", value: I4Test(0), wantUnmarshalErr: true, noMarshal: true}, // int {str: "9223372036854775807", value: IntTest(9223372036854775807)}, {str: "-9223372036854775808", value: IntTest(-9223372036854775808)}, {str: "9223372036854775808", value: IntTest(0), wantUnmarshalErr: true, noMarshal: true}, {str: "-9223372036854775809", value: IntTest(0), wantUnmarshalErr: true, noMarshal: true}, // fixed.14.4 {str: "0.0000", value: Fixed14_4Test(0)}, {str: "1.0000", value: Fixed14_4Test(1)}, {str: "1.2346", value: Fixed14_4Test(1.23456)}, {str: "-1.0000", value: Fixed14_4Test(-1)}, {str: "-1.2346", value: Fixed14_4Test(-1.23456)}, {str: "10000000000000.0000", value: Fixed14_4Test(1e13)}, {str: "100000000000000.0000", value: Fixed14_4Test(1e14), wantMarshalErr: true, wantUnmarshalErr: true}, {str: "-10000000000000.0000", value: Fixed14_4Test(-1e13)}, {str: "-100000000000000.0000", value: Fixed14_4Test(-1e14), wantMarshalErr: true, wantUnmarshalErr: true}, // char {str: "a", value: CharTest('a')}, {str: "z", value: CharTest('z')}, {str: "\u1234", value: CharTest(0x1234)}, {str: "aa", value: CharTest(0), wantMarshalErr: true, wantUnmarshalErr: true}, {str: "", value: CharTest(0), wantMarshalErr: true, wantUnmarshalErr: true}, // date {str: "2013-10-08", value: DateTest{time.Date(2013, 10, 8, 0, 0, 0, 0, localLoc)}, tag: "no:dateTime"}, {str: "20131008", value: DateTest{time.Date(2013, 10, 8, 0, 0, 0, 0, localLoc)}, noMarshal: true, tag: "no:dateTime"}, {str: "2013-10-08T10:30:50", value: DateTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime"}, {str: "2013-10-08T10:30:50Z", value: DateTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime"}, {str: "", value: DateTest{}, wantMarshalErr: true, wantUnmarshalErr: true, noMarshal: true}, {str: "-1", value: DateTest{}, wantUnmarshalErr: true, noMarshal: true}, // time {str: "00:00:00", value: TimeOfDayTest{TimeOfDay{FromMidnight: 0}}}, {str: "000000", value: TimeOfDayTest{TimeOfDay{FromMidnight: 0}}, noMarshal: true}, {str: "24:00:00", value: TimeOfDayTest{TimeOfDay{FromMidnight: 24 * time.Hour}}, noMarshal: true}, // ISO8601 special case {str: "24:01:00", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "24:00:01", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "25:00:00", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "00:60:00", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "00:00:60", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "01:02:03", value: TimeOfDayTest{TimeOfDay{FromMidnight: time010203}}}, {str: "010203", value: TimeOfDayTest{TimeOfDay{FromMidnight: time010203}}, noMarshal: true}, {str: "23:59:59", value: TimeOfDayTest{TimeOfDay{FromMidnight: time235959}}}, {str: "235959", value: TimeOfDayTest{TimeOfDay{FromMidnight: time235959}}, noMarshal: true}, {str: "01:02", value: TimeOfDayTest{TimeOfDay{FromMidnight: time0102}}, noMarshal: true}, {str: "0102", value: TimeOfDayTest{TimeOfDay{FromMidnight: time0102}}, noMarshal: true}, {str: "01", value: TimeOfDayTest{TimeOfDay{FromMidnight: time01}}, noMarshal: true}, {str: "foo 01:02:03", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "foo\n01:02:03", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03 foo", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03\nfoo", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03Z", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03+01", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03+01:23", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03+0123", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03-01", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03-01:23", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, {str: "01:02:03-0123", value: TimeOfDayTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:time.tz"}, // time.tz {str: "24:00:01", value: TimeOfDayTzTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "01Z", value: TimeOfDayTzTest{TimeOfDay{time01, true, 0}}, noMarshal: true}, {str: "01:02:03Z", value: TimeOfDayTzTest{TimeOfDay{time010203, true, 0}}}, {str: "01+01", value: TimeOfDayTzTest{TimeOfDay{time01, true, 3600}}, noMarshal: true}, {str: "01:02:03+01", value: TimeOfDayTzTest{TimeOfDay{time010203, true, 3600}}, noMarshal: true}, {str: "01:02:03+01:23", value: TimeOfDayTzTest{TimeOfDay{time010203, true, 3600 + 23*60}}}, {str: "01:02:03+0123", value: TimeOfDayTzTest{TimeOfDay{time010203, true, 3600 + 23*60}}, noMarshal: true}, {str: "01:02:03-01", value: TimeOfDayTzTest{TimeOfDay{time010203, true, -3600}}, noMarshal: true}, {str: "01:02:03-01:23", value: TimeOfDayTzTest{TimeOfDay{time010203, true, -(3600 + 23*60)}}}, {str: "01:02:03-0123", value: TimeOfDayTzTest{TimeOfDay{time010203, true, -(3600 + 23*60)}}, noMarshal: true}, // dateTime {str: "2013-10-08T00:00:00", value: DateTimeTest{time.Date(2013, 10, 8, 0, 0, 0, 0, localLoc)}, tag: "no:dateTime.tz"}, {str: "20131008", value: DateTimeTest{time.Date(2013, 10, 8, 0, 0, 0, 0, localLoc)}, noMarshal: true}, {str: "2013-10-08T10:30:50", value: DateTimeTest{time.Date(2013, 10, 8, 10, 30, 50, 0, localLoc)}, tag: "no:dateTime.tz"}, {str: "2013-10-08T10:30:50T", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true}, {str: "2013-10-08T10:30:50+01", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime.tz"}, {str: "2013-10-08T10:30:50+01:23", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime.tz"}, {str: "2013-10-08T10:30:50+0123", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime.tz"}, {str: "2013-10-08T10:30:50-01", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime.tz"}, {str: "2013-10-08T10:30:50-01:23", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime.tz"}, {str: "2013-10-08T10:30:50-0123", value: DateTimeTest{}, wantUnmarshalErr: true, noMarshal: true, tag: "no:dateTime.tz"}, // dateTime.tz {str: "2013-10-08T10:30:50", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, localLoc)}, noMarshal: true}, {str: "2013-10-08T10:30:50+01", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, time.FixedZone("+01:00", 3600))}, noMarshal: true}, {str: "2013-10-08T10:30:50+01:23", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, time.FixedZone("+01:23", 3600+23*60))}}, {str: "2013-10-08T10:30:50+0123", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, time.FixedZone("+01:23", 3600+23*60))}, noMarshal: true}, {str: "2013-10-08T10:30:50-01", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, time.FixedZone("-01:00", -3600))}, noMarshal: true}, {str: "2013-10-08T10:30:50-01:23", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, time.FixedZone("-01:23", -(3600+23*60)))}}, {str: "2013-10-08T10:30:50-0123", value: DateTimeTzTest{time.Date(2013, 10, 8, 10, 30, 50, 0, time.FixedZone("-01:23", -(3600+23*60)))}, noMarshal: true}, // boolean {str: "0", value: BooleanTest(false)}, {str: "1", value: BooleanTest(true)}, {str: "false", value: BooleanTest(false), noMarshal: true}, {str: "true", value: BooleanTest(true), noMarshal: true}, {str: "no", value: BooleanTest(false), noMarshal: true}, {str: "yes", value: BooleanTest(true), noMarshal: true}, {str: "", value: BooleanTest(false), noMarshal: true, wantUnmarshalErr: true}, {str: "other", value: BooleanTest(false), noMarshal: true, wantUnmarshalErr: true}, {str: "2", value: BooleanTest(false), noMarshal: true, wantUnmarshalErr: true}, {str: "-1", value: BooleanTest(false), noMarshal: true, wantUnmarshalErr: true}, // bin.base64 {str: "", value: BinBase64Test{}}, {str: "YQ==", value: BinBase64Test("a")}, {str: "TG9uZ2VyIFN0cmluZy4=", value: BinBase64Test("Longer String.")}, {str: "TG9uZ2VyIEFsaWduZWQu", value: BinBase64Test("Longer Aligned.")}, // bin.hex {str: "", value: BinHexTest{}}, {str: "61", value: BinHexTest("a")}, {str: "4c6f6e67657220537472696e672e", value: BinHexTest("Longer String.")}, {str: "4C6F6E67657220537472696E672E", value: BinHexTest("Longer String."), noMarshal: true}, // uri {str: "http://example.com/path", value: URITest{&url.URL{Scheme: "http", Host: "example.com", Path: "/path"}}}, } // Generate extra test cases from convTests that implement duper. var extras []testCase for i := range tests { if duper, ok := tests[i].value.(duper); ok { dupes := duper.Dupe(tests[i].tag) for _, duped := range dupes { dupedCase := testCase(tests[i]) dupedCase.value = duped extras = append(extras, dupedCase) } } } tests = append(tests, extras...) for _, test := range tests { if test.noMarshal { } else if resultStr, err := test.value.Marshal(); err != nil && !test.wantMarshalErr { t.Errorf("For %T marshal %v, want %q, got error: %v", test.value, test.value, test.str, err) } else if err == nil && test.wantMarshalErr { t.Errorf("For %T marshal %v, want error, got %q", test.value, test.value, resultStr) } else if err == nil && resultStr != test.str { t.Errorf("For %T marshal %v, want %q, got %q", test.value, test.value, test.str, resultStr) } if test.noUnMarshal { } else if resultValue, err := test.value.Unmarshal(test.str); err != nil && !test.wantUnmarshalErr { t.Errorf("For %T unmarshal %q, want %v, got error: %v", test.value, test.str, test.value, err) } else if err == nil && test.wantUnmarshalErr { t.Errorf("For %T unmarshal %q, want error, got %v", test.value, test.str, resultValue) } else if err == nil && !test.value.Equal(resultValue) { t.Errorf("For %T unmarshal %q, want %v, got %v", test.value, test.str, test.value, resultValue) } } } goupnp-master/ssdp/0000755000175000017500000000000013165111724013255 5ustar freefreegoupnp-master/ssdp/registry.go0000644000175000017500000001640413165111724015461 0ustar freefreepackage ssdp import ( "fmt" "log" "net/http" "net/url" "regexp" "strconv" "sync" "time" "github.com/huin/goupnp/httpu" ) const ( maxExpiryTimeSeconds = 24 * 60 * 60 ) var ( maxAgeRx = regexp.MustCompile("max-age= *([0-9]+)") ) const ( EventAlive = EventType(iota) EventUpdate EventByeBye ) type EventType int8 func (et EventType) String() string { switch et { case EventAlive: return "EventAlive" case EventUpdate: return "EventUpdate" case EventByeBye: return "EventByeBye" default: return fmt.Sprintf("EventUnknown(%d)", int8(et)) } } type Update struct { // The USN of the service. USN string // What happened. EventType EventType // The entry, which is nil if the service was not known and // EventType==EventByeBye. The contents of this must not be modified as it is // shared with the registry and other listeners. Once created, the Registry // does not modify the Entry value - any updates are replaced with a new // Entry value. Entry *Entry } type Entry struct { // The address that the entry data was actually received from. RemoteAddr string // Unique Service Name. Identifies a unique instance of a device or service. USN string // Notfication Type. The type of device or service being announced. NT string // Server's self-identifying string. Server string Host string // Location of the UPnP root device description. Location url.URL // Despite BOOTID,CONFIGID being required fields, apparently they are not // always set by devices. Set to -1 if not present. BootID int32 ConfigID int32 SearchPort uint16 // When the last update was received for this entry identified by this USN. LastUpdate time.Time // When the last update's cached values are advised to expire. CacheExpiry time.Time } func newEntryFromRequest(r *http.Request) (*Entry, error) { now := time.Now() expiryDuration, err := parseCacheControlMaxAge(r.Header.Get("CACHE-CONTROL")) if err != nil { return nil, fmt.Errorf("ssdp: error parsing CACHE-CONTROL max age: %v", err) } loc, err := url.Parse(r.Header.Get("LOCATION")) if err != nil { return nil, fmt.Errorf("ssdp: error parsing entry Location URL: %v", err) } bootID, err := parseUpnpIntHeader(r.Header, "BOOTID.UPNP.ORG", -1) if err != nil { return nil, err } configID, err := parseUpnpIntHeader(r.Header, "CONFIGID.UPNP.ORG", -1) if err != nil { return nil, err } searchPort, err := parseUpnpIntHeader(r.Header, "SEARCHPORT.UPNP.ORG", ssdpSearchPort) if err != nil { return nil, err } if searchPort < 1 || searchPort > 65535 { return nil, fmt.Errorf("ssdp: search port %d is out of range", searchPort) } return &Entry{ RemoteAddr: r.RemoteAddr, USN: r.Header.Get("USN"), NT: r.Header.Get("NT"), Server: r.Header.Get("SERVER"), Host: r.Header.Get("HOST"), Location: *loc, BootID: bootID, ConfigID: configID, SearchPort: uint16(searchPort), LastUpdate: now, CacheExpiry: now.Add(expiryDuration), }, nil } func parseCacheControlMaxAge(cc string) (time.Duration, error) { matches := maxAgeRx.FindStringSubmatch(cc) if len(matches) != 2 { return 0, fmt.Errorf("did not find exactly one max-age in cache control header: %q", cc) } expirySeconds, err := strconv.ParseInt(matches[1], 10, 16) if err != nil { return 0, err } if expirySeconds < 1 || expirySeconds > maxExpiryTimeSeconds { return 0, fmt.Errorf("rejecting bad expiry time of %d seconds", expirySeconds) } return time.Duration(expirySeconds) * time.Second, nil } // parseUpnpIntHeader is intended to parse the // {BOOT,CONFIGID,SEARCHPORT}.UPNP.ORG header fields. It returns the def if // the head is empty or missing. func parseUpnpIntHeader(headers http.Header, headerName string, def int32) (int32, error) { s := headers.Get(headerName) if s == "" { return def, nil } v, err := strconv.ParseInt(s, 10, 32) if err != nil { return 0, fmt.Errorf("ssdp: could not parse header %s: %v", headerName, err) } return int32(v), nil } var _ httpu.Handler = new(Registry) // Registry maintains knowledge of discovered devices and services. // // NOTE: the interface for this is experimental and may change, or go away // entirely. type Registry struct { lock sync.Mutex byUSN map[string]*Entry listenersLock sync.RWMutex listeners map[chan<- Update]struct{} } func NewRegistry() *Registry { return &Registry{ byUSN: make(map[string]*Entry), listeners: make(map[chan<- Update]struct{}), } } // NewServerAndRegistry is a convenience function to create a registry, and an // httpu server to pass it messages. Call ListenAndServe on the server for // messages to be processed. func NewServerAndRegistry() (*httpu.Server, *Registry) { reg := NewRegistry() srv := &httpu.Server{ Addr: ssdpUDP4Addr, Multicast: true, Handler: reg, } return srv, reg } func (reg *Registry) AddListener(c chan<- Update) { reg.listenersLock.Lock() defer reg.listenersLock.Unlock() reg.listeners[c] = struct{}{} } func (reg *Registry) RemoveListener(c chan<- Update) { reg.listenersLock.Lock() defer reg.listenersLock.Unlock() delete(reg.listeners, c) } func (reg *Registry) sendUpdate(u Update) { reg.listenersLock.RLock() defer reg.listenersLock.RUnlock() for c := range reg.listeners { c <- u } } // GetService returns known service (or device) entries for the given service // URN. func (reg *Registry) GetService(serviceURN string) []*Entry { // Currently assumes that the map is small, so we do a linear search rather // than indexed to avoid maintaining two maps. var results []*Entry reg.lock.Lock() defer reg.lock.Unlock() for _, entry := range reg.byUSN { if entry.NT == serviceURN { results = append(results, entry) } } return results } // ServeMessage implements httpu.Handler, and uses SSDP NOTIFY requests to // maintain the registry of devices and services. func (reg *Registry) ServeMessage(r *http.Request) { if r.Method != methodNotify { return } nts := r.Header.Get("nts") var err error switch nts { case ntsAlive: err = reg.handleNTSAlive(r) case ntsUpdate: err = reg.handleNTSUpdate(r) case ntsByebye: err = reg.handleNTSByebye(r) default: err = fmt.Errorf("unknown NTS value: %q", nts) } if err != nil { log.Printf("goupnp/ssdp: failed to handle %s message from %s: %v", nts, r.RemoteAddr, err) } } func (reg *Registry) handleNTSAlive(r *http.Request) error { entry, err := newEntryFromRequest(r) if err != nil { return err } reg.lock.Lock() reg.byUSN[entry.USN] = entry reg.lock.Unlock() reg.sendUpdate(Update{ USN: entry.USN, EventType: EventAlive, Entry: entry, }) return nil } func (reg *Registry) handleNTSUpdate(r *http.Request) error { entry, err := newEntryFromRequest(r) if err != nil { return err } nextBootID, err := parseUpnpIntHeader(r.Header, "NEXTBOOTID.UPNP.ORG", -1) if err != nil { return err } entry.BootID = nextBootID reg.lock.Lock() reg.byUSN[entry.USN] = entry reg.lock.Unlock() reg.sendUpdate(Update{ USN: entry.USN, EventType: EventUpdate, Entry: entry, }) return nil } func (reg *Registry) handleNTSByebye(r *http.Request) error { usn := r.Header.Get("USN") reg.lock.Lock() entry := reg.byUSN[usn] delete(reg.byUSN, usn) reg.lock.Unlock() reg.sendUpdate(Update{ USN: usn, EventType: EventByeBye, Entry: entry, }) return nil } goupnp-master/ssdp/ssdp.go0000644000175000017500000000471013165111724014557 0ustar freefreepackage ssdp import ( "errors" "log" "net/http" "net/url" "strconv" "time" "github.com/huin/goupnp/httpu" ) const ( ssdpDiscover = `"ssdp:discover"` ntsAlive = `ssdp:alive` ntsByebye = `ssdp:byebye` ntsUpdate = `ssdp:update` ssdpUDP4Addr = "239.255.255.250:1900" ssdpSearchPort = 1900 methodSearch = "M-SEARCH" methodNotify = "NOTIFY" ) // SSDPRawSearch performs a fairly raw SSDP search request, and returns the // unique response(s) that it receives. Each response has the requested // searchTarget, a USN, and a valid location. maxWaitSeconds states how long to // wait for responses in seconds, and must be a minimum of 1 (the // implementation waits an additional 100ms for responses to arrive), 2 is a // reasonable value for this. numSends is the number of requests to send - 3 is // a reasonable value for this. func SSDPRawSearch(httpu *httpu.HTTPUClient, searchTarget string, maxWaitSeconds int, numSends int) ([]*http.Response, error) { if maxWaitSeconds < 1 { return nil, errors.New("ssdp: maxWaitSeconds must be >= 1") } seenUsns := make(map[string]bool) var responses []*http.Response req := http.Request{ Method: methodSearch, // TODO: Support both IPv4 and IPv6. Host: ssdpUDP4Addr, URL: &url.URL{Opaque: "*"}, Header: http.Header{ // Putting headers in here avoids them being title-cased. // (The UPnP discovery protocol uses case-sensitive headers) "HOST": []string{ssdpUDP4Addr}, "MX": []string{strconv.FormatInt(int64(maxWaitSeconds), 10)}, "MAN": []string{ssdpDiscover}, "ST": []string{searchTarget}, }, } allResponses, err := httpu.Do(&req, time.Duration(maxWaitSeconds)*time.Second+100*time.Millisecond, numSends) if err != nil { return nil, err } for _, response := range allResponses { if response.StatusCode != 200 { log.Printf("ssdp: got response status code %q in search response", response.Status) continue } if st := response.Header.Get("ST"); st != searchTarget { continue } location, err := response.Location() if err != nil { log.Printf("ssdp: no usable location in search response (discarding): %v", err) continue } usn := response.Header.Get("USN") if usn == "" { log.Printf("ssdp: empty/missing USN in search response (using location instead): %v", err) usn = location.String() } if _, alreadySeen := seenUsns[usn]; !alreadySeen { seenUsns[usn] = true responses = append(responses, response) } } return responses, nil }