🟪
SunLicense Docs
  • Welcome
  • Getting Started
    • Quickstart
    • VPS Setup
  • API Documentation
    • License API
    • Java API
  • Automations
    • BuiltByBit Automation
    • Discord Automation
  • PRODUCT INTEGRATIONS
    • Minecraft Plugins
    • Server Software
    • Minecraft Mods
    • Discord Bots
    • FiveM Projects
    • PHP Projects
    • Python Projects
    • JavaScript Projects
    • Lua Projects
  • SERVICES
    • Managed Hosting
  • LINKS
    • Discord
    • Store
    • Java API Wrapper
    • Sample Project
    • Pterodactyl Egg
    • Other Products
Powered by GitBook
On this page
  • Prerequisites
  • Integration Steps
  • Best Practices
  • Common Issues
  1. PRODUCT INTEGRATIONS

Python Projects

SunLicense Integration Guide for Python Projects

Prerequisites

  • Python 3.6 or higher

  • requests library (pip install requests)

  • SunLicense API credentials

Integration Steps

1. Create License Validator Class

import requests
from typing import Optional
import platform

class SunLicenseValidator:
    def __init__(self, license_key: str, product_id: int, version: str = "1.0.0"):
        self.license_key = license_key
        self.product_id = product_id
        self.version = version
        self.api_url = "YOUR_API_URL/api/v1/validate"

    def validate(self) -> bool:
        data = {
            "licenseKey": self.license_key,
            "productId": self.product_id,
            "productVersion": self.version,
            "hwid": self.get_hwid(),  # Optional
            "operatingSystem": platform.system(),
            "operatingSystemVersion": platform.version()
        }

        try:
            response = requests.post(
                self.api_url,
                json=data,
                headers={"Content-Type": "application/json"}
            )
            response.raise_for_status()
            return response.status_code == 200
        except requests.exceptions.RequestException as e:
            raise ValueError(f"License validation failed: {str(e)}")

    @staticmethod
    def get_hwid() -> str:
        # Implement your HWID generation logic here
        return "YOUR-HWID"

2. Basic Implementation

def main():
    try:
        validator = SunLicenseValidator(
            license_key="YOUR-LICENSE-KEY",
            product_id=YOUR_PRODUCT_ID,
            version="1.0.0"
        )

        if validator.validate():
            print("License is valid!")
            # Continue with your application
        else:
            print("License validation failed!")
            exit(1)
    except Exception as e:
        print(f"Error: {str(e)}")
        exit(1)

if __name__ == "__main__":
    main()

3. Advanced Implementation (Using Decorators)

from functools import wraps

def requires_license(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        validator = SunLicenseValidator(
            license_key="YOUR-LICENSE-KEY",
            product_id=YOUR_PRODUCT_ID
        )
        
        if validator.validate():
            return func(*args, **kwargs)
        else:
            raise ValueError("Invalid license")
    return wrapper

# Usage example
@requires_license
def protected_function():
    print("This function only runs with valid license")

Best Practices

  1. Configuration Management

    • Use environment variables

    • Implement configuration files

    • Secure credential storage

# config.py
import os
from dotenv import load_dotenv

load_dotenv()

LICENSE_KEY = os.getenv("LICENSE_KEY")
PRODUCT_ID = int(os.getenv("PRODUCT_ID"))
API_URL = os.getenv("LICENSE_API_URL")
  1. Error Handling

    • Implement proper exception handling

    • Log validation failures

    • Graceful degradation

  2. Performance

    • Cache validation results

    • Implement retry mechanisms

    • Handle offline scenarios

Common Issues

  1. Network Problems

    • Implement timeout handling

    • Add retry logic

    • Handle offline mode

  2. Validation Failures

    • Check license key format

    • Verify product ID

    • Monitor API responses

PreviousPHP ProjectsNextJavaScript Projects

Last updated 4 months ago