Browse Source

expose unified message errors

pull/171/head
Rossen Georgiev 7 years ago
committed by Rossen Georgiev
parent
commit
12ab5eae71
  1. 25
      steam/client/builtins/unified_messages.py

25
steam/client/builtins/unified_messages.py

@ -36,6 +36,18 @@ class UnifiedMessages(object):
self.unified_messages = SteamUnifiedMessages(self, name) #: instance of :class:`SteamUnifiedMessages`
class UnifiedMessageError(object):
def __init__(self, eresult, message):
self.eresult = eresult
self.message = message
def __repr__(self):
return "%s(%s, %s)" % (self.__class__.__name__, self.eresult, repr(self.message))
def __str__(self):
return self.message
class SteamUnifiedMessages(EventEmitter):
"""Simple API for send/recv of unified messages
@ -66,18 +78,21 @@ class SteamUnifiedMessages(EventEmitter):
self._LOG.error("Unable to find proto for %s" % repr(method_name))
return
error = None
if message.header.eresult != EResult.OK:
self._LOG.error("%s (%s): %s" % (method_name, repr(EResult(message.header.eresult)),
message.header.error_message))
error = UnifiedMessageError(EResult(message.header.eresult),
message.header.error_message)
resp = proto()
resp.ParseFromString(message.body.serialized_method_response)
self.emit(method_name, resp)
self.emit(method_name, resp, error)
jobid = message.header.jobid_target
if jobid not in (-1, 18446744073709551615):
self.emit("job_%d" % jobid, resp)
self.emit("job_%d" % jobid, resp, error)
def get(self, method_name):
"""Get request proto instance for given methed name
@ -113,7 +128,7 @@ class SteamUnifiedMessages(EventEmitter):
if isinstance(message, str):
message = self.get(message)
if message not in self._data:
raise ValueError("Supplied message seems to be invalid. Did you use 'get' method?")
raise ValueError("Supplied message is invalid. Use 'get' method.")
if params:
proto_fill_from_dict(message, params)
@ -138,7 +153,7 @@ class SteamUnifiedMessages(EventEmitter):
:param raises: (optional) On timeout if :class:`False` return :class:`None`, else raise :class:`gevent.Timeout`
:type raises: :class:`bool`
:return: response proto message instance
:rtype: proto message, :class:`None`
:rtype: (proto message, :class:`.UnifiedMessageError`)
:raises: :class:`gevent.Timeout`
"""
job_id = self.send(message, params)
@ -146,4 +161,4 @@ class SteamUnifiedMessages(EventEmitter):
if resp is None and not raises:
return None
else:
return resp[0]
return resp

Loading…
Cancel
Save