Python client for Scute API
Project description
Scute Python Client
A Python client for the Scute API, with built-in support for authentication, users, devices, and tokens.
Includes ready-to-use integration with Django REST Framework.
Quickstart
🚀 Installation
pip install scute-client
⚙️ Configuration
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_client = ScuteClient(
app_id=settings.SCUTE_APP_ID,
app_secret=settings.SCUTE_APP_SECRET,
)
🔑 Django REST Framework Integration
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
from .scute_client import scute_client
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_client.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",
],
}
📖 Usage Examples
Create a user
identifier = "user@example.com" # or phone number
scute_user = scute_client.users.create_user(identifier)
print(scute_user)
Delete a user
scute_client.users.delete_user(user.sid, request.token)
Get a user by ID
user = scute_client.users.get_user_by_id("scute_user_id")
print(user)
List all users
for scute_user in scute_client.users.list_all_users():
print(scute_user["id"], scute_user["email"])
🛠 Error Handling
All API errors raise APIRequestError:
from scute.exceptions import APIRequestError
try:
user = scute_client.users.get_user_by_id("invalid_id")
except APIRequestError as e:
print(f"Error: {e.status_code} - {e.message}")
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scute_client-0.1.1.tar.gz.
File metadata
- Download URL: scute_client-0.1.1.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30966378c425d46b451a4f78e4e7316109f3f496641a66f97157b8ccc81dc273
|
|
| MD5 |
7a45e2bc5f3f85b02d0724e1607168b7
|
|
| BLAKE2b-256 |
4966eccd14d447ed3b7cf0ce4a4d46e2c06dc60c0a693d0c4d01ff44df0ad333
|
File details
Details for the file scute_client-0.1.1-py3-none-any.whl.
File metadata
- Download URL: scute_client-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8978d512ce76ae430000f9989055816c1395207bcf2fa64012647eaa6654ad5d
|
|
| MD5 |
c0f67561d8c99551a92903a3d0e093b8
|
|
| BLAKE2b-256 |
eea87442417643fa55c63b92ca1110e77fa834b5b5ca35afa54c8f06677df604
|