I have a google method that should be able to return either MaleResponseMessage, or FemaleResponseMessage. Is there any way to indicate that, for example, with
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
Of course, it is possible to declare a super message class, for example PersonResponseMessage, for wrapping MaleResponseMessageor FemaleResponseMessage. But is there something similar to the snippet above?
EDIT:
Trying to implement my own proposal, I got stuck. The only thing that two types of messages have is a request: the same request fields (with additional logical female=true/false) for PersonRequest. MaleResponseMessageand FemaleResponseMessagedo not have a common field. This way I use one endpoint method as @bossylobster shows, where I check
if request.female :
return get_female(etc, etc)
else:
return get_male(etc,etc)
For an answer I need something like
class PersonResponse(messages.Message):
if ??? :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
, ??? . -, isinstance type. ? ?
class PersonResponse(messages.Message):
if type(Message()) == MaleResponseMessage :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)