Skip to main content

Python SDK for Report Service.

Project description

Exnodes Report Service SDK

Version: 0.1.0

Khởi tạo client - install SDK

from exn_salon_report_sdk import ReportClient, ReportSDKException

api_key = "your_api_key"
secret_key = "your_secret_key"
client = ReportClient(api_key, secret_key)

# Gọi API để lấy báo cáo
try:
    report_id = "12345"
    report = client.get_report(report_id)
    print("Report:", report)

    # Tạo mới một báo cáo
    new_report_data = {
        "name": "Sales Report",
        "filters": {"date_range": "2025-01-01 to 2025-01-20"},
    }
    new_report = client.create_report(new_report_data)
    print("New Report Created:", new_report)
    
except ReportSDKException as e:
    print("SDK Error:", str(e))

Xử lý phía Service Report

1. Lấy API key từ header.

api_key = request.headers.get("API-Key")
if not api_key:
    return {"error": "API key is required"}, 401

secret_key = get_secret_key_from_db(api_key)
if not secret_key:
    return {"error": "Invalid API key"}, 401

2. Xác minh chữ ký

import hmac
import hashlib
import base64

def verify_signature(secret_key, signature_payload, signature):
    expected_signature = hmac.new(
        secret_key.encode(), 
        signature_payload.encode(), 
        hashlib.sha256
    ).digest()
    expected_signature = base64.b64encode(expected_signature).decode()
    return hmac.compare_digest(expected_signature, signature)

# Xử lý chữ ký
signature_payload = f"{api_key}{timestamp}{request_payload}"
if not verify_signature(secret_key, signature_payload, received_signature):
    return {"error": "Invalid signature"}, 401

3. Kiểm tra timestamp (chống replay attack):

from datetime import datetime, timedelta

def is_timestamp_valid(request_timestamp, max_skew_minutes=5):
    try:
        timestamp = datetime.fromisoformat(request_timestamp)
        now = datetime.utcnow()
        return abs((now - timestamp).total_seconds()) <= max_skew_minutes * 60
    except ValueError:
        return False

if not is_timestamp_valid(timestamp):
    return {"error": "Invalid or expired timestamp"}, 401

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

exn_report_sdk-0.1.3.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

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

exn_report_sdk-0.1.3-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file exn_report_sdk-0.1.3.tar.gz.

File metadata

  • Download URL: exn_report_sdk-0.1.3.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for exn_report_sdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c1c7c2c541af17bb865ec8fbe2c6f1d5e2ca22ea6a6779c7714c54eb3f50574d
MD5 7f55a84c842d9821545ad2faff09644f
BLAKE2b-256 07e29c985dbb31948be0b8d53586d049a9dcefbd2e55b769a04bff8bcb46a323

See more details on using hashes here.

File details

Details for the file exn_report_sdk-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: exn_report_sdk-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for exn_report_sdk-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 08b4418e9ceed5b8f10c9771ed85ddf7b89ef2b55a48c5b4f63d8d7cc02418bf
MD5 bbfce5b2fca698fb16f283b6739e7a6b
BLAKE2b-256 863e3b6df3de9c668578cab671dd2c3b2d98649dbfcc6bf0ab2784f43bc45ef9

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