Hi, folks!

I try to create a controller which should receive one http content-type in
request but it should be another content-type in response. I tried to use
pecan and wsme decorators for controller's methods.

I just want to receive text on server and send json-encoded string from
server (request has text/plain and response - application/json)

I tried:

class MyResource(resource.Resource):
    id = wtypes.text
    name = wtypes.text


class MyResourcesController(rest.RestController):
    @wsexpose(MyResource, body=wtypes.text)
    def put(self, text):
        return MyResource(id='1', name=text)


According to WSME documentation (
http://wsme.readthedocs.org/en/latest/integrate.html#module-wsmeext.pecan)
signature wsexpose method as following:

  wsexpose(*return_type*, **arg_types*, ***options*)

Ok, I just set MyResource as return_type and body to text type. But it
didn't work as expected:
http://paste.openstack.org/show/138268/

I looked at pecan documentation at
https://media.readthedocs.org/pdf/pecan/latest/pecan.pdf but I didn't find
anything that can fit to my case.

Also, I tried:

class MyResource(resource.Resource):
    id = wtypes.text
    name = wtypes.text


class MyResourcesController(rest.RestController):
    @expose('json')
    @expose(content_type="text/plain")
    def put(self):
        text = pecan.request.text
        return MyResource(id='1', name=text).to_dict()

It worked just in case if request and response have the same content-type.
(application/json<->application/json, text/plain<->text/plain)

I also tried a lot of combination of parameters but it is still not worked.

Does anyone know what the problem is?
How it can be done using WSME and/or Pecan?

Sorry if I misunderstand something.
-- 
Best Regards,
Nikolay
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to