{ "info": { "author": "Thomas Rabaix", "author_email": "thomas.rabaix@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "======\nShirka\n======\n\nThis a bot based on twisted, mostly a python learning project\n\nConsumers\n=========\n\n* flowdock: read message from flow dock stream API\n\nResponders\n==========\n\n* face\n* whois\n* math\n* wat\n* xkcd\n* ascii\n* 9gag\n\nInstallation\n============\n\nInstall dependencies::\n\n pip install twisted\n pip install twistedhttpstream\n pip install requests\n pip install sympy\n pip install mocker\n pip install pyopenssl\n pip install python-flowdock\n pip install markdown\n pip install paramiko\n pip install pyyaml\n pip install ioc\n\nRunning Tests\n=============\n\n.. code-block:: python\n\n python tests.py # run all tests\n python -m unittest responders.xkcd # run one test\n\nUsage\n=====\n\n- start.py\n\n.. code-block:: python\n\n # vim: set fileencoding=utf-8 :\n\n import twistedhttpstream, yaml, sys, logging\n from twisted.internet import reactor\n import ioc\n\n logging.basicConfig(level=logging.DEBUG)\n\n container = ioc.build([\n 'config.yml',\n ])\n\n if __name__ == \"__main__\":\n\n for flow in container.parameters['consumers']:\n twistedhttpstream.stream(\n reactor, \n \"https://stream.flowdock.com/flows/%s/%s\" % (container.parameters[\"flowdock.%s.organisation\" % flow], flow), \n container.get(\"consumer.%s.flowdock\" % flow), \n username=container.parameters[\"flowdock.%s.user.token\" % flow], \n password=\"\"\n )\n \n\n reactor.run()\n\n- Configuration file\n\n.. code-block:: yaml\n\n parameters:\n consumers: [test]\n bot.name: nono\n bot.email: no-reply@shirka.com\n\n remote.users: [XXX]\n remote.servers: \n # paramiko option - http://www.lag.net/paramiko/docs/paramiko.SSHClient-class.html\n nono: {host: XXXX, username: XXXX, look_for_keys: false, password: XXXX }\n\n # configure flow parameterstest\n flowdock.test.organisation: shirka\n flowdock.test.flow.name: FLOW_NAME\n flowdock.test.flow.token: FLOW_TOKEN\n flowdock.test.user.name: rande\n flowdock.test.user.token: USER_TOKEN\n\n\n services:\n\n # Configure the bot\n bot:\n class: shirka.consumers.Bot\n arguments: [ '%bot.name%', '%bot.email%']\n\n # Configure shared responders\n responders.math: { class: shirka.responders.MathResponder }\n responders.xkcd: { class: shirka.responders.XkcdResponder }\n responders.big_bro: { class: shirka.responders.BigbroResponder }\n responders.reminder: { class: shirka.responders.ReminderResponder }\n responders.status: { class: shirka.responders.StatusResponder }\n responders.rage_face: { class: shirka.responders.RagefaceResponder }\n responders.wat: { class: shirka.responders.WatResponder }\n responders.9gag: { class: shirka.responders.NineGagResponder }\n\n responders.remote:\n class: shirka.responders.RemoteResponder\n arguments: \n - '%remote.servers%'\n - '%remote.users%'\n\n\n # Configure flowdock push API\n flowdock.test:\n class: flowdock.FlowDock\n kwargs: \n api_key: '%flowdock.test.flow.token%'\n app_name: '%bot.name%'\n project: Project test\n\n consumer.test.flowdock.logger:\n class: logging.getLogger\n arguments:\n - 'flowdock.%flowdock.test.flow.name%'\n \n # Configure Stream API Consumer with valid responders\n consumer.test.flowdock:\n class: shirka.consumers.FlowDockConsumer\n arguments: \n - '@bot'\n - \"%flowdock.test.flow.token%\"\n - \n - '@responders.rage_face' \n - '@responders.test.whois'\n - '@responders.math' \n - '@responders.big_bro'\n - '@responders.reminder'\n - '@responders.remote'\n - '@responders.status'\n - '@responders.test.help'\n - '@responders.test.whois'\n \n - '@flowdock.test'\n kwargs:\n logger: '@consumer.test.flowdock.logger'\n\n responders.test.whois:\n class: shirka.responders.FlowdockWhoisResponder\n arguments:\n - '%flowdock.test.organisation%'\n - '%flowdock.test.flow.name%'\n - '%flowdock.test.user.token%'\n\n responders.test.help:\n class: shirka.responders.HelpResponder\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rande/python-shirka", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "shirka", "package_url": "https://pypi.org/project/shirka/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/shirka/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rande/python-shirka" }, "release_url": "https://pypi.org/project/shirka/0.0.3/", "requires_dist": null, "requires_python": null, "summary": "A small bot based on twisted", "version": "0.0.3" }, "last_serial": 799497, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "13b58e8053946bb47a44aac7ec63ccbc", "sha256": "843e963c6bffc62343054c36fc566036926e1b6a5defbe25ecc354f5850697b0" }, "downloads": -1, "filename": "shirka-0.0.2.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "13b58e8053946bb47a44aac7ec63ccbc", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 76975, "upload_time": "2013-03-16T19:12:51", "url": "https://files.pythonhosted.org/packages/98/4d/b23c1635f80ea37f3ee635f21028458d4e4092a2431a09a6dc66c38bc649/shirka-0.0.2.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "942b66f9ad929a172fa7fa4b57860de6", "sha256": "63e8ec54bf5155aaa0931075876d5a157b1b752f5f5271968aba5e6a27b432d3" }, "downloads": -1, "filename": "shirka-0.0.2.tar.gz", "has_sig": false, "md5_digest": "942b66f9ad929a172fa7fa4b57860de6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9140, "upload_time": "2013-03-16T19:12:47", "url": "https://files.pythonhosted.org/packages/00/a1/f7f52fa951c9c9a6f2a79a040d43912072a31f47ed2f79ec1c1554b36019/shirka-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "6689d61b3a7cf794557445a679f1caa2", "sha256": "637a4a54de2c94aff30fc16cc20a4ba37db1f27ee38976c9d729636a89d14f08" }, "downloads": -1, "filename": "shirka-0.0.3.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "6689d61b3a7cf794557445a679f1caa2", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 81268, "upload_time": "2013-03-19T22:00:31", "url": "https://files.pythonhosted.org/packages/8f/29/ebdff83876efb6b9e86ab623802e2fd75c5c0520f607fac9fab1985f9c2f/shirka-0.0.3.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "8cac069cf9754e7c97763272dda430c3", "sha256": "731011ea7550a99abbb1857f05524973b8865b1c25f3e93e6db15349e44e3dc1" }, "downloads": -1, "filename": "shirka-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8cac069cf9754e7c97763272dda430c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 571894, "upload_time": "2013-03-19T22:00:27", "url": "https://files.pythonhosted.org/packages/98/4d/9881eb0e9b8ad14436f895afab90368f4334b9beb502896ecf20ba77b919/shirka-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6689d61b3a7cf794557445a679f1caa2", "sha256": "637a4a54de2c94aff30fc16cc20a4ba37db1f27ee38976c9d729636a89d14f08" }, "downloads": -1, "filename": "shirka-0.0.3.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "6689d61b3a7cf794557445a679f1caa2", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 81268, "upload_time": "2013-03-19T22:00:31", "url": "https://files.pythonhosted.org/packages/8f/29/ebdff83876efb6b9e86ab623802e2fd75c5c0520f607fac9fab1985f9c2f/shirka-0.0.3.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "8cac069cf9754e7c97763272dda430c3", "sha256": "731011ea7550a99abbb1857f05524973b8865b1c25f3e93e6db15349e44e3dc1" }, "downloads": -1, "filename": "shirka-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8cac069cf9754e7c97763272dda430c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 571894, "upload_time": "2013-03-19T22:00:27", "url": "https://files.pythonhosted.org/packages/98/4d/9881eb0e9b8ad14436f895afab90368f4334b9beb502896ecf20ba77b919/shirka-0.0.3.tar.gz" } ] }