Hi,
The quick summary is there is a field in a SOAP request named, "event-id", and I'm having trouble setting this field because the name contains a hyphen. How do I get around this? For example:
>>> result = client.factory.create('ns0:UserVerifiedEvent')
>>> print result
(UserVerifiedEvent){
event-id = None
user-verified-content[] = <empty>
domain-specific-attributes =
(MediaAttributes){
domain-attribute[] = <empty>
}
}
Here's more background.
I'm trying to develop an MLB.tv client for Linux and they've changed their web service to a SOAP architecture.
A little snooping and I was able to find that the first request sends an event-id and the response has a listing of all media content matching that
event-id.
The request looks like this:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<scma:user-verified-media-request xmlns:scma="http://services.bamnetworks.com/media/types/2.0">
<scma:event-id>164-251340-2009-03-12</scma:event-id>
<scma:subject>LIVE_EVENT_COVERAGE</scma:subject>
</scma:user-verified-media-request>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Here's the wsdl:
>>> import suds
>>> from suds.client import Client
>>> url = 'http://www.mlb.com/flash/mediaplayer/v4/wsdl/MediaService.wsdl'
>>> client = Client(url)
>>> print client
Suds (
https://fedorahosted.org/suds/ ) version: 0.3.5 (beta) build: R483-20090324
Service ( MediaService2_0 ) tns="http://services.bamnetworks.com/media/2.0"
Prefixes (1)
ns0 = "http://services.bamnetworks.com/media/types/2.0"
Ports (1):
(MediaService2_0SOAP11port_http)
Methods (1):
find(xs:string event-id, xs:long content-id, xs:string playback-scenario, xs:string subject, xs:string ip-address, ns0:CreditCard credit-card, ns0:IdentityPoint fingerprint-identity-point, xs:string session-key, )
Types (28):
ns0:Address
ns0:AudioTrack
ns0:AuthStatus
ns0:BlackedOutStatus
ns0:BlackoutKeywords
ns0:BlackoutStatus
ns0:CreditCard
ns0:Entitlements
ns0:IdentityPoint
ns0:LocationCannotBeDeterminedStatus
ns0:LoginRequired
ns0:MediaAttribute
ns0:MediaAttributes
ns0:MediaItem
ns0:MediaUserLocation
ns0:NotAuthorizedStatus
ns0:PreviewStatus
ns0:ResponseStatusCode
ns0:SessionKey
ns0:SignOnRestrictionStatus
ns0:SuccessStatus
ns0:SwarmcastKeyGenResponse
ns0:SwarmcastKeyStatusCode
ns0:UserVerifiedContent
ns0:UserVerifiedEvent
ns0:UserVerifiedMediaItem
ns0:UserVerifiedMediaRequest
ns0:UserVerifiedMediaResponse
Now, I'm still trying to learn SOAP, WSDL, and suds, but somehow I need to set the event-id. I thought maybe I needed to create a UserVerifiedEvent so I tried that but I'm stumped at how to set a value to event-id because of the hyphen.
>>> result = client.factory.create('ns0:UserVerifiedEvent')
>>> print result
(UserVerifiedEvent){
event-id = None
user-verified-content[] =
<empty>
domain-specific-attributes =
(MediaAttributes){
domain-attribute[] = <empty>
}
}
>>> result.event-id = '164-251340-2009-03-12'
SyntaxError: can't assign to operator
Any ideas?
Thanks,
Matthew Levine
https://sourceforge.net/projects/mlbviewer/