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() |