Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cardboard.py-0.0.20.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

cardboard.py-0.0.20-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file cardboard.py-0.0.20.tar.gz.

File metadata

  • Download URL: cardboard.py-0.0.20.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cardboard.py-0.0.20.tar.gz
Algorithm Hash digest
SHA256 5b0ce331ef59450381c1db0c22970b7f033c5d9957cedea4ea2f7842d852cc53
MD5 e6fa0ec6597aa14ce613ca6b59cf819f
BLAKE2b-256 0c47c21ec555a1d25cce662aaf2e94948e582ddc9f1fa55c138b7a51b85d426d

See more details on using hashes here.

File details

Details for the file cardboard.py-0.0.20-py3-none-any.whl.

File metadata

File hashes

Hashes for cardboard.py-0.0.20-py3-none-any.whl
Algorithm Hash digest
SHA256 512b83f51a389e736ee727a35eb4d7e9e68f299439a9e83dd5175239245d00a5
MD5 03438478a64f240a96f3d1b113a9b748
BLAKE2b-256 dbd0d37c3d7176b3b08080c3cc0567286e471443ad6bc910fccef02834b29f3f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page