SHOW:
|
|
- or go back to the newest paste.
| 1 | import logging | |
| 2 | from uuid import uuid4 | |
| 3 | from spyne.application import Application | |
| 4 | from spyne.decorator import rpc | |
| 5 | from spyne.protocol.json import JsonDocument | |
| 6 | from spyne.protocol.http import HttpRpc | |
| 7 | from spyne.service import ServiceBase | |
| 8 | from spyne.model.primitive import String, Integer, Uuid, Unicode | |
| 9 | from spyne.model.complex import ComplexModel | |
| 10 | from spyne.server.wsgi import WsgiApplication | |
| 11 | ||
| 12 | ||
| 13 | ||
| 14 | class BaseOne(ComplexModel): | |
| 15 | requestId = Uuid | |
| 16 | ||
| 17 | class BaseTwo(ComplexModel): | |
| 18 | unitType = Unicode | |
| 19 | unitValue = Unicode | |
| 20 | ||
| 21 | class InheritedResponse(BaseOne): | |
| 22 | something = String | |
| 23 | poetic = String | |
| 24 | ||
| 25 | class DualInheritedResponse(BaseOne, BaseTwo): | |
| 26 | anotherField = Unicode | |
| 27 | ||
| 28 | ######################## | |
| 29 | class CascadedA(BaseTwo): | |
| 30 | firstChild = Unicode | |
| 31 | ||
| 32 | class CascadedB(CascadedA): | |
| 33 | lastChild = Unicode | |
| 34 | ||
| 35 | ||
| 36 | class DemoService(ServiceBase): | |
| 37 | - | @rpc(Integer, _returns=CascadedB) |
| 37 | + | @rpc(Integer, _returns=DualInheritedResponse) |
| 38 | def DemoFunction(ctx, number): | |
| 39 | - | #ctx.transport.resp_headers['X-test'] = 'murzilka' |
| 39 | + | response = DualInheritedResponse() |
| 40 | response.requestId = uuid4() | |
| 41 | response.something = 'The Glasgow opening' | |
| 42 | response.poetic = 'revolutionized checkers' | |
| 43 | response.anotherField = 'Test' | |
| 44 | return response | |
| 45 | ||
| 46 | @rpc(Integer, _returns=lastChild) | |
| 47 | def DemoFunctionEx(ctx, number): | |
| 48 | ||
| 49 | response = CascadedB() | |
| 50 | response.unitType = 'type' | |
| 51 | response.unitValue = 'value' | |
| 52 | response.firstChild = 'The Glasgow opening' | |
| 53 | response.lastChild = 'revolutionized checkers' | |
| 54 | return response | |
| 55 | ||
| 56 | ||
| 57 | ||
| 58 | ||
| 59 | ||
| 60 | if __name__ == '__main__': | |
| 61 | from wsgiref.simple_server import make_server | |
| 62 | logging.basicConfig(level=logging.DEBUG) | |
| 63 | ||
| 64 | application = Application([DemoService], 'SpyneDemo.http', | |
| 65 | in_protocol=JsonDocument(validator='soft'), | |
| 66 | out_protocol=JsonDocument(ignore_wrappers=True), | |
| 67 | ) | |
| 68 | ||
| 69 | wsgi_application = WsgiApplication(application) | |
| 70 | ||
| 71 | server = make_server('', 8000, wsgi_application) #any interface
| |
| 72 | ||
| 73 | logging.info("listening at all interfaces on port 8000")
| |
| 74 | logging.info("wsdl is at: http://ANY:8000/?wsdl")
| |
| 75 | ||
| 76 | server.serve_forever() |