105 lines
1.9 KiB
Python
105 lines
1.9 KiB
Python
# coding=utf8
|
|
"""
|
|
A mini-demo of what wsme can do.
|
|
|
|
To run it::
|
|
|
|
python setup.py develop
|
|
|
|
Then::
|
|
|
|
python demo.py
|
|
"""
|
|
|
|
from wsme import WSRoot, expose, validate
|
|
from wsme.types import File
|
|
|
|
import bottle
|
|
|
|
from six import u
|
|
|
|
import logging
|
|
|
|
|
|
class Person(object):
|
|
id = int
|
|
firstname = unicode
|
|
lastname = unicode
|
|
|
|
hobbies = [unicode]
|
|
|
|
def __repr__(self):
|
|
return "Person(%s, %s %s, %s)" % (
|
|
self.id,
|
|
self.firstname, self.lastname,
|
|
self.hobbies
|
|
)
|
|
|
|
|
|
class DemoRoot(WSRoot):
|
|
@expose(int)
|
|
@validate(int, int)
|
|
def multiply(self, a, b):
|
|
return a * b
|
|
|
|
@expose(File)
|
|
@validate(File)
|
|
def echofile(self, afile):
|
|
return afile
|
|
|
|
@expose(unicode)
|
|
def helloworld(self):
|
|
return u"こんにちは世界 (<- Hello World in Japanese !)"
|
|
|
|
@expose(Person)
|
|
def getperson(self):
|
|
p = Person()
|
|
p.id = 12
|
|
p.firstname = u'Ross'
|
|
p.lastname = u'Geler'
|
|
p.hobbies = []
|
|
print p
|
|
return p
|
|
|
|
@expose([Person])
|
|
def listpersons(self):
|
|
p = Person()
|
|
p.id = 12
|
|
p.firstname = u('Ross')
|
|
p.lastname = u('Geler')
|
|
r = [p]
|
|
p = Person()
|
|
p.id = 13
|
|
p.firstname = u('Rachel')
|
|
p.lastname = u('Green')
|
|
r.append(p)
|
|
print r
|
|
return r
|
|
|
|
@expose(Person)
|
|
@validate(Person)
|
|
def setperson(self, person):
|
|
return person
|
|
|
|
@expose([Person])
|
|
@validate([Person])
|
|
def setpersons(self, persons):
|
|
print persons
|
|
return persons
|
|
|
|
|
|
root = DemoRoot(webpath='/ws')
|
|
|
|
root.addprotocol('soap',
|
|
tns='http://example.com/demo',
|
|
typenamespace='http://example.com/demo/types',
|
|
baseURL='http://127.0.0.1:8080/ws/',
|
|
)
|
|
|
|
root.addprotocol('restjson')
|
|
|
|
bottle.mount('/ws/', root.wsgiapp())
|
|
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
bottle.run()
|