• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LeTraceurSnorkLibrary / MessSaga / 23892487014

02 Apr 2026 08:54AM UTC coverage: 29.947% (-1.7%) from 31.674%
23892487014

Pull #15

github

web-flow
Merge c1433e08b into a7d6f3637
Pull Request #15: feat: add s3 as storage

30 of 155 new or added lines in 14 files covered. (19.35%)

4 existing lines in 4 files now uncovered.

448 of 1496 relevant lines covered (29.95%)

0.7 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/app/Providers/AppServiceProvider.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace App\Providers;
6

7
use App\Models\MediaAttachment;
8
use App\Observers\MediaAttachmentObserver;
9
use App\Services\Import\Archives\RarImportArchiveExtractor;
10
use App\Services\Import\Archives\ZipImportArchiveExtractor;
11
use App\Services\Import\Export\Factories\ExportArchiveLocatorFactory;
12
use App\Services\Import\Export\Locators\Archive\TelegramExportArchiveLocator;
13
use App\Services\Import\Export\Locators\Archive\WhatsAppExportArchiveLocator;
14
use App\Services\Import\Factories\ImportArchiveExtractorFactory;
15
use App\Services\Media\Storage\LaravelMediaStorage;
16
use App\Services\Media\Storage\MediaStorageInterface;
17
use App\Services\Parsers\ParserRegistry;
18
use App\Services\Parsers\TelegramParser;
19
use App\Services\Parsers\WhatsAppParser;
20
use Exception;
21
use Illuminate\Support\Facades\Storage;
22
use Illuminate\Support\Facades\Validator;
23
use Illuminate\Support\Facades\Vite;
24
use Illuminate\Support\ServiceProvider;
25
use Propaganistas\LaravelPhone\PhoneNumber;
26

27
class AppServiceProvider extends ServiceProvider
28
{
29
    /**
30
     * Register any application services.
31
     */
32
    public function register(): void
33
    {
34
        $this->app->singleton(ParserRegistry::class, function ($app) {
×
35
            $registry = new ParserRegistry();
×
36
            $registry->register('telegram', $app->make(TelegramParser::class));
×
37
            $registry->register('whatsapp', $app->make(WhatsAppParser::class));
×
38

39
            return $registry;
×
40
        });
×
41

42
        $this->app->singleton(ExportArchiveLocatorFactory::class, function ($app) {
×
43
            return new ExportArchiveLocatorFactory()
×
44
                ->register('telegram', $app->make(TelegramExportArchiveLocator::class))
×
45
                ->register('whatsapp', $app->make(WhatsAppExportArchiveLocator::class));
×
46
        });
×
47

NEW
48
        $this->app->singleton(ZipImportArchiveExtractor::class, function ($app) {
×
NEW
49
            $importsTmpDisk = Storage::disk((string)config('filesystems.imports_tmp_disk', 'imports_tmp'));
×
NEW
50
            $sourceDisk     = Storage::disk((string)config('filesystems.default', 'local'));
×
51

NEW
52
            return new ZipImportArchiveExtractor(
×
NEW
53
                locatorFactory: $app->make(ExportArchiveLocatorFactory::class),
×
NEW
54
                importsTmpDisk: $importsTmpDisk,
×
NEW
55
                sourceDisk: $sourceDisk
×
NEW
56
            );
×
NEW
57
        });
×
58

59
        $this->app->singleton(ImportArchiveExtractorFactory::class, function ($app) {
×
60
            return new ImportArchiveExtractorFactory()
×
61
                ->register($app->make(ZipImportArchiveExtractor::class))
×
62
                ->register($app->make(RarImportArchiveExtractor::class));
×
63
        });
×
64

NEW
65
        $this->app->singleton(MediaStorageInterface::class, function () {
×
NEW
66
            $mediaDisk = (string)config('filesystems.media_disk', config('filesystems.default'));
×
67

NEW
68
            return new LaravelMediaStorage(Storage::disk($mediaDisk));
×
NEW
69
        });
×
70
    }
71

72
    /**
73
     * Bootstrap any application services.
74
     */
75
    public function boot(): void
76
    {
NEW
77
        MediaAttachment::observe(MediaAttachmentObserver::class);
×
78

UNCOV
79
        Vite::prefetch(concurrency: 3);
×
80

81
        Validator::extend('phone', function ($attribute, $value, $parameters, $validator) {
×
82
            try {
83
                return new PhoneNumber(
×
84
                    (string)$value,
×
85
                    $parameters
×
86
                        ?: ['RU']
×
87
                )->isValid();
×
88
            } catch (Exception $e) {
×
89
                return false;
×
90
            }
91
        });
×
92
    }
93
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc