# aiobungie
A statically typed, asynchronous API wrapper that supports Bungie's REST API for Python 3.
## Installing
Currently Python 3.10, 3.11 and 3.12 are supported.
Latest Release using `pip`.
```sh
pip install aiobungie
```
Development via github master.
```sh
pip install git+https://github.com/nxtlo/aiobungie@master
```
## Quick Example
See [Examples for advance usage](https://github.com/nxtlo/aiobungie/tree/master/examples)
```py
import aiobungie
import asyncio
client = aiobungie.Client('YOUR_API_KEY')
async def main() -> None:
# Search for Destiny 2 players.
async with client.rest:
users = await client.search_users("Fate")
for user in users:
# Print all Destiny 2 memberships for this user.
print(user.memberships)
asyncio.run(main())
```
## RESTful clients
aiobungie also provides a stand-alone `RESTClient` / `RESTPool` which's what `Client` built on top of, These clients just provide a lower-level abstraction.
A key note is that any `Client` based user can access the `RESTClient` instance bound to it with `.rest` property.
### Key features
* Lower level, allows to read and deserialize the JSON objects yourself.
* `RESTClient`s do not turn response payloads into one of `aiobungie.crates` object.
* RESTful, You can use this as your REST API client in backend directly.
* Both manifest and OAuth2 methods are usable directly.
### Example
```py
import aiobungie
import asyncio
# Single REST client connection.
client = aiobungie.RESTClient("YOUR_API_KEY")
async def main() -> None:
async with client:
# Download and open the JSON manifest.
manifest = await client.download_json_manifest(name="latest_manifest")
with manifest.open("r") as file:
data = file.read()
# OAuth2 API. 2 simple methods for fetching and refreshing tokens.
tokens = await client.fetch_oauth2_tokens('code')
refreshed_tokens = await client.refresh_access_token(tokens.refresh_token)
# Testing your own requests.
response = await client.static_request(
"GET", # Method.
"Destiny2/path/to/route", # Route.
auth="optional_access_token", # If the method requires OAuth2.
json={"some_key": "some_value"} # If you need to pass JSON data.
)
asyncio.run(main())
```
## Dependencies
* aiohttp
* attrs
* [`sain`](https://github.com/nxtlo/sain), this is a dependency free utility package.
* `backports.datetime_fromisoformat`, required for `Python 3.10` only.
### Features
aiobungie features are extra dependencies that replaces the standard library with either faster/neater pkgs.
* `speedup`
This will include and uses [orjson](https://github.com/ijl/orjson) or [ujson](https://github.com/ultrajson/ultrajson)
as the default `json` parser. They provide faster json serialization and de-serialization than the standard Python JSON pkg.
* `full`: This will include all of the features above.
For installing the specified feature, type `pip install aiobungie[feature-name]`
## Contributing
Please read this [manual](https://github.com/nxtlo/aiobungie/blob/master/CONTRIBUTING.md)
## Related Projects
If you have used aiobungie and want to show your work, Feel free to Open a PR including it.
* [Fated](https://github.com/nxtlo/Fated/blob/master/core/components/destiny.py): A Discord BOT that uses aiobungie.
## Useful Resources
* Discord Username: `vfate`
* aiobungie Documentation: [Here](https://nxtlo.github.io/aiobungie/).
* BungieAPI Discord: [Here](https://discord.gg/vP7VC7TKUG)
* Official Bungie Documentation: [Here](https://bungie-net.github.io/multi/index.html)
* Bungie Developer Portal: [Here](https://www.bungie.net/en/Application)
## FaQ
* I need help with something related to this project: Consider opening a blank issue, discussion or checkout the `useful resources` above.
* aiobungie doesn't support `fetch_xxx` route, what now? aiobungie's REST client exposes a method called `static_request` which allows you
to make your own requests, check out `examples/custom_client` example.
Raw data
{
"_id": null,
"home_page": "https://github.com/nxtlo/aiobungie",
"name": "aiobungie",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.10.0",
"maintainer_email": null,
"keywords": "async, api, destiny, bungie",
"author": "nxtlo",
"author_email": "dhmony-99@hotmail.com",
"download_url": "https://files.pythonhosted.org/packages/67/fb/ded984640a49f4f64d58204fb135bd9f10a45a75c27e527ac460971eed34/aiobungie-0.3.1.tar.gz",
"platform": null,
"description": "# aiobungie\n\nA statically typed, asynchronous API wrapper that supports Bungie's REST API for Python 3.\n\n## Installing\n\nCurrently Python 3.10, 3.11 and 3.12 are supported.\n\nLatest Release using `pip`.\n\n```sh\npip install aiobungie\n```\n\nDevelopment via github master.\n\n```sh\npip install git+https://github.com/nxtlo/aiobungie@master\n```\n\n## Quick Example\n\nSee [Examples for advance usage](https://github.com/nxtlo/aiobungie/tree/master/examples)\n\n```py\nimport aiobungie\nimport asyncio\n\nclient = aiobungie.Client('YOUR_API_KEY')\n\nasync def main() -> None:\n # Search for Destiny 2 players.\n async with client.rest:\n users = await client.search_users(\"Fate\")\n for user in users:\n # Print all Destiny 2 memberships for this user.\n print(user.memberships)\n \n\nasyncio.run(main())\n```\n\n## RESTful clients\n\naiobungie also provides a stand-alone `RESTClient` / `RESTPool` which's what `Client` built on top of, These clients just provide a lower-level abstraction.\n\nA key note is that any `Client` based user can access the `RESTClient` instance bound to it with `.rest` property.\n\n### Key features\n\n* Lower level, allows to read and deserialize the JSON objects yourself.\n* `RESTClient`s do not turn response payloads into one of `aiobungie.crates` object.\n* RESTful, You can use this as your REST API client in backend directly.\n* Both manifest and OAuth2 methods are usable directly.\n\n### Example\n\n```py\nimport aiobungie\nimport asyncio\n\n# Single REST client connection.\nclient = aiobungie.RESTClient(\"YOUR_API_KEY\")\n\nasync def main() -> None:\n async with client:\n # Download and open the JSON manifest.\n manifest = await client.download_json_manifest(name=\"latest_manifest\")\n with manifest.open(\"r\") as file:\n data = file.read()\n\n # OAuth2 API. 2 simple methods for fetching and refreshing tokens.\n tokens = await client.fetch_oauth2_tokens('code')\n refreshed_tokens = await client.refresh_access_token(tokens.refresh_token)\n\n # Testing your own requests.\n response = await client.static_request(\n \"GET\", # Method.\n \"Destiny2/path/to/route\", # Route.\n auth=\"optional_access_token\", # If the method requires OAuth2.\n json={\"some_key\": \"some_value\"} # If you need to pass JSON data.\n )\n\nasyncio.run(main())\n```\n\n## Dependencies\n\n* aiohttp\n* attrs\n* [`sain`](https://github.com/nxtlo/sain), this is a dependency free utility package.\n* `backports.datetime_fromisoformat`, required for `Python 3.10` only.\n\n### Features\n\naiobungie features are extra dependencies that replaces the standard library with either faster/neater pkgs.\n\n* `speedup`\nThis will include and uses [orjson](https://github.com/ijl/orjson) or [ujson](https://github.com/ultrajson/ultrajson)\nas the default `json` parser. They provide faster json serialization and de-serialization than the standard Python JSON pkg.\n* `full`: This will include all of the features above.\n\nFor installing the specified feature, type `pip install aiobungie[feature-name]`\n\n## Contributing\n\nPlease read this [manual](https://github.com/nxtlo/aiobungie/blob/master/CONTRIBUTING.md)\n\n## Related Projects\n\nIf you have used aiobungie and want to show your work, Feel free to Open a PR including it.\n\n* [Fated](https://github.com/nxtlo/Fated/blob/master/core/components/destiny.py): A Discord BOT that uses aiobungie.\n\n## Useful Resources\n\n* Discord Username: `vfate`\n* aiobungie Documentation: [Here](https://nxtlo.github.io/aiobungie/).\n* BungieAPI Discord: [Here](https://discord.gg/vP7VC7TKUG)\n* Official Bungie Documentation: [Here](https://bungie-net.github.io/multi/index.html)\n* Bungie Developer Portal: [Here](https://www.bungie.net/en/Application)\n\n## FaQ\n\n* I need help with something related to this project: Consider opening a blank issue, discussion or checkout the `useful resources` above.\n* aiobungie doesn't support `fetch_xxx` route, what now? aiobungie's REST client exposes a method called `static_request` which allows you\nto make your own requests, check out `examples/custom_client` example.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Python and Asyncio API wrapper for Bungie's API.",
"version": "0.3.1",
"project_urls": {
"Homepage": "https://github.com/nxtlo/aiobungie",
"Repository": "https://github.com/nxtlo/aiobungie"
},
"split_keywords": [
"async",
" api",
" destiny",
" bungie"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7d3ede912aad9579a23fd15f055aabbd9304f3c277a482bd97a1e8ad46e9da31",
"md5": "8b67e18466a52c1cb8b3878021fd86f0",
"sha256": "6ddd928f958f54121b300d636d119902d88ceca869429a9a3c7f31e2d73ebca8"
},
"downloads": -1,
"filename": "aiobungie-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8b67e18466a52c1cb8b3878021fd86f0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.10.0",
"size": 142717,
"upload_time": "2024-09-11T08:52:27",
"upload_time_iso_8601": "2024-09-11T08:52:27.380028Z",
"url": "https://files.pythonhosted.org/packages/7d/3e/de912aad9579a23fd15f055aabbd9304f3c277a482bd97a1e8ad46e9da31/aiobungie-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67fbded984640a49f4f64d58204fb135bd9f10a45a75c27e527ac460971eed34",
"md5": "624ad74a8480f290afc4cbb56200a96f",
"sha256": "b99f68fa96dd0317ae2bfa49e52e33b25561483f4e42390e35ff3be7d25f8ad4"
},
"downloads": -1,
"filename": "aiobungie-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "624ad74a8480f290afc4cbb56200a96f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.10.0",
"size": 112576,
"upload_time": "2024-09-11T08:52:29",
"upload_time_iso_8601": "2024-09-11T08:52:29.199483Z",
"url": "https://files.pythonhosted.org/packages/67/fb/ded984640a49f4f64d58204fb135bd9f10a45a75c27e527ac460971eed34/aiobungie-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-11 08:52:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nxtlo",
"github_project": "aiobungie",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "aiobungie"
}