This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!
Project Description

Serve JSON-RPC requests from Zope2.

Documentation

The product patches the publisher to serve JSON/RPC requests from within Zope2. It is based on:

  • original product for earlier versions of Zope2 by Balazs Ree
  • jsonserver for zope3 by Jim Washington jwashin@vt.edu and Contributors
  • ZPublisher/xmlrpc.py

JSON is javascript object notation. JSON-RPC performs the same service as XML-RPC, except the format is javascript script objects instead of XML, and the content-type is ‘application/json-rpc’ instead of ‘text/xml’.

This project overrides some base zope2 code to provide the additional functionality of listening and responding properly to requests of type “application/json”.

The product was tested with Zope 2.10 and Zope 2.13

Installation:

Add this egg to your Zope/Plone buildout.

Usage:

Similar to xmlrpc usage.

jsonserver looks for content-type “application/json”, and handles those requests as JSON-RPC. Other http requests are not affected and will presumably work as expected.

For communication other than in a web browser (javascript), simplejson or other json implementations have functions for reading and writing JSON objects.

The text of a JSON-RPC request looks like:

{'id':jsonid,''method':remotemethod,'params':methodparams}

where:

o jsonid is a string or number that may identify this specific request

o remotemethod is the method to call on the server

o methodparams is a list(javascript Array) of parameters to the method

The text of a JSON-RPC response looks like:

{'id':jsonid,''result':returnedresult,'error':returnederr}

where:

o jsonid is the same jsonid as sent in the request

o returnedresult is a javascript representation of the result or null

o returnederr is a javascript representation of an error state

Either returnedresult or returnederr will be the javascript null value.

Actual implementation using e.g., urllib is left as an exercise for the reader. Hint: Use the minjson.write(object) and minjson.read(string) methods for conversion before and after transport.

Five extensions

The “json” namespace (http://namespaces.zope.org/json) defines the page and pages directives. json:page is identical to browser:page in the usage, but the page or method declared is allowed to be called up in a json request, but will be invisible for normal requests.

browser:page and browser:pages declarations will be available to both normal and json requests.

json:page declarations will be callable from code and their macros will be visible from other templates.

<json:page
    name="myjsonrpcview"
    for="*"
    class=".jsonrpc.MyJsonRpcView"
    permission="zope2.ViewManagementScreens"
    />

Code:

The code of the product can be found at: https://bitbucket.org/tomgross/products.jsonserver

Change history

1.2b6 (2013-06-17)

  • Plone 4.3 compatibility [rristow]

1.2b5 (2012-03-21)

  • Include zcml files in Manifest.in [tom_gross]

1.2b4 (2012-03-21)

  • Another Manifest.in fix [tom_gross]

1.2b3 (2012-03-21)

  • Added Manifest.in and fixed broken egg [tom_gross]

1.2b2 (2012-03-20)

  • Use simplejson/json instead of minjson implementation [tom_gross]
  • Allow utf-8 as input encoding only [tom_gross]
  • Zope 2.13 compatibility [tom_gross]
  • Fixed issue occured if used with diazo [tom_gross]

1.2b1 (2011-10-07)

  • fixed content-type with charset [tom_gross, thanks Steve Spicklemire]
  • changed has_key with __contains__ calls [tom_gross]
  • fixed sending of unauthorized status [tom_gross]
  • return error object according to the JSON-RPC specification http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ErrorObject [tom_gross, thanks Steve Spicklemire]

1.2a1 (2010-07-15)

Contributors

  • Tom Gross, Author
  • Balazs Ree
  • Rodrigo Ristow
Release History

Release History

1.2b6

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2b5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2b4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2b3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2b2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2b1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.2a1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
Products.jsonserver-1.2b6.zip (22.2 kB) Copy SHA256 Checksum SHA256 Source Jun 17, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting