{ "info": { "author": "Mike Kazantsev", "author_email": "mk.fraggod@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Plugins", "Framework :: Twisted", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 2 :: Only", "Topic :: Internet", "Topic :: System :: Archiving", "Topic :: System :: Filesystems" ], "description": "txboxdotnet\n-----------\n\nTwisted-based python async interface for `Box (box.net) API (version\n2.0) `__.\n\n- API docs: http://developers.box.com/docs/\n- API Auth docs: http://developers.box.com/oauth/\n\nUsage Example\n-------------\n\nFollowing script will print listing of the root box.net folder, upload\n\"test.txt\" file there, try to find it in updated folder listing and then\nremove it.\n\n::\n\n from twisted.internet import defer, reactor\n from txboxdotnet.api_v2 import txBoxAPI\n\n api = txBoxAPI(\n client_id='...',\n client_secret='...', ... )\n\n if not api.auth_code:\n print '\\n'.join([\n 'Visit the following URL in any web browser (firefox, chrome, safari, etc),',\n ' authorize there, confirm access permissions, and paste URL of an empty page',\n ' (starting with \"https://success.box.com/\") you will get',\n ' redirected to into \"auth_code\" value in \"config\" dict above.\\n',\n 'URL to visit:\\n {}'.format(api.auth_user_get_url()) ])\n exit()\n\n if re.search(r'^https?://', api.auth_code):\n api.auth_user_process_url(api.auth_code)\n\n @defer.inlineCallbacks\n def do_stuff():\n\n # Print root directory listing\n print list(e['name'] for e in (yield api.listdir()))\n\n # Upload \"test.txt\" file from local current directory\n file_info = yield api.put('test.txt')\n\n # Find just-uploaded \"test.txt\" file by name\n file_id = yield api.resolve_path('test.txt')\n\n # Check that id matches uploaded file\n assert file_info['id'] == file_id\n\n # Remove the file\n yield api.delete(file_id)\n\n do_stuff().addBoth(lambda ignored: reactor.stop())\n reactor.run()\n\nNote that parameters passed to txBoxAPI class init above should contain\nauthentication data, which can/should be derived from \"client\\_id\" and\n\"client\\_secret\", provided after app registration `on\nbox.net `__.\n\nService (at least now) has quite annoying requirement that the\n\"auth\\_code\" it will provide after authorizing API access request is\nonly valid for **30 seconds**. See `API auth\ndocs `__ for more info on the process.\n\nFor more complete example (including oauth2 stuff), see\n`api\\_v2.py `__\ncode after ``if __name__ == '__main__':`` (will need better examples in\nthe future, patches welcome!).\n\nInstallation\n------------\n\nIt's a regular package for Python 2.7 (not 3.X).\n\nUsing `pip `__ is the best way:\n\n::\n\n % pip install txboxdotnet\n\nIf you don't have it, use:\n\n::\n\n % easy_install pip\n % pip install txboxdotnet\n\nAlternatively (`see\nalso `__):\n\n::\n\n % curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python\n % pip install txboxdotnet\n\nOr, if you absolutely must:\n\n::\n\n % easy_install txboxdotnet\n\nBut, you really shouldn't do that.\n\nCurrent-git version can be installed like this:\n\n::\n\n % pip install 'git+https://github.com/mk-fg/txboxdotnet.git#egg=txboxdotnet'\n\nNote that to install stuff in system-wide PATH and site-packages,\nelevated privileges are often required. Use \"install --user\",\n`~/.pydistutils.cfg `__\nor `virtualenv `__ to do\nunprivileged installs into custom paths.\n\nRequirements\n~~~~~~~~~~~~\n\n- `Python 2.7 (not 3.X) `__\n\n- `Twisted `__ (core, web, at least 12.2.0)\n\nImplemented methods\n-------------------\n\nMatrix of implemented API method wrappers (same order as in the\n`docs `__):\n\n- folders\n\n - [x] list: ``listdir``\n - [x] create: ``mkdir``\n - [x] get info: ``info_folder``\n - [ ] copy\n - [x] delete: ``delete_folder``\n - [ ] update info\n - [ ] create shared link\n - [ ] view discussions\n - [ ] view collaborations\n - [ ] list from trash\n - [ ] info from trash\n - [ ] restore from trash\n - [ ] delete permanently\n\n- files\n\n - [x] upload: ``put``\n - [x] download: ``get``\n - [x] get info: ``info_file``\n - [x] upload overwrite: ``put``\n - [ ] upload rename\n - [ ] view versions\n - [ ] update info\n - [x] delete: ``delete_file``\n - [ ] copy\n - [ ] create shared link\n - [ ] view comments\n - [ ] get thumbnail\n - [ ] get from trash\n - [ ] restore from trash\n - [ ] delete permanently\n\n- comments\n- discussions\n- collaborations\n\n- users\n\n - [x] current user info: ``info_user``\n - [ ] all the rest ;)\n\n- search\n- shared items\n- events\n\nNote that these wrappers tend to be very thin, just taking python method\narguments and translating these into appropriate API keys, typically\nlooking somewhat like this:\n\n::\n\n def info_file(self, file_id):\n return self(join('files', file_id))\n\nAny missing methods can also be replaced by calling api object in the\nsame way as above, passing all the appropriate (as per docs) parameters.\n\nMy purposes are quite narrow - I use service only for file storage - so\nmissing sharing/collaboration wrappers are unlikely to be implemented\nhere without patches from someone interested in having these.", "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/mk-fg/txboxdotnet", "keywords": "boxdotnet,box,box.net,box.com,twistedasync,api,rest,json,storage,storage provider,file hosting", "license": "WTFPL", "maintainer": null, "maintainer_email": null, "name": "txboxdotnet", "package_url": "https://pypi.org/project/txboxdotnet/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/txboxdotnet/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mk-fg/txboxdotnet" }, "release_url": "https://pypi.org/project/txboxdotnet/15.5.0/", "requires_dist": null, "requires_python": null, "summary": "Twisted-based async interface for Box (box.net) API v2.0", "version": "15.5.0" }, "last_serial": 1530277, "releases": { "13.03.11": [ { "comment_text": "", "digests": { "md5": "845b3518c9199c79ffb6dd33c8b169b4", "sha256": "45de4bc46bda8271a5c28f373653068194a7956c37ec318fe5ba4d407d663d3c" }, "downloads": -1, "filename": "txboxdotnet-13.03.11.tar.gz", "has_sig": true, "md5_digest": "845b3518c9199c79ffb6dd33c8b169b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16264, "upload_time": "2013-03-30T21:08:30", "url": "https://files.pythonhosted.org/packages/90/4e/5713103caba1f27b57ae32cf2f5e6369d984bf6cdfe22b7558341d9d51d2/txboxdotnet-13.03.11.tar.gz" } ], "13.03.4": [ { "comment_text": "", "digests": { "md5": "062494615c45a2c0d2559d3483067e07", "sha256": "27903839ecc345bf4005361ec47cdfb52cdf8a304cdf7e9edd87dfba634f1d45" }, "downloads": -1, "filename": "txboxdotnet-13.03.4.tar.gz", "has_sig": true, "md5_digest": "062494615c45a2c0d2559d3483067e07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15788, "upload_time": "2013-03-23T17:38:20", "url": "https://files.pythonhosted.org/packages/33/85/9246fe406e62e2c20a8e7980abf24fe01ab02ad2932fdeedfe6e2fb15ad8/txboxdotnet-13.03.4.tar.gz" } ], "13.03.5": [ { "comment_text": "", "digests": { "md5": "cda0b1e2999ab6b876974cac52f38423", "sha256": "d3b8f6e8b2b115a78191a0e1c53d53de5686432140e8bada45e6d62aa4606bcf" }, "downloads": -1, "filename": "txboxdotnet-13.03.5.tar.gz", "has_sig": true, "md5_digest": "cda0b1e2999ab6b876974cac52f38423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15794, "upload_time": "2013-03-23T17:40:56", "url": "https://files.pythonhosted.org/packages/e9/0e/ee70c6a16dd43d171e9042620cd600a091233eb333a03e8b76cc212f1b7f/txboxdotnet-13.03.5.tar.gz" } ], "13.04.2": [ { "comment_text": "", "digests": { "md5": "eddffdada3de26f1445569c837f5172f", "sha256": "54581c49e978480dfdeef8780ed6ca1ae411baffff2a3ed89387c6ee07893a14" }, "downloads": -1, "filename": "txboxdotnet-13.04.2.tar.gz", "has_sig": true, "md5_digest": "eddffdada3de26f1445569c837f5172f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16275, "upload_time": "2013-04-13T16:56:38", "url": "https://files.pythonhosted.org/packages/cc/30/16259572d35c23169696904ce6558503cb03fd5a5d81d719368b23d5f50f/txboxdotnet-13.04.2.tar.gz" } ], "13.04.4": [ { "comment_text": "", "digests": { "md5": "ce60bd2250f2e0bbb5759315bcd50712", "sha256": "6257ca5f4e7ae8b1d7db429a7b727abbbb0402ce1c5cf1b7b521ca8f14445efd" }, "downloads": -1, "filename": "txboxdotnet-13.04.4.tar.gz", "has_sig": true, "md5_digest": "ce60bd2250f2e0bbb5759315bcd50712", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16267, "upload_time": "2013-04-15T15:05:04", "url": "https://files.pythonhosted.org/packages/e4/06/88087db97aa9543c88589e6f3a2c83b381d9f5567790b64568f754bb711b/txboxdotnet-13.04.4.tar.gz" } ], "13.04.5": [ { "comment_text": "", "digests": { "md5": "a05d44913a4f82abc6867a53daff2113", "sha256": "5b8318dbf32cf4b7c36fd403a79ee2f129411cb9fb5ac2e72aba85da91db02f9" }, "downloads": -1, "filename": "txboxdotnet-13.04.5.tar.gz", "has_sig": true, "md5_digest": "a05d44913a4f82abc6867a53daff2113", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16305, "upload_time": "2013-04-15T15:09:59", "url": "https://files.pythonhosted.org/packages/eb/b3/1d8b762643818c93b6384a3064c8ca24a817c3c5885ad1d6b6158da18abd/txboxdotnet-13.04.5.tar.gz" } ], "13.05.6": [ { "comment_text": "", "digests": { "md5": "d9f5fe9ea3c030ce5d7c51c31858d4e4", "sha256": "4adb5ff663bd91f037546955eecf62973b9af3dfe87bf444570c2d259ebe4ca5" }, "downloads": -1, "filename": "txboxdotnet-13.05.6.tar.gz", "has_sig": true, "md5_digest": "d9f5fe9ea3c030ce5d7c51c31858d4e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16974, "upload_time": "2013-05-22T15:58:41", "url": "https://files.pythonhosted.org/packages/76/80/f595a4f7ba3317db5fa1c9ddba00094923504e40019ff31a24d9469624b0/txboxdotnet-13.05.6.tar.gz" } ], "13.06.1": [ { "comment_text": "", "digests": { "md5": "7d471c8e4b484edd1deac15ff2fcf521", "sha256": "8e32455b4feb7e8f8a3c8ed9df809f5333a2cbdea666c605b95743a05c68e484" }, "downloads": -1, "filename": "txboxdotnet-13.06.1.tar.gz", "has_sig": true, "md5_digest": "7d471c8e4b484edd1deac15ff2fcf521", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17006, "upload_time": "2013-06-13T21:46:28", "url": "https://files.pythonhosted.org/packages/2d/97/9dd3e364774939568cb78a58b267e7f50f4d3e805005e5a901961333da86/txboxdotnet-13.06.1.tar.gz" } ], "15.5.0": [ { "comment_text": "", "digests": { "md5": "7f34247e9ff866d01ba8ac7accbe5677", "sha256": "2bb00c97ae7cb2dcbb19ed2115f21e45cf49071a8c3018b94aca0d8d88a7050e" }, "downloads": -1, "filename": "txboxdotnet-15.5.0.tar.gz", "has_sig": true, "md5_digest": "7f34247e9ff866d01ba8ac7accbe5677", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14633, "upload_time": "2015-05-02T10:11:35", "url": "https://files.pythonhosted.org/packages/0f/e5/28ba526bccc2de5bcc0ca82ab3ef146f4caa68b1d83ceb73d97db0f9dc83/txboxdotnet-15.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7f34247e9ff866d01ba8ac7accbe5677", "sha256": "2bb00c97ae7cb2dcbb19ed2115f21e45cf49071a8c3018b94aca0d8d88a7050e" }, "downloads": -1, "filename": "txboxdotnet-15.5.0.tar.gz", "has_sig": true, "md5_digest": "7f34247e9ff866d01ba8ac7accbe5677", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14633, "upload_time": "2015-05-02T10:11:35", "url": "https://files.pythonhosted.org/packages/0f/e5/28ba526bccc2de5bcc0ca82ab3ef146f4caa68b1d83ceb73d97db0f9dc83/txboxdotnet-15.5.0.tar.gz" } ] }