API wrapper for https://cardboard.ink/api/v1/
Project description
cardboard.py
cardboard.py is a Python library for interacting with the cardboard API.
PyPi: https://pypi.org/project/cardboard.py/
Installation
You can install the cardboard.py library using pip:
pip install cardboard.py
QuartIntegration
pip install cardboard.py[Quart]
FlaskIntegration
pip install cardboard.py[Flask]
Usage
Initialize the Cardboard or CardboardAsync class. Make sure to pass secret
and client_id
.
You can now use the client to make requests.
Examples
These examples will use Flask. Install it with pip install Flask
Flask is included with cardboard.py>=0.0.8
In cardboard.py>=0.0.16
, you can install it with pip install cardboard.py[Flask]
# Python Example
from flask import Flask, request, redirect, url_for, session, Response
from cardboard import Cardboard
app = Flask(__name__)
cb = Cardboard(client_id='', secret='') # get these at https://cardboard.ink
app.secret_key = 'hi' # set this to something secure, please.
@app.route('/login')
def login():
args = request.args
code = args.get('code')
if not code:
return redirect(cb.app_url)
try:
token = cb.get_token(code)
except:
return redirect(cb.app_url)
session['cardboard_token'] = token.token
return redirect(url_for('dashboard'))
@app.route('/dashboard')
def dashboard():
token = session.get('cardboard_token')
if not token:
return redirect(cb.app_url)
user = cb.get_user(token)
return Response(f'{user.name} (user id {user.id})', mimetype='text/plain')
@app.route('/')
def home():
html = f'<html><head><title>Button Redirect</title></head><body><button onclick="window.location.href=\'{url_for("login")}\';">Login</button></body></html>'
return Response(html, mimetype='text/html')
@app.route('/logout')
def logout():
b = session.pop('cardboard_token', None)
if b:
try:
cb.revoke_token(b)
except:
pass
return redirect(url_for('home'))
if __name__ == '__main__':
app.run('0.0.0.0', port=5000)
# Python Example using FlaskIntegration
from flask import Flask, request, redirect, url_for, session, Response
from cardboard import Cardboard, FlaskIntegration
app = Flask(__name__)
app.secret_key = 'hi' # set this to something secure, please.
cb = Cardboard(client_id='', secret='') # get these at https://cardboard.ink
cb.fi = FlaskIntegration(app=app, cardboard=cb) # make this class ONLY AFTER YOU SET A SECRET KEY for FLASK.
@app.route('/login')
@cb.fi.autologin
def login(token):
return redirect(url_for('dashboard'))
@app.route('/dashboard')
@cb.fi.logged_in
def dashboard(token):
user = cb.get_user(token.token)
return Response(f'{user.name} (user id {user.id})', mimetype='text/plain')
@app.route('/')
def home():
html = f'<html><head><title>Button Redirect</title></head><body><button onclick="window.location.href=\'{url_for("login")}\';">Login</button></body></html>'
return Response(html, mimetype='text/html')
@app.route('/logout')
@cb.fi.autologout
def logout():
return redirect(url_for('home'))
if __name__ == '__main__':
app.run('0.0.0.0', port=5000)
Async Example
# Python Async Example
Documentation
For detailed documentation on the Cardboard API, read https://www.guilded.gg/CardBoard/groups/3y446Rmz/channels/4539a4f9-fb51-4a23-b014-0fcaeaf062d3/docs/374610
For detailed documentation on how to use the cardboard.py library, please wait while we write it lol.
Methods
A list of methods/attributes you can call with either Cardboard or CardboardAsync.
.app_url
(str).app_name
(str).secret
(str).client_id
(str).revoke_token(token:str)
(bool).get_token(code:str)
(class AuthToken).token
(str).token_type
(str).refresh_token
(str).expires_in
(int)._raw
(dict)
.refresh_token(refresh_token:str)
(class AuthToken).token
(str).token_type
(str).refresh_token
(str).expires_in
(int)._raw
(dict)
.get_user(token:str)
(class User).name
(str).id
(str).subdomain
(str).aliases
(list(class UserAlias)).alias
(str|None).discriminator
(str|None).name
(str).createdAt
(datetime).editedAt
(datetime)._raw_createdAt
(str)._raw_editedAt
(str).userId
(str).gameId
(int).socialLinkSource
(str|None).socialLinkHandle
(str|None).additionalInfo
(dict).playerInfo
(dict|None)._raw
(dict)
.avatar
(str).banner
(str).status
(class UserStatus).text
(str|None).reaction_id
(int|None)._raw
(dict)._raw_text
(dict)._raw_reaction
(dict)
.moderationStatus
(str|None).aboutInfo
(class userAbout).bio
(str|None).tagline
(str|None)._raw
(dict)
.userTransientStatus
(str|None)._raw
(dict)
.check_token(token:str)
(bool)
FlaskIntegration
@logged_in
@optional_logged_in
@autologin
@autologout
@login_autoexchange
DEPRECATED@login_code
DEPRECATED
QuartIntegration
@logged_in
@optional_logged_in
@autologin
@autologout
@login_autoexchange
DEPRECATED@login_code
DEPRECATED
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cardboard.py-0.0.18.tar.gz
.
File metadata
- Download URL: cardboard.py-0.0.18.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71f8a54bd3ba8fbcc875e8fe0ef45616c3fb8d72993407244fb0c38e4e7d6e39 |
|
MD5 | a7230fc842b05cf7d5774c221990fe3b |
|
BLAKE2b-256 | 3db311773ca191e15648a4143ac844fb5c7496fbf9b686053aa24f2a89172424 |
File details
Details for the file cardboard.py-0.0.18-py3-none-any.whl
.
File metadata
- Download URL: cardboard.py-0.0.18-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f2572896a32f8e0cc4f5069c1907fa26cdb232654adc58474ce9af900cb0067 |
|
MD5 | 6a3b2c23eef6d8a12166c870664974b2 |
|
BLAKE2b-256 | c386afbbb8a26a60be2121f6299e2e59b89fe63625938835c0110fda209d60d2 |