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.16.tar.gz (11.8 kB view hashes)

Uploaded Source

Built Distribution

cardboard.py-0.0.16-py3-none-any.whl (15.3 kB view hashes)

Uploaded Python 3

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