feat: generate code for openhome
This commit is contained in:
@ -78,7 +78,7 @@ func (dcp *DCP) processDeviceFile(file *zip.File) error {
|
||||
}
|
||||
})
|
||||
device.VisitServices(func(s *goupnp.Service) {
|
||||
u, err := extractURNParts(s.ServiceType, serviceURNPrefix)
|
||||
u, err := extractURNParts(s.ServiceType, dcp.Metadata.ServiceURNPrefix)
|
||||
if err != nil {
|
||||
mainErr = err
|
||||
}
|
||||
@ -133,7 +133,7 @@ func (dcp *DCP) processSCPDFile(file *zip.File) error {
|
||||
return fmt.Errorf("error decoding SCPD XML from file %q: %v", file.Name, err)
|
||||
}
|
||||
scpd.Clean()
|
||||
urnParts, err := urnPartsFromSCPDFilename(file.Name)
|
||||
urnParts, err := urnPartsFromSCPDFilename(file.Name, dcp.Metadata.ServiceURNPrefix)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not recognize SCPD filename %q: %v", file.Name, err)
|
||||
}
|
||||
|
@ -80,14 +80,14 @@ func unmarshalXmlFile(file *zip.File, data interface{}) error {
|
||||
var scpdFilenameRe = regexp.MustCompile(
|
||||
`.*/([a-zA-Z0-9]+)([0-9]+)\.xml`)
|
||||
|
||||
func urnPartsFromSCPDFilename(filename string) (*URNParts, error) {
|
||||
func urnPartsFromSCPDFilename(filename string, svcURNPrefix 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,
|
||||
URN: svcURNPrefix + name + ":" + version,
|
||||
Name: name,
|
||||
Version: version,
|
||||
}, nil
|
||||
|
@ -6,15 +6,54 @@ import (
|
||||
|
||||
// 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.
|
||||
Src dcpProvider
|
||||
Name string // What to name the Go DCP package.
|
||||
OfficialName string // Official name for the DCP.
|
||||
Src dcpProvider
|
||||
ServiceURNPrefix string
|
||||
}
|
||||
|
||||
var dcpMetadata = []DCPMetadata{
|
||||
{
|
||||
Name: "internetgateway1",
|
||||
OfficialName: "Internet Gateway Device v1",
|
||||
Name: "openhome",
|
||||
OfficialName: "OpenHome",
|
||||
ServiceURNPrefix: "urn:av-openhome-org:service:",
|
||||
Src: upnpdotorg{
|
||||
DocURL: "http://wiki.openhome.org/wiki/Av:Developer",
|
||||
XMLSpecURL: "https://github.com/openhome/ohNetGenerated/archive/refs/heads/master.zip",
|
||||
Hacks: []DCPHackFn{
|
||||
|
||||
fixMissingURN(
|
||||
"urn:av-openhome-org:service:Credentials:1",
|
||||
"urn:av-openhome-org:service:Debug:1",
|
||||
"urn:av-openhome-org:service:Exakt:1",
|
||||
"urn:av-openhome-org:service:Exakt:2",
|
||||
"urn:av-openhome-org:service:Exakt:3",
|
||||
"urn:av-openhome-org:service:Info:1",
|
||||
"urn:av-openhome-org:service:MediaServer:1",
|
||||
"urn:av-openhome-org:service:NetworkMonitor:1",
|
||||
"urn:av-openhome-org:service:Pins:1",
|
||||
"urn:av-openhome-org:service:Playlist:1",
|
||||
"urn:av-openhome-org:service:PlaylistManager:1",
|
||||
"urn:av-openhome-org:service:Product:1",
|
||||
"urn:av-openhome-org:service:Product:2",
|
||||
"urn:av-openhome-org:service:Radio:1",
|
||||
"urn:av-openhome-org:service:Receiver:1",
|
||||
"urn:av-openhome-org:service:Sender:1",
|
||||
"urn:av-openhome-org:service:Sender:2",
|
||||
"urn:av-openhome-org:service:SubscriptionLongPoll:1",
|
||||
"urn:av-openhome-org:service:Time:1",
|
||||
"urn:av-openhome-org:service:Transport:1",
|
||||
"urn:av-openhome-org:service:Volume:1",
|
||||
"urn:av-openhome-org:service:Volume:2",
|
||||
"urn:av-openhome-org:service:Volume:3",
|
||||
),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "internetgateway1",
|
||||
OfficialName: "Internet Gateway Device v1",
|
||||
ServiceURNPrefix: serviceURNPrefix,
|
||||
Src: upnpdotorg{
|
||||
DocURL: "http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v1-Device.pdf",
|
||||
XMLSpecURL: "http://upnp.org/specs/gw/UPnP-gw-IGD-TestFiles-20010921.zip",
|
||||
@ -24,8 +63,9 @@ var dcpMetadata = []DCPMetadata{
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "internetgateway2",
|
||||
OfficialName: "Internet Gateway Device v2",
|
||||
Name: "internetgateway2",
|
||||
OfficialName: "Internet Gateway Device v2",
|
||||
ServiceURNPrefix: serviceURNPrefix,
|
||||
Src: upnpdotorg{
|
||||
DocURL: "http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v2-Device.pdf",
|
||||
XMLSpecURL: "http://upnp.org/specs/gw/UPnP-gw-IGD-Testfiles-20110224.zip",
|
||||
@ -36,16 +76,18 @@ var dcpMetadata = []DCPMetadata{
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "av1",
|
||||
OfficialName: "MediaServer v1 and MediaRenderer v1",
|
||||
Name: "av1",
|
||||
OfficialName: "MediaServer v1 and MediaRenderer v1",
|
||||
ServiceURNPrefix: serviceURNPrefix,
|
||||
Src: upnpdotorg{
|
||||
DocURL: "http://upnp.org/specs/av/av1/",
|
||||
XMLSpecURL: "http://upnp.org/specs/av/UPnP-av-TestFiles-20070927.zip",
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "ocf/internetgateway1",
|
||||
OfficialName: "Internet Gateway Device v1 - Open Connectivity Foundation",
|
||||
Name: "ocf/internetgateway1",
|
||||
OfficialName: "Internet Gateway Device v1 - Open Connectivity Foundation",
|
||||
ServiceURNPrefix: serviceURNPrefix,
|
||||
Src: openconnectivitydotorg{
|
||||
SpecsURL: ocfSpecsURL,
|
||||
DocPath: "*/DeviceProtection_1/UPnP-gw-*v1*.pdf",
|
||||
@ -60,8 +102,9 @@ var dcpMetadata = []DCPMetadata{
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "ocf/internetgateway2",
|
||||
OfficialName: "Internet Gateway Device v2 - Open Connectivity Foundation",
|
||||
Name: "ocf/internetgateway2",
|
||||
OfficialName: "Internet Gateway Device v2 - Open Connectivity Foundation",
|
||||
ServiceURNPrefix: serviceURNPrefix,
|
||||
Src: openconnectivitydotorg{
|
||||
SpecsURL: ocfSpecsURL,
|
||||
DocPath: "*/Internet Gateway_2/UPnP-gw-*.pdf",
|
||||
@ -114,7 +157,7 @@ func fixMissingURN(missingURNs ...string) func(dcp *DCP) error {
|
||||
if _, ok := dcp.ServiceTypes[missingURN]; ok {
|
||||
continue
|
||||
}
|
||||
urnParts, err := extractURNParts(missingURN, serviceURNPrefix)
|
||||
urnParts, err := extractURNParts(missingURN, dcp.Metadata.ServiceURNPrefix)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user