Metadata-Version: 2.4
Name: battlenet-client
Version: 5.0.2a3
Summary: Base package for Blizzard's Battle.net APIs
Author-email: David 'Gahd' Couples <gahdania@gahd.io>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://gitlab.com/battlenet-client/api/battlene-clientt
Project-URL: Bug Tracker, https://gitlab.com/battlenet-client/api/battlenet-client/issues
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Requires-Dist: oauthlib~=3.3.1
Requires-Dist: requests-oauthlib
Requires-Dist: requests
Requires-Dist: python-jose
Provides-Extra: dev
Requires-Dist: python-decouple==3.8; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pymongo==4.15.3; extra == "dev"
Requires-Dist: psycopg==3.2.10; extra == "dev"
Requires-Dist: psycopg-binary==3.2.10; extra == "dev"
Requires-Dist: mysql-connector-python==9.4.0; extra == "dev"
Requires-Dist: redis==6.4.0; extra == "dev"
Provides-Extra: client
Requires-Dist: python-decouple==3.8; extra == "client"
Provides-Extra: mongo
Requires-Dist: pymongo==4.15.3; extra == "mongo"
Provides-Extra: postgresql
Requires-Dist: psycopg>=3.2.0; extra == "postgresql"
Requires-Dist: psycopg-binary>=3.2.0; extra == "postgresql"
Requires-Dist: psycopg-pool>=3.2.0; extra == "postgresql"
Provides-Extra: mysql
Requires-Dist: mysql-connector-python>=9.0.0; extra == "mysql"
Dynamic: license-file

# Battlenet Client

![Pipeline Status](https://gitlab.com/battlenet-client/api/battlenet-client/badges/main/pipeline.svg)
![Release](https://gitlab.com/battlenet-client/api/battlenet-client/-/badges/release.svg?order_by=release_at)
![coverage](https://gitlab.com/battlenet-client/api/battlenet-client/badges/<branch>/coverage.svg?job=coverage)

## Introduction
While this package can be used as a standalone, it works better when coupled with one of the API packages:

- [Diablo III Battlenet API](https://gitlab.com/battlenet-client/api/battlenet-d3)
- [Hearthstone Battlenet API](https://gitlab.com/battlenet-client/api/battlenet-hs)
- [Overwatch League Battlenet API](https://gitlab.com/battlenet-client/api/battlenet-owl)
- [Starcraft II Battlenet API](https://gitlab.com/battlenet-client/api/battlenet-sc2)
- [World of Warcraft Battlenet API](https://gitlab.com/battlenet-client/api/battlenet-wow)

## Installation

### Base Install
`pip install battlenet-client`

### Optional Installs

- Developement Install: `pip install battlenet-client[dev]`
- Full Client Install: `pip install battlenet-client[client]`
- MongoDB Backend:  `pip install battlenet-client[mongo]`
- PostgreSQL Backend: `pip install battlenet-client[postgresql]`
- MySQL or MariaDB Backend: `pip install battlenet-client[mysql]`

## Usage:

To use the client crediential workflow

    from battlenet_client.client import BattlenetClient
    client = BattlenetClient.client_credentials(<region abbreviation>, <client id>, <client secret>)

To use the authorization workflow and Open ID Connect, you will need a webserver that will handle the callback

    from battlenet_client.client import BattlenetClient
    client = BattlenetClient.authorization_code(<region abbreviation>, <client id>, <client secret>, <redirect uri>
                                                <scope>)
    redirect(client.get_authorization_url()

User logs into Battl.net with user name and password. After successful login, the user is redirected to "<redirect_uri>"
As part of the example code uses a Flask app to perform the role of the web server.

    @app.route(<redirect uri>)
    def callback():
        client.callback(request.args.get("code"), request.args.get("state"))
        ...

The webserver then processes and save the new token for the user

See the instructions for the speciif module for further details.
