{ "info": { "author": "Tatsuhiro Tsujikawa", "author_email": "tatsuhiro.t@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Cython", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Python-spdylay is a Python SPDY library on top of Spdylay C\nlibrary. It supports SPDY/2 and SPDY/3 protocol.\n\nIt does not perform any I/O operations. When the library needs them,\nit calls the callback functions provided by the application. It also\ndoes not include any event polling mechanism, so the application can\nfreely choose the way of handling events.\n\nIt provides almost all API Spdylay provides with Pythonic fashion.\n\nThe core library API works with Python 2 and 3. But\n``ThreadedSPDYServer`` requires Python 3.3 because it uses TLS NPN\nextension.\n\nInstallation\n============\n\nFirst install Spdylay library. You can grab a source distribution from\n`sf.net download page\n`_\nor `clone git repository `_.\n\nSee `Spdylay documentation\n`_ for the\nrequired packages and how to build Spdylay from git repository.\n\nAfter Spdylay is installed, run ``build_ext`` command to build\nextension module::\n\n $ python setup.py build_ext\n\nIf you installed Spdylay library in other than standard location, use\n``--include-dirs`` and ``--library-dirs`` to specify header file and\nlibrary locations respectively.\n\nDocumentation\n=============\n\nSee `python-spdylay documentation\n`_.\n\nSamples\n=======\n\nHere is a simple SPDY server::\n\n #!/usr/bin/env python\n\n # The example SPDY server. Python 3.3 or later is required because TLS\n # NPN is used in spdylay.ThreadedSPDYServer. Put private key and\n # certificate file in the current working directory.\n\n import spdylay\n\n # private key file\n KEY_FILE='server.key'\n # certificate file\n CERT_FILE='server.crt'\n\n class MySPDYRequestHandler(spdylay.BaseSPDYRequestHandler):\n\n def do_GET(self):\n self.send_response(200)\n self.send_header('content-type', 'text/html; charset=UTF-8')\n\n content = '''\\\n \n SPDY FTW\n \n

SPDY FTW

\n

The age of HTTP/1.1 is over. The time of SPDY has come.

\n \n '''.encode('UTF-8')\n\n self.wfile.write(content)\n\n if __name__ == \"__main__\":\n HOST, PORT = \"localhost\", 3000\n\n server = spdylay.ThreadedSPDYServer((HOST, PORT),\n MySPDYRequestHandler,\n cert_file=CERT_FILE,\n key_file=KEY_FILE)\n server.start()\n\nHere is a simple SPDY client::\n\n #!/usr/bin/env python\n\n # The example SPDY client. You need Python 3.3 or later because we\n # use TLS NPN.\n #\n # Usage: spdyclient.py URL...\n #\n import sys\n import spdylay\n\n class MyStreamHandler(spdylay.BaseSPDYStreamHandler):\n def on_header(self, nv):\n sys.stdout.write('Stream#{}\\n'.format(self.stream_id))\n for k, v in nv:\n sys.stdout.write('{}: {}\\n'.format(k, v))\n\n def on_data(self, data):\n sys.stdout.write('Stream#{}\\n'.format(self.stream_id))\n sys.stdout.buffer.write(data)\n\n def on_close(self, status_code):\n sys.stdout.write('Stream#{} closed\\n'.format(self.stream_id))\n\n if __name__ == '__main__':\n uris = sys.argv[1:]\n spdylay.urlfetch(uris, MyStreamHandler)", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://spdylay.sourceforge.net/", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "python-spdylay", "package_url": "https://pypi.org/project/python-spdylay/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/python-spdylay/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://spdylay.sourceforge.net/" }, "release_url": "https://pypi.org/project/python-spdylay/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Python SPDY library on top of Spdylay C library", "version": "0.1.2" }, "last_serial": 798089, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9838791e0e1092fa33c24ef6ae562948", "sha256": "fe3cdb8ed38d1f64832ae8cc3e4323355daaff10f62c7fdf135ff892f80aed13" }, "downloads": -1, "filename": "python-spdylay-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9838791e0e1092fa33c24ef6ae562948", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129190, "upload_time": "2012-08-24T15:33:53", "url": "https://files.pythonhosted.org/packages/ac/1c/25a792948689955acac2ed91efea5c1a488c4f341051ba379e04aeab8e20/python-spdylay-0.1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "19ef911a2e3eb41e27eee617a5087c4b", "sha256": "b03b098c1c9367094f3b18ac8b3b739c9e11135dfa15a12b1c1bd3f608137cc6" }, "downloads": -1, "filename": "python-spdylay-0.1.0.win32-py3.3.exe", "has_sig": false, "md5_digest": "19ef911a2e3eb41e27eee617a5087c4b", "packagetype": "bdist_wininst", "python_version": "3.3", "requires_python": null, "size": 324653, "upload_time": "2012-08-25T12:55:04", "url": "https://files.pythonhosted.org/packages/a9/1a/e07c39d7441f274363befcae66c86021f9622685f3b6797cc96dddc10db0/python-spdylay-0.1.0.win32-py3.3.exe" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2c27d3e2d282747057235d39bcadb3fb", "sha256": "17659be984b331ce602fa0d232deb54560ab4b010e4b59db370ad415654ecb86" }, "downloads": -1, "filename": "python-spdylay-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2c27d3e2d282747057235d39bcadb3fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152312, "upload_time": "2012-08-28T13:55:01", "url": "https://files.pythonhosted.org/packages/f6/b3/fb923f529853f960018ee4d20dbb0d34585266ebf26cf02233355d58deaf/python-spdylay-0.1.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "f6d2b7011f3a4a9801a818761a19a58c", "sha256": "31b45b38304c1c9caa30634c3821a4e61e82154e7bb1c9c9788d8aad63901d11" }, "downloads": -1, "filename": "python-spdylay-0.1.1.win32-py3.3.exe", "has_sig": false, "md5_digest": "f6d2b7011f3a4a9801a818761a19a58c", "packagetype": "bdist_wininst", "python_version": "3.3", "requires_python": null, "size": 342125, "upload_time": "2012-08-28T15:54:37", "url": "https://files.pythonhosted.org/packages/f7/20/23f6b3028a5b62c4d4fc451dd50bceae17604dbf9b009921b0faa7f912b2/python-spdylay-0.1.1.win32-py3.3.exe" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "af3be8ea01d74c495f8d5918962ef54d", "sha256": "019c4d32588edf3ed915d7c053bca607665cefd3fffcabb1b656da0c20625dd5" }, "downloads": -1, "filename": "python-spdylay-0.1.2.tar.gz", "has_sig": false, "md5_digest": "af3be8ea01d74c495f8d5918962ef54d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152268, "upload_time": "2012-09-13T14:08:48", "url": "https://files.pythonhosted.org/packages/73/0b/ad7143c051e8a0085f8823f12bb6a20daf5539c188a4f479109c089c80c6/python-spdylay-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "af3be8ea01d74c495f8d5918962ef54d", "sha256": "019c4d32588edf3ed915d7c053bca607665cefd3fffcabb1b656da0c20625dd5" }, "downloads": -1, "filename": "python-spdylay-0.1.2.tar.gz", "has_sig": false, "md5_digest": "af3be8ea01d74c495f8d5918962ef54d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152268, "upload_time": "2012-09-13T14:08:48", "url": "https://files.pythonhosted.org/packages/73/0b/ad7143c051e8a0085f8823f12bb6a20daf5539c188a4f479109c089c80c6/python-spdylay-0.1.2.tar.gz" } ] }