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

LeTraceurSnorkLibrary / MessSaga / 25921197134

15 May 2026 01:44PM UTC coverage: 41.107% (+4.5%) from 36.562%
25921197134

Pull #20

github

web-flow
Merge a78ef7498 into aac55fbb3
Pull Request #20: feat: tariffs

290 of 509 new or added lines in 31 files covered. (56.97%)

3 existing lines in 3 files now uncovered.

869 of 2114 relevant lines covered (41.11%)

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

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

41
            return $registry;
×
42
        });
×
43

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

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

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

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

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

70
            return new LaravelMediaStorage(Storage::disk($mediaDisk));
×
71
        });
×
72
    }
73

74
    /**
75
     * Bootstrap any application services.
76
     */
77
    public function boot(): void
78
    {
79
        MediaAttachment::observe(MediaAttachmentObserver::class);
×
NEW
80
        User::observe(UserObserver::class);
×
81

82
        Vite::prefetch(concurrency: 3);
×
83

84
        Validator::extend('phone', function ($attribute, $value, $parameters, $validator) {
×
85
            try {
86
                return new PhoneNumber(
×
87
                    (string)$value,
×
88
                    $parameters
×
89
                        ?: ['RU']
×
90
                )->isValid();
×
91
            } catch (Exception $e) {
×
92
                return false;
×
93
            }
94
        });
×
95
    }
96
}
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