laravel-hetzner-storagebox

PHP MIT

Production-ready Laravel package for integrating Hetzner Storage Box into Laravel applications using the native Storage facade and filesystem API.

Stars
17
Forks
0
Downloads
1,791
Open Issues
0

Laravel Hetzner Storage Box SDK - Functions Reference

This file documents every manager, method, helper, and facade call exposed by the package.


Authentication & Initialization

1. Facade

use GhostCompiler\Hetzner\StorageBox\Facades\HetznerStorageBox;

HetznerStorageBox::authenticate($token);

2. Global Helper

// Resolves to the default singleton container instance
HetznerStorageBox();

// Resolves a new dynamically authenticated manager instance (useful for multi-tenant setups)
HetznerStorageBox($token);

Storage Boxes

// Get all Storage Boxes
HetznerStorageBox::storageBoxes()->all();

// Alias for all()
HetznerStorageBox::storageBoxes()->get();

// Paginate Storage Boxes
HetznerStorageBox::storageBoxes()->paginate($perPage = 25, $page = 1);

// Find Storage Box by ID
HetznerStorageBox::storageBoxes()->find($id);

// Create a Storage Box
HetznerStorageBox::storageBoxes()->create([
    'name' => 'backups-prod',
    'storage_box_type' => 'bx11',
    'location' => 'fsn1',
    'password' => 'secure_password_here'
]);

// Update a Storage Box (name, labels)
HetznerStorageBox::storageBoxes()->update($id, [
    'name' => 'backups-updated',
    'labels' => ['env' => 'prod']
]);

// Delete a Storage Box
HetznerStorageBox::storageBoxes()->delete($id);

// List folders in a Storage Box
HetznerStorageBox::storageBoxes()->folders($id, $path = null);

// Get action history for a specific Storage Box
HetznerStorageBox::storageBoxes()->actions($id);

// Change delete protection
HetznerStorageBox::storageBoxes()->changeProtection($id, $delete = true);

// Change Storage Box type (resize)
HetznerStorageBox::storageBoxes()->changeType($id, $storageBoxType);

// Reset password
HetznerStorageBox::storageBoxes()->resetPassword($id, $password);

// Update access settings (Samba, SSH, WebDAV, etc.)
HetznerStorageBox::storageBoxes()->updateAccessSettings($id, [
    'samba_enabled' => true,
    'ssh_enabled' => true,
    'webdav_enabled' => false,
    'zfs_enabled' => false,
    'reachable_externally' => true
]);

// Rollback Storage Box to a snapshot
HetznerStorageBox::storageBoxes()->rollbackSnapshot($id, $snapshotNameOrId);

// Enable snapshot plan
HetznerStorageBox::storageBoxes()->enableSnapshotPlan($id, [
    'max_snapshots' => 5,
    'minute' => 0,
    'hour' => 2,
    'day_of_week' => 1, // Monday
]);

// Disable snapshot plan
HetznerStorageBox::storageBoxes()->disableSnapshotPlan($id);

Storage Box Types

// Get all Storage Box Types
HetznerStorageBox::storageBoxTypes()->all();

// Alias for all()
HetznerStorageBox::storageBoxTypes()->get();

// Paginate Storage Box Types
HetznerStorageBox::storageBoxTypes()->paginate($perPage = 25, $page = 1);

// Find Storage Box Type by ID
HetznerStorageBox::storageBoxTypes()->find($id);

Actions (Global History)

// Get all actions
HetznerStorageBox::actions()->all();

// Alias for all()
HetznerStorageBox::actions()->get();

// Paginate actions
HetznerStorageBox::actions()->paginate($perPage = 25, $page = 1);

// Find action by ID
HetznerStorageBox::actions()->find($id);

Locations

// Get all locations
HetznerStorageBox::locations()->all();

// Alias for all()
HetznerStorageBox::locations()->get();

// Find location by ID
HetznerStorageBox::locations()->find($id);

Common Query Builder Methods

HetznerStorageBox::storageBoxes()
    ->filter([
        'name' => 'box-01'
    ])
    ->perPage(50)
    ->page(1)
    ->get();

Async Requests

// Return a Guzzle Promise immediately
$promise = HetznerStorageBox::storageBoxes()->async()->all();

// Resolve promise when ready
$boxes = $promise->wait();

Batch Operations

// Execute multiple queries concurrently
$results = HetznerStorageBox::batch([
    fn () => HetznerStorageBox::storageBoxes()->find(1),
    fn () => HetznerStorageBox::storageBoxes()->find(2),
    fn () => HetznerStorageBox::storageBoxTypes()->find(4),
]);

Helper Methods

HetznerStorageBox::ping();

HetznerStorageBox::version();

HetznerStorageBox::rateLimit();

HetznerStorageBox::health();

HetznerStorageBox::config();

HetznerStorageBox::client();