Skip to main content

SDK Campos Cloud

Project description

🚀 Campos Cloud Python SDK

SDK oficial em Python para interagir com a API do Campos Cloud - uma plataforma de hospedagem de aplicações em nuvem.

📦 Instalação

pip install camposcloud-sdk

🔑 Configuração

Para usar o SDK, você precisa de um token de autenticação da Campos Cloud:

from campos_sdk import CamposClient

# Inicializar o cliente
client = CamposClient(token="seu_token_aqui")

👤 Gerenciamento de Usuários

Obter informações do usuário

# Buscar dados do usuário atual
user = client.users.get_me()

print(f"Nome: {user.name}")
print(f"ID: {user._id}")
print(f"2FA Ativo: {user.isEmail2FAEnabled}")
print(f"Plano Gratuito: {user.hasClaimedFreePlan}")

🚀 Gerenciamento de Aplicações

Listar aplicações

# Buscar todas as aplicações
apps = client.applications.getApplications()

for app in apps:
    print(f"App: {app.name} - Status: {app.status}")

Obter aplicação específica

# Buscar uma aplicação específica (retorna wrapper com métodos)
app = client.applications.getApplication("app_id")

print(f"Nome: {app.name}")
print(f"Status: {app.status}")

# Ou buscar apenas os dados (sem wrapper)
app_data = client.applications.getApplicationData("app_id")

Controlar aplicações

# Iniciar aplicação
app = client.applications.startApplication("app_id")

# Parar aplicação
app = client.applications.stopApplication("app_id")

# Reiniciar aplicação
app = client.applications.restartApplication("app_id")

# Ou usar o wrapper
app = client.applications.getApplication("app_id")
app.start()
app.stop()
app.restart()

Criar nova aplicação

# Ler arquivo ZIP da aplicação
with open("minha_app.zip", "rb") as f:
    app_file = f.read()

# Criar aplicação
new_app = client.applications.createApplication(
    appName="Minha Nova App",
    file=app_file,
    mainFile="app.py",
    memoryMB=512,
    runtimeEnvironment="python",
    exposedViaWeb=True,
    autoRestartEnabled=True,
    startupCommand="python app.py",
    teamId="team_id_opcional"
)

print(f"App criada: {new_app.name}")

Atualizar aplicação

updated_app = client.applications.updateApplication(
    app_id="app_id",
    appName="Nome Atualizado",
    memoryMB=1024,
    runtimeEnvironment="python",
    startupCommand="python main.py",
    mainFile="main.py",
    autoRestartEnabled=True,
    exposedViaWeb=False,
    environmentVariables=[
        {"name": "ENV_VAR", "value": "valor"}
    ]
)

Deletar aplicação

# Deletar aplicação
client.applications.deleteApplication("app_id")

# Ou usar o wrapper
app = client.applications.getApplication("app_id")
app.delete()

📁 Gerenciamento de Arquivos

Listar arquivos da aplicação

# Listar arquivos
files = client.applications.getApplicationFiles("app_id")

for file in files:
    print(f"Arquivo: {file.name}")
    print(f"Caminho: {file.path}")
    print(f"É arquivo: {file.isFile}")
    print(f"É diretório: {file.isDirectory}")
    print(f"Tamanho: {file.size} bytes")

# Ou usar o wrapper
app = client.applications.getApplication("app_id")
files = app.getFiles()

Upload de arquivo

# Fazer upload de um arquivo
response = client.applications.uploadApplicationFile("app_id", "/caminho/para/arquivo.py")
print(response.message)

Deletar arquivos

# Deletar múltiplos arquivos
response = client.applications.deleteApplicationFile("app_id", ["arquivo1.py", "arquivo2.py"])

print(f"Sucessos: {response.success}")
print(f"Falhas: {response.failed}")

# Ou usar o wrapper
app = client.applications.getApplication("app_id")
response = app.deleteFiles(["arquivo1.py", "arquivo2.py"])

Download de arquivo

# Fazer download de arquivo
client.applications.downloadApplicationFile(
    app_id="app_id",
    file_id="file_id",
    file_path="/caminho/local/arquivo.py"
)

🎯 Wrapper de Aplicação

O SDK oferece um wrapper conveniente que combina dados e métodos:

# Obter wrapper da aplicação
app = client.applications.getApplication("app_id")

# Acessar dados
print(app.name)
print(app.status)
print(app.id)

# Executar ações
app.start()
app.stop()
app.restart()

# Gerenciar arquivos
files = app.getFiles()
app.deleteFiles(["arquivo.py"])

# Atualizar aplicação
app.update(
    appName="Novo Nome",
    memoryMB=1024
)

# Deletar aplicação
app.delete()

🚨 Tratamento de Erros

O SDK define exceções específicas para diferentes tipos de erro:

from campos_sdk.errors import (
    ApiError,
    AuthenticationError,
    NotFoundError,
    ValidationError,
    ServerError,
    NetworkError
)

try:
    user = client.users.get_me()
except AuthenticationError:
    print("Token inválido ou expirado")
except NotFoundError:
    print("Recurso não encontrado")
except ValidationError:
    print("Dados inválidos")
except NetworkError:
    print("Erro de conexão")
except ServerError:
    print("Erro interno do servidor")
except ApiError as e:
    print(f"Erro da API: {e.message} (Status: {e.status_code})")

📊 Modelos de Dados

User

user.name                  # Nome do usuário
user._id                   # ID único
user.isEmail2FAEnabled     # 2FA ativo
user.hasClaimedFreePlan    # Plano gratuito reclamado
user.activeSessions        # Lista de sessões ativas

Session

session.id           # ID da sessão
session.device       # Dispositivo
session.ip           # Endereço IP
session.browser      # Navegador
session.lastActive   # Última atividade (datetime)

Application

app.id        # ID da aplicação
app.name      # Nome
app.status    # Status atual

AppFile

file.name         # Nome do arquivo
file.path         # Caminho completo
file.isFile       # É arquivo
file.isDirectory  # É diretório
file.size         # Tamanho em bytes
file.createdAt    # Data de criação
file.modifiedAt   # Data de modificação

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

🤝 Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📞 Suporte

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

camposcloud_sdk-0.1.2.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

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

camposcloud_sdk-0.1.2-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file camposcloud_sdk-0.1.2.tar.gz.

File metadata

  • Download URL: camposcloud_sdk-0.1.2.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for camposcloud_sdk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 07027fa9ecf2365c38df13e642475473275c37a44f39630ce835d03faf70c97d
MD5 dacc4e2165979bd3aeaf37995ab84cc5
BLAKE2b-256 74f49b9268b57b1cc58b1106c1d3a04fc7ba054ea6afcc50a3a77e899f3bbf2c

See more details on using hashes here.

File details

Details for the file camposcloud_sdk-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for camposcloud_sdk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b305bba070e6e316402cc5ce3b403e0f732bd583c578056f3b27e9dc71978117
MD5 a3ea3a4104846300ca59623677f1e2d1
BLAKE2b-256 1a9befd9c16a59fe2f0d55e7053a67eb5c6cae4faa9c7f52a34482cad33f2406

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