Skip to main content

Python client for Scute API

Project description

Scute Python Client

A Python client for the Scute API, with built-in support for authentication, users, and tokens.
Includes ready-to-use integration guide for Django REST Framework.


Quickstart

🚀 Installation

pip install scute-client

Initialize the client:

from scute_client import ScuteClient

scute = ScuteClient(
    app_id=SCUTE_APP_ID,
    app_secret=SCUTE_APP_SECRET,
)

📖 Usage Examples

Create a user

identifier = "user@example.com"  # or phone number
scute_user = scute.users.create_user(identifier)
print(scute_user)

Get a user by ID

user = scute.users.get_user_by_id("scute_user_id")
print(user)

List all users

for scute_user in scute.users.list_all_users():
    print(scute_user["id"], scute_user["email"])

Delete a user

scute.users.delete_user(user.sid)

🛠 Error Handling

All API errors raise APIRequestError:

from scute_client.exceptions import APIRequestError

try:
    user = scute.users.get_user_by_id("invalid_id")
except APIRequestError as e:
    print(f"Error: {e.status_code} - {e.message}")


🔑 Django REST Framework Integration

Add your Scute credentials to Django settings.py:

SCUTE_APP_ID = "your_app_id"
SCUTE_APP_SECRET = "your_app_secret"

Initialize the client:

from django.conf import settings
from scute_client import ScuteClient

scute = ScuteClient(
    app_id=settings.SCUTE_APP_ID,
    app_secret=settings.SCUTE_APP_SECRET,
)

First, ensure your User model has a sid (Scute ID) field. This field is required to link your local users with Scute users.

Example User model:

# users/models.py

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    # Store Scute ID returned from Scute API
    sid = models.CharField(max_length=255, unique=True, null=True, blank=True)

    def __str__(self):
        return self.username

Create a custom authentication class:

# authentication.py

from rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import AuthenticationFailed
from users.models import User


class ScuteAuthentication(BaseAuthentication):
    keyword = "Scute"

    def authenticate(self, request):
        auth_header = request.headers.get("Authorization")
        if not auth_header or not auth_header.startswith(self.keyword):
            return None

        token = auth_header.split(f"{self.keyword} ")[1]

        try:
            user_data = scute.auth.get_current_user(token)
        except Exception as e:
            raise AuthenticationFailed(f"Invalid token: {str(e)}")

        sid = user_data.get("id")
        if not sid:
            raise AuthenticationFailed("No user ID found in Scute response")

        user = User.objects.filter(sid=sid).first()
        if not user:
            raise AuthenticationFailed("User not found")

        if not user.is_active:
            raise AuthenticationFailed("Inactive user")

        return user, token

Enable it in settings.py:

REST_FRAMEWORK = {
    "DEFAULT_AUTHENTICATION_CLASSES": [
        "path.to.authentication.ScuteAuthentication",
    ],
}

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

scute_client-1.0.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scute_client-1.0.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file scute_client-1.0.0.tar.gz.

File metadata

  • Download URL: scute_client-1.0.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.11

File hashes

Hashes for scute_client-1.0.0.tar.gz
Algorithm Hash digest
SHA256 14c857f47652614bfc763a4b529d2f07db8c614999eb6acf984a1e85d18c30e7
MD5 5113bc795050d898666a2dd92c01dceb
BLAKE2b-256 955800d86b3c39f17c92655181cc8ce99e1054bfa41a41bdc9bfe06896c1dd46

See more details on using hashes here.

File details

Details for the file scute_client-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: scute_client-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.11

File hashes

Hashes for scute_client-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eefa19245e9337757dad2326c94d177fae16b1c101215340fee03db72df24f04
MD5 b0543aeff7981f29151131388c90ea6d
BLAKE2b-256 8dc747fa49b6087d8f01dbb6a2f44ba536c3bc3fcd40050b8225f2a132528a4c

See more details on using hashes here.

Supported by

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