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
19
Forks
0
Downloads
2,357
Open Issues
0
Files main

Repository Files

Loading file structure...
src/Providers/HetznerStorageBoxServiceProvider.php
<?php

namespace GhostCompiler\Hetzner\StorageBox\Providers;

use GhostCompiler\Hetzner\StorageBox\Console\InstallCommand;
use GhostCompiler\Hetzner\StorageBox\Http\Client\HetznerClient;
use GhostCompiler\Hetzner\StorageBox\Managers\HetznerStorageBoxManager;
use Illuminate\Support\ServiceProvider;

class HetznerStorageBoxServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->mergeConfigFrom(
            __DIR__.'/../../config/hetzner-storagebox.php',
            'hetzner-storagebox'
        );

        // Bind HetznerClient
        $this->app->singleton(HetznerClient::class, function ($app) {
            $config = $app['config']->get('hetzner-storagebox', []);

            return new HetznerClient($config['token'] ?? '', $config);
        });

        // Bind HetznerStorageBoxManager
        $this->app->singleton(HetznerStorageBoxManager::class, function ($app) {
            return new HetznerStorageBoxManager($app->make(HetznerClient::class));
        });

        // Register aliases
        $this->app->alias(HetznerStorageBoxManager::class, 'hetzner-storagebox');
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        if ($this->app->runningInConsole()) {
            $this->commands([
                InstallCommand::class,
            ]);

            $this->publishes([
                __DIR__.'/../../config/hetzner-storagebox.php' => config_path('hetzner-storagebox.php'),
            ], 'config');
        }
    }
}