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.18.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

cardboard.py-0.0.18-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

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

Hashes for cardboard.py-0.0.18.tar.gz
Algorithm Hash digest
SHA256 71f8a54bd3ba8fbcc875e8fe0ef45616c3fb8d72993407244fb0c38e4e7d6e39
MD5 a7230fc842b05cf7d5774c221990fe3b
BLAKE2b-256 3db311773ca191e15648a4143ac844fb5c7496fbf9b686053aa24f2a89172424

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cardboard.py-0.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 8f2572896a32f8e0cc4f5069c1907fa26cdb232654adc58474ce9af900cb0067
MD5 6a3b2c23eef6d8a12166c870664974b2
BLAKE2b-256 c386afbbb8a26a60be2121f6299e2e59b89fe63625938835c0110fda209d60d2

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