Initial import to Tizen
[profile/ivi/python-twisted.git] / doc / web / examples / xmlrpc.py
1 # Copyright (c) Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4 """
5 An example of an XML-RPC server in Twisted.
6
7 Usage:
8     $ python xmlrpc.py
9
10 An example session (assuming the server is running):
11
12     >>> import xmlrpclib
13     >>> s = xmlrpclib.Server('http://localhost:7080/')
14     >>> s.echo("lala")
15     ['lala']
16     >>> s.echo("lala", 1)
17     ['lala', 1]
18     >>> s.echo("lala", 4)
19     ['lala', 4]
20     >>> s.echo("lala", 4, 3.4)
21     ['lala', 4, 3.3999999999999999]
22     >>> s.echo("lala", 4, [1, 2])
23     ['lala', 4, [1, 2]]
24
25 """
26
27 from twisted.web import xmlrpc
28 from twisted.internet import defer
29 import xmlrpclib
30
31
32 class Echoer(xmlrpc.XMLRPC):
33     """
34     An example object to be published.
35
36     Has five methods accessable by XML-RPC, 'echo', 'hello', 'defer',
37     'defer_fail' and 'fail.
38     """
39
40     def xmlrpc_echo(self, *args):
41         """
42         Return all passed args.
43         """
44         return args
45
46     def xmlrpc_hello(self):
47         """
48         Return 'hello, world'.
49         """
50         return 'hello, world!'
51
52     def xmlrpc_defer(self):
53         """
54         Show how xmlrpc methods can return Deferred.
55         """
56         return defer.succeed("hello")
57
58     def xmlrpc_defer_fail(self):
59         """
60         Show how xmlrpc methods can return failed Deferred.
61         """
62         return defer.fail(12)
63
64     def xmlrpc_fail(self):
65         """
66         Show how we can return a failure code.
67         """
68         return xmlrpclib.Fault(7, "Out of cheese.")
69
70
71 def main():
72     from twisted.internet import reactor
73     from twisted.web import server
74     r = Echoer()
75     reactor.listenTCP(7080, server.Site(r))
76     reactor.run()
77
78
79 if __name__ == '__main__':
80     main()