Zipping on the fly

This commit is contained in:
Peter Papp
2021-07-28 18:16:20 +02:00
parent 8810880616
commit 71a1eb8e7c
23 changed files with 866 additions and 718 deletions

View File

@@ -48,10 +48,10 @@ OSS_BUCKET=
OSS_ENDPOINT=
OSS_URL=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
S3_ACCESS_KEY_ID=
S3_SECRET_ACCESS_KEY=
S3_DEFAULT_REGION=
S3_BUCKET=
DO_SPACES_KEY=
DO_SPACES_SECRET=

View File

@@ -34,10 +34,10 @@ MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
S3_ACCESS_KEY_ID=
S3_SECRET_ACCESS_KEY=
S3_DEFAULT_REGION=us-east-1
S3_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=

View File

@@ -28,17 +28,17 @@
"laravel/ui": "^3.2.0",
"league/flysystem-aws-s3-v3": "^1.0.29",
"league/flysystem-cached-adapter": "^1.1.0",
"madnest/madzipper": "^1.1.0",
"spatie/laravel-backup": "^6.16.1",
"spatie/laravel-query-builder": "^3.5",
"spatie/laravel-queueable-action": "^2.12",
"spatie/laravel-tail": "^4.3.3",
"stechstudio/laravel-zipstream": "^4.4",
"teamtnt/laravel-scout-tntsearch-driver": "^11.5.0.0",
"vimeo/psalm": "^4.8.1"
},
"require-dev": {
"ext-json": "*",
"friendsofphp/php-cs-fixer": "^3.0",
"friendsofphp/php-cs-fixer": "^3.0.0",
"barryvdh/laravel-ide-helper": "^2.10",
"facade/ignition": "^2.11.0",
"fakerphp/faker": "^1.15.0",

891
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -162,7 +162,6 @@ return [
TeamTNT\Scout\TNTSearchScoutServiceProvider::class,
Intervention\Image\ImageServiceProvider::class,
Madnest\Madzipper\MadzipperServiceProvider::class,
App\Providers\FortifyServiceProvider::class,
/*
@@ -229,36 +228,27 @@ return [
'Image' => Intervention\Image\Facades\Image::class,
'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class,
'Crawler' => Jaybizzle\LaravelCrawlerDetect\Facades\LaravelCrawlerDetect::class,
//'Madzipper' => Madnest\Madzipper\Madzipper::class,
],
'deploy_secret' => env('APP_DEPLOY_SECRET'),
'deploy_branch' => env('APP_DEPLOY_BRANCH'),
'deploy_secret' => env('APP_DEPLOY_SECRET'),
'deploy_branch' => env('APP_DEPLOY_BRANCH'),
'debug_blacklist' => [
'_ENV' => [
'_ENV' => [
'APP_KEY',
'DB_USERNAME',
'DB_PASSWORD',
'REDIS_PASSWORD',
'MAIL_PASSWORD',
'PUSHER_APP_KEY',
'PUSHER_APP_SECRET',
'PASSPORT_CLIENT_ID',
'PASSPORT_CLIENT_SECRET',
'AWS_SECRET_ACCESS_KEY',
'AWS_ACCESS_KEY_ID',
'S3_SECRET_ACCESS_KEY',
'S3_ACCESS_KEY_ID',
'DO_SPACES_KEY',
'DO_SPACES_SECRET',
'WASABI_KEY',
'WASABI_SECRET',
'BACKBLAZE_KEY',
'BACKBLAZE_SECRET',
],
@@ -276,8 +266,8 @@ return [
'PASSPORT_CLIENT_ID',
'PASSPORT_CLIENT_SECRET',
'AWS_SECRET_ACCESS_KEY',
'AWS_ACCESS_KEY_ID',
'S3_SECRET_ACCESS_KEY',
'S3_ACCESS_KEY_ID',
'DO_SPACES_KEY',
'DO_SPACES_SECRET',
@@ -288,7 +278,7 @@ return [
'BACKBLAZE_KEY',
'BACKBLAZE_SECRET',
],
'_POST' => [
'_POST' => [
'password',
],
],

View File

@@ -76,9 +76,9 @@ return [
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'key' => env('S3_ACCESS_KEY_ID'),
'secret' => env('S3_SECRET_ACCESS_KEY'),
'region' => env('S3_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],

View File

@@ -45,58 +45,19 @@ return [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'oss' => [
'driver' => 's3',
'key' => env('OSS_ACCESS_KEY_ID'),
'secret' => env('OSS_SECRET_ACCESS_KEY'),
'region' => env('OSS_REGION'),
'bucket' => env('OSS_BUCKET'),
'endpoint' => env('OSS_ENDPOINT'),
'url' => env('OSS_URL'),
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'endpoint' => env('AWS_URL'),
],
'spaces' => [
'driver' => 's3',
'key' => env('DO_SPACES_KEY'),
'secret' => env('DO_SPACES_SECRET'),
'endpoint' => env('DO_SPACES_ENDPOINT'),
'region' => env('DO_SPACES_REGION'),
'bucket' => env('DO_SPACES_BUCKET'),
],
'wasabi' => [
'driver' => 's3',
'key' => env('WASABI_KEY'),
'secret' => env('WASABI_SECRET'),
'endpoint' => env('WASABI_ENDPOINT'),
'region' => env('WASABI_REGION'),
'bucket' => env('WASABI_BUCKET'),
],
'backblaze' => [
'driver' => 's3',
'key' => env('BACKBLAZE_KEY'),
'secret' => env('BACKBLAZE_SECRET'),
'endpoint' => env('BACKBLAZE_ENDPOINT'),
'region' => env('BACKBLAZE_REGION'),
'bucket' => env('BACKBLAZE_BUCKET'),
'key' => env('S3_ACCESS_KEY_ID'),
'secret' => env('S3_SECRET_ACCESS_KEY'),
'region' => env('S3_DEFAULT_REGION'),
'bucket' => env('S3_BUCKET'),
'endpoint' => env('S3_URL'),
],
],
];

View File

@@ -49,11 +49,11 @@ return [
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'key' => env('S3_ACCESS_KEY_ID'),
'secret' => env('S3_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'your-queue-name'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'region' => env('S3_DEFAULT_REGION', 'us-east-1'),
],
'redis' => [

View File

@@ -24,9 +24,9 @@ return [
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'key' => env('S3_ACCESS_KEY_ID'),
'secret' => env('S3_SECRET_ACCESS_KEY'),
'region' => env('S3_DEFAULT_REGION', 'us-east-1'),
],
'passport' => [

33
config/zipstream.php Normal file
View File

@@ -0,0 +1,33 @@
<?php
/*
* You can place your custom package configuration in here.
*/
return [
// Default options for our archives
'archive' => [
'predict' => env('ZIPSTREAM_PREDICT_SIZE', true),
],
// Default options for files added
'file' => [
'method' => env('ZIPSTREAM_FILE_METHOD', 'store'),
'deflate' => env('ZIPSTREAM_FILE_DEFLATE'),
],
// Configs for S3 files
'aws' => [
'credentials' => [
'key' => env('S3_ACCESS_KEY_ID'),
'secret' => env('S3_SECRET_ACCESS_KEY'),
],
'version' => 'latest',
'endpoint' => env('S3_URL'),
'use_path_style_endpoint' => env('ZIPSTREAM_S3_PATH_STYLE_ENDPOINT', false),
'region' => env('ZIPSTREAM_S3_REGION', env('S3_DEFAULT_REGION', 'us-east-1')),
],
// https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_anonymous.html
'aws_anonymous_client' => env('S3_ANONYMOUS', false),
];

View File

@@ -34,10 +34,10 @@ MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="${MAIL_USERNAME}"
MAIL_FROM_NAME="${MAIL_USERNAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
S3_ACCESS_KEY_ID=
S3_SECRET_ACCESS_KEY=
S3_DEFAULT_REGION=
S3_BUCKET=
DO_SPACES_KEY=
DO_SPACES_SECRET=

View File

@@ -4,8 +4,8 @@
"/chunks/admin.js": "/chunks/admin.js?id=f48be89654bdd5857619",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=e96160a07e0045280e2c",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=91adf6625e49f0b93731",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a7b1c983.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a7b1c983.js?id=66c2c205086f658115d7",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js?id=1afc2a786d4a7222405e",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~39825672.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~39825672.js?id=6c16b40191c43d6bd8ee",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js?id=f580c1668c202a4542d2",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=5b0057f770c45f0ffd92",
"/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js?id=d5c9e6104890d4a17143",
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=2f834ba9277e999fee7a",
@@ -75,6 +75,7 @@
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=7886247bb35deada28a2",
"/chunks/sign-in.js": "/chunks/sign-in.js?id=6e5c9d01fd2214d21de2",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=0838eae8d5c33f41789c",
"/chunks/status-check.js": "/chunks/status-check.js?id=635d75468141b45bf14c",
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=fc62992171c9d72c3f4c",
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=1f3df9ae55ca315928d4",
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=1abfefb47d2e34107b64",
@@ -90,211 +91,21 @@
"/chunks/user-storage.js": "/chunks/user-storage.js?id=2ec04730d677842c8d10",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=fc7ddaca95c26ec5c217",
"/chunks/users.js": "/chunks/users.js?id=720f418eef0585bdb419",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6c99cc74.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6c99cc74.js?id=0a6998f62a162c08a48f",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~cfac0ed6.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~cfac0ed6.js?id=f66c7653a087fe1f3320",
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=9d10953d3b088324dfe3",
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=7d09e0b0658e140a7ffa",
"/chunks/platform.2fb97113768ec6ac8cf4.hot-update.js": "/chunks/platform.2fb97113768ec6ac8cf4.hot-update.js",
"/chunks/platform.269c296529f1e0bebfbc.hot-update.js": "/chunks/platform.269c296529f1e0bebfbc.hot-update.js",
"/js/main.fbb839974ed1b2dceb01.hot-update.js": "/js/main.fbb839974ed1b2dceb01.hot-update.js",
"/js/main.a16169bc4e06eb7f5dc9.hot-update.js": "/js/main.a16169bc4e06eb7f5dc9.hot-update.js",
"/js/main.fb460478cb691bafeaf9.hot-update.js": "/js/main.fb460478cb691bafeaf9.hot-update.js",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~39825672.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~39825672.js?id=6c16b40191c43d6bd8ee",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js?id=f580c1668c202a4542d2",
"/chunks/status-check.js": "/chunks/status-check.js?id=635d75468141b45bf14c",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~25aaad73.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~25aaad73.js?id=0de519ac9b2c2754e0c2",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~81c8aec0.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~81c8aec0.js?id=ca3b57f70682c1c315f7",
"/js/main.c2ea1287545920d2d1d7.hot-update.js": "/js/main.c2ea1287545920d2d1d7.hot-update.js",
"/chunks/status-check.63fa29d966c15c677ded.hot-update.js": "/chunks/status-check.63fa29d966c15c677ded.hot-update.js",
"/chunks/status-check.56f7ef8040cf10183052.hot-update.js": "/chunks/status-check.56f7ef8040cf10183052.hot-update.js",
"/chunks/status-check.8eac1daf25a1315057b5.hot-update.js": "/chunks/status-check.8eac1daf25a1315057b5.hot-update.js",
"/chunks/status-check.e69a44900306402e2575.hot-update.js": "/chunks/status-check.e69a44900306402e2575.hot-update.js",
"/chunks/status-check.0335abb595171fb8febd.hot-update.js": "/chunks/status-check.0335abb595171fb8febd.hot-update.js",
"/chunks/status-check.925d2eb52c3b6f1092fc.hot-update.js": "/chunks/status-check.925d2eb52c3b6f1092fc.hot-update.js",
"/chunks/status-check.fa734d0ff0501d95d78a.hot-update.js": "/chunks/status-check.fa734d0ff0501d95d78a.hot-update.js",
"/chunks/status-check.b52a65d0854eba152db0.hot-update.js": "/chunks/status-check.b52a65d0854eba152db0.hot-update.js",
"/chunks/status-check.94a238343d32a3593730.hot-update.js": "/chunks/status-check.94a238343d32a3593730.hot-update.js",
"/chunks/status-check.d26d16eb0f805934099e.hot-update.js": "/chunks/status-check.d26d16eb0f805934099e.hot-update.js",
"/chunks/status-check.817d38d76d20d9b6b999.hot-update.js": "/chunks/status-check.817d38d76d20d9b6b999.hot-update.js",
"/chunks/status-check.b23cf9da9024262c156c.hot-update.js": "/chunks/status-check.b23cf9da9024262c156c.hot-update.js",
"/chunks/status-check.3caf4f948b9fb43bbe84.hot-update.js": "/chunks/status-check.3caf4f948b9fb43bbe84.hot-update.js",
"/chunks/status-check.fd48ccab164693fcdea5.hot-update.js": "/chunks/status-check.fd48ccab164693fcdea5.hot-update.js",
"/chunks/status-check.344bf3c13a2e36441be0.hot-update.js": "/chunks/status-check.344bf3c13a2e36441be0.hot-update.js",
"/chunks/status-check.ea968d6ece69aae07f08.hot-update.js": "/chunks/status-check.ea968d6ece69aae07f08.hot-update.js",
"/chunks/status-check.743a142fe4730f6d72af.hot-update.js": "/chunks/status-check.743a142fe4730f6d72af.hot-update.js",
"/chunks/status-check.5a6d6b03ac02d0701914.hot-update.js": "/chunks/status-check.5a6d6b03ac02d0701914.hot-update.js",
"/chunks/status-check.82222dc83f1b97faa180.hot-update.js": "/chunks/status-check.82222dc83f1b97faa180.hot-update.js",
"/chunks/status-check.12a7818cafb4f559e3ca.hot-update.js": "/chunks/status-check.12a7818cafb4f559e3ca.hot-update.js",
"/chunks/status-check.4f234d9cc5aa1f7383d6.hot-update.js": "/chunks/status-check.4f234d9cc5aa1f7383d6.hot-update.js",
"/chunks/status-check.a003a3da687f128f1e7e.hot-update.js": "/chunks/status-check.a003a3da687f128f1e7e.hot-update.js",
"/chunks/status-check.153b00e47876739069e3.hot-update.js": "/chunks/status-check.153b00e47876739069e3.hot-update.js",
"/chunks/status-check.2bae6095b187aef98c4a.hot-update.js": "/chunks/status-check.2bae6095b187aef98c4a.hot-update.js",
"/chunks/status-check.117479536341a6383292.hot-update.js": "/chunks/status-check.117479536341a6383292.hot-update.js",
"/chunks/status-check.2b4d86d0cae4f430abca.hot-update.js": "/chunks/status-check.2b4d86d0cae4f430abca.hot-update.js",
"/chunks/status-check.21ec11073ec3500f7ba1.hot-update.js": "/chunks/status-check.21ec11073ec3500f7ba1.hot-update.js",
"/chunks/status-check.2f86dfe4fe2abec46c5e.hot-update.js": "/chunks/status-check.2f86dfe4fe2abec46c5e.hot-update.js",
"/chunks/status-check.5773c30fb2fcb9d05689.hot-update.js": "/chunks/status-check.5773c30fb2fcb9d05689.hot-update.js",
"/chunks/status-check.03a83305772f7918d123.hot-update.js": "/chunks/status-check.03a83305772f7918d123.hot-update.js",
"/chunks/status-check.21bdb0e4207c0a40f7f6.hot-update.js": "/chunks/status-check.21bdb0e4207c0a40f7f6.hot-update.js",
"/chunks/status-check.656aa08d4bae5f1c3df3.hot-update.js": "/chunks/status-check.656aa08d4bae5f1c3df3.hot-update.js",
"/chunks/status-check.5211425a983b819363c7.hot-update.js": "/chunks/status-check.5211425a983b819363c7.hot-update.js",
"/chunks/status-check.859628c5c6992d3bb018.hot-update.js": "/chunks/status-check.859628c5c6992d3bb018.hot-update.js",
"/chunks/status-check.78422de75fed79be3951.hot-update.js": "/chunks/status-check.78422de75fed79be3951.hot-update.js",
"/chunks/status-check.908af3c7f8f9a7b1ae21.hot-update.js": "/chunks/status-check.908af3c7f8f9a7b1ae21.hot-update.js",
"/chunks/status-check.cbdef22c5c6001f2d227.hot-update.js": "/chunks/status-check.cbdef22c5c6001f2d227.hot-update.js",
"/chunks/status-check.62eafd6d519bd018414b.hot-update.js": "/chunks/status-check.62eafd6d519bd018414b.hot-update.js",
"/chunks/status-check.4083ee0f0450741e34b3.hot-update.js": "/chunks/status-check.4083ee0f0450741e34b3.hot-update.js",
"/chunks/status-check.c5fc51f63061817cc012.hot-update.js": "/chunks/status-check.c5fc51f63061817cc012.hot-update.js",
"/chunks/status-check.6367aec2f0f20b55910e.hot-update.js": "/chunks/status-check.6367aec2f0f20b55910e.hot-update.js",
"/chunks/status-check.0332955397de443c048f.hot-update.js": "/chunks/status-check.0332955397de443c048f.hot-update.js",
"/chunks/status-check.27d85b5ebb3b6e946930.hot-update.js": "/chunks/status-check.27d85b5ebb3b6e946930.hot-update.js",
"/chunks/status-check.4de407b5ef2da57f3d29.hot-update.js": "/chunks/status-check.4de407b5ef2da57f3d29.hot-update.js",
"/chunks/status-check.24f6388ea8eb94ebe753.hot-update.js": "/chunks/status-check.24f6388ea8eb94ebe753.hot-update.js",
"/chunks/status-check.6e32f854037eb3962c05.hot-update.js": "/chunks/status-check.6e32f854037eb3962c05.hot-update.js",
"/chunks/status-check.beab2f037dc3451bd183.hot-update.js": "/chunks/status-check.beab2f037dc3451bd183.hot-update.js",
"/chunks/status-check.8d938d248630f003d0f0.hot-update.js": "/chunks/status-check.8d938d248630f003d0f0.hot-update.js",
"/chunks/status-check.6e64aab3299cb4187df4.hot-update.js": "/chunks/status-check.6e64aab3299cb4187df4.hot-update.js",
"/chunks/status-check.f02f451b6a39b1505420.hot-update.js": "/chunks/status-check.f02f451b6a39b1505420.hot-update.js",
"/chunks/status-check.41a0d8d8ff82a12822d5.hot-update.js": "/chunks/status-check.41a0d8d8ff82a12822d5.hot-update.js",
"/chunks/status-check.9e5c61113daf0ef6e8a7.hot-update.js": "/chunks/status-check.9e5c61113daf0ef6e8a7.hot-update.js",
"/chunks/status-check.04b816923d6220da8bcd.hot-update.js": "/chunks/status-check.04b816923d6220da8bcd.hot-update.js",
"/chunks/status-check.3d05edacfae90f309828.hot-update.js": "/chunks/status-check.3d05edacfae90f309828.hot-update.js",
"/chunks/status-check.aaebee1463c6323bbc6a.hot-update.js": "/chunks/status-check.aaebee1463c6323bbc6a.hot-update.js",
"/chunks/status-check.70cbffa431377a3150be.hot-update.js": "/chunks/status-check.70cbffa431377a3150be.hot-update.js",
"/chunks/status-check.71df47da915040cf2118.hot-update.js": "/chunks/status-check.71df47da915040cf2118.hot-update.js",
"/chunks/status-check.818828709ad87794fbe9.hot-update.js": "/chunks/status-check.818828709ad87794fbe9.hot-update.js",
"/chunks/status-check.133fe71e1cb3f84ee1e4.hot-update.js": "/chunks/status-check.133fe71e1cb3f84ee1e4.hot-update.js",
"/chunks/status-check.5f3da43accc8be3d1a2b.hot-update.js": "/chunks/status-check.5f3da43accc8be3d1a2b.hot-update.js",
"/chunks/status-check.028c5b059149a81f7787.hot-update.js": "/chunks/status-check.028c5b059149a81f7787.hot-update.js",
"/chunks/status-check.17d9938802d2e0de939e.hot-update.js": "/chunks/status-check.17d9938802d2e0de939e.hot-update.js",
"/chunks/status-check.55864bdb9120e9c5dec2.hot-update.js": "/chunks/status-check.55864bdb9120e9c5dec2.hot-update.js",
"/chunks/status-check.89f667b0b909a3f26fdc.hot-update.js": "/chunks/status-check.89f667b0b909a3f26fdc.hot-update.js",
"/chunks/status-check.046ee03118743db52823.hot-update.js": "/chunks/status-check.046ee03118743db52823.hot-update.js",
"/chunks/status-check.369a05557ff60fd9dc18.hot-update.js": "/chunks/status-check.369a05557ff60fd9dc18.hot-update.js",
"/chunks/status-check.75d1417fa31fbbcfda5c.hot-update.js": "/chunks/status-check.75d1417fa31fbbcfda5c.hot-update.js",
"/chunks/status-check.2556456bff5ae93f32ed.hot-update.js": "/chunks/status-check.2556456bff5ae93f32ed.hot-update.js",
"/chunks/status-check.83ba79669c740c10b6ee.hot-update.js": "/chunks/status-check.83ba79669c740c10b6ee.hot-update.js",
"/chunks/status-check.09bab771f6e1f18dab46.hot-update.js": "/chunks/status-check.09bab771f6e1f18dab46.hot-update.js",
"/chunks/status-check.02c1726eaaded87b4c41.hot-update.js": "/chunks/status-check.02c1726eaaded87b4c41.hot-update.js",
"/chunks/status-check.a8adf92deeeda8925b60.hot-update.js": "/chunks/status-check.a8adf92deeeda8925b60.hot-update.js",
"/chunks/status-check.2deadcd44fb48105d730.hot-update.js": "/chunks/status-check.2deadcd44fb48105d730.hot-update.js",
"/chunks/status-check.839642e4f10111e58a22.hot-update.js": "/chunks/status-check.839642e4f10111e58a22.hot-update.js",
"/chunks/status-check.6ce31ad99aa96d5b5993.hot-update.js": "/chunks/status-check.6ce31ad99aa96d5b5993.hot-update.js",
"/chunks/status-check.701cf5a929649d21713e.hot-update.js": "/chunks/status-check.701cf5a929649d21713e.hot-update.js",
"/chunks/status-check.3e4358af3c0450adfd95.hot-update.js": "/chunks/status-check.3e4358af3c0450adfd95.hot-update.js",
"/chunks/status-check.01efdf5080444cc90af5.hot-update.js": "/chunks/status-check.01efdf5080444cc90af5.hot-update.js",
"/chunks/status-check.846f9c7f5da907550aaf.hot-update.js": "/chunks/status-check.846f9c7f5da907550aaf.hot-update.js",
"/chunks/status-check.024478ce34199ac7844b.hot-update.js": "/chunks/status-check.024478ce34199ac7844b.hot-update.js",
"/chunks/status-check.4f72acb05a725e6eca35.hot-update.js": "/chunks/status-check.4f72acb05a725e6eca35.hot-update.js",
"/chunks/status-check.3532526f22a4041a748b.hot-update.js": "/chunks/status-check.3532526f22a4041a748b.hot-update.js",
"/chunks/status-check.649a7aee2ae9580df2eb.hot-update.js": "/chunks/status-check.649a7aee2ae9580df2eb.hot-update.js",
"/chunks/status-check.4c850b632e7e0d2b61fa.hot-update.js": "/chunks/status-check.4c850b632e7e0d2b61fa.hot-update.js",
"/chunks/status-check.1c443b9b41fa0e557015.hot-update.js": "/chunks/status-check.1c443b9b41fa0e557015.hot-update.js",
"/chunks/status-check.43cd10467f8145ab8b8a.hot-update.js": "/chunks/status-check.43cd10467f8145ab8b8a.hot-update.js",
"/chunks/status-check.d481f098122f8655e168.hot-update.js": "/chunks/status-check.d481f098122f8655e168.hot-update.js",
"/chunks/status-check.a2c752fc5e7dbfc99947.hot-update.js": "/chunks/status-check.a2c752fc5e7dbfc99947.hot-update.js",
"/chunks/status-check.277b6609c757ec412ed6.hot-update.js": "/chunks/status-check.277b6609c757ec412ed6.hot-update.js",
"/chunks/status-check.5644c5af469338e1e03b.hot-update.js": "/chunks/status-check.5644c5af469338e1e03b.hot-update.js",
"/chunks/status-check.5f89e0e74f0a67dfe6ea.hot-update.js": "/chunks/status-check.5f89e0e74f0a67dfe6ea.hot-update.js",
"/chunks/status-check.5766b48d22a243437a6b.hot-update.js": "/chunks/status-check.5766b48d22a243437a6b.hot-update.js",
"/chunks/status-check.113f6b7ae77db4eac24f.hot-update.js": "/chunks/status-check.113f6b7ae77db4eac24f.hot-update.js",
"/chunks/status-check.bad00428f8bd7830ccc2.hot-update.js": "/chunks/status-check.bad00428f8bd7830ccc2.hot-update.js",
"/chunks/status-check.8e8b19f34cd29d04c28d.hot-update.js": "/chunks/status-check.8e8b19f34cd29d04c28d.hot-update.js",
"/chunks/status-check.7acf77341bdc0fd0843e.hot-update.js": "/chunks/status-check.7acf77341bdc0fd0843e.hot-update.js",
"/chunks/status-check.8959cc673db134489b96.hot-update.js": "/chunks/status-check.8959cc673db134489b96.hot-update.js",
"/chunks/status-check.0f0f5fd801d84fd294f2.hot-update.js": "/chunks/status-check.0f0f5fd801d84fd294f2.hot-update.js",
"/chunks/status-check.4a7ed4b9a955f6ef0258.hot-update.js": "/chunks/status-check.4a7ed4b9a955f6ef0258.hot-update.js",
"/chunks/status-check.42f2561f7ed01edb7b9e.hot-update.js": "/chunks/status-check.42f2561f7ed01edb7b9e.hot-update.js",
"/chunks/status-check.307cbf84fac83c53b419.hot-update.js": "/chunks/status-check.307cbf84fac83c53b419.hot-update.js",
"/chunks/status-check.f9a2880175ec95388827.hot-update.js": "/chunks/status-check.f9a2880175ec95388827.hot-update.js",
"/chunks/status-check.0c7c19c8fb32b76d9cfe.hot-update.js": "/chunks/status-check.0c7c19c8fb32b76d9cfe.hot-update.js",
"/chunks/status-check.dfa86748f8af397925a8.hot-update.js": "/chunks/status-check.dfa86748f8af397925a8.hot-update.js",
"/chunks/status-check.34bdf238910f0b66a954.hot-update.js": "/chunks/status-check.34bdf238910f0b66a954.hot-update.js",
"/chunks/status-check.21b2ade29ea985949dfa.hot-update.js": "/chunks/status-check.21b2ade29ea985949dfa.hot-update.js",
"/chunks/status-check.baa7022569488793f294.hot-update.js": "/chunks/status-check.baa7022569488793f294.hot-update.js",
"/chunks/status-check.48fe84b10d2b825983e8.hot-update.js": "/chunks/status-check.48fe84b10d2b825983e8.hot-update.js",
"/chunks/status-check.9cd90094c730296236af.hot-update.js": "/chunks/status-check.9cd90094c730296236af.hot-update.js",
"/chunks/status-check.b6ba8f66b0c827f642e0.hot-update.js": "/chunks/status-check.b6ba8f66b0c827f642e0.hot-update.js",
"/chunks/status-check.063a157f083452b8b125.hot-update.js": "/chunks/status-check.063a157f083452b8b125.hot-update.js",
"/chunks/status-check.c2ad5ae060ef91ab6871.hot-update.js": "/chunks/status-check.c2ad5ae060ef91ab6871.hot-update.js",
"/chunks/status-check.3891829a59fb48de60ce.hot-update.js": "/chunks/status-check.3891829a59fb48de60ce.hot-update.js",
"/chunks/status-check.b8524057c92cf78e2417.hot-update.js": "/chunks/status-check.b8524057c92cf78e2417.hot-update.js",
"/chunks/status-check.c2c2b27fb8e745ed8963.hot-update.js": "/chunks/status-check.c2c2b27fb8e745ed8963.hot-update.js",
"/chunks/status-check.15d6b6e8f8475864a673.hot-update.js": "/chunks/status-check.15d6b6e8f8475864a673.hot-update.js",
"/chunks/status-check.e1e749b26d87429a53a5.hot-update.js": "/chunks/status-check.e1e749b26d87429a53a5.hot-update.js",
"/chunks/status-check.342fab583e418b3ebbed.hot-update.js": "/chunks/status-check.342fab583e418b3ebbed.hot-update.js",
"/chunks/status-check.874b6be18d7aec08c953.hot-update.js": "/chunks/status-check.874b6be18d7aec08c953.hot-update.js",
"/chunks/status-check.e9174089178511cfce23.hot-update.js": "/chunks/status-check.e9174089178511cfce23.hot-update.js",
"/chunks/status-check.fd3ef69c9b6f81c92394.hot-update.js": "/chunks/status-check.fd3ef69c9b6f81c92394.hot-update.js",
"/chunks/status-check.78ba39dc0f31677098e8.hot-update.js": "/chunks/status-check.78ba39dc0f31677098e8.hot-update.js",
"/chunks/status-check.3be338b4385837e5654a.hot-update.js": "/chunks/status-check.3be338b4385837e5654a.hot-update.js",
"/chunks/status-check.2aab334f1e78b69f9dda.hot-update.js": "/chunks/status-check.2aab334f1e78b69f9dda.hot-update.js",
"/chunks/status-check.5149b186c7ce6ea2480c.hot-update.js": "/chunks/status-check.5149b186c7ce6ea2480c.hot-update.js",
"/chunks/status-check.25a5d00d0b6ac88049aa.hot-update.js": "/chunks/status-check.25a5d00d0b6ac88049aa.hot-update.js",
"/chunks/status-check.a63a1d526dfed0a76b1e.hot-update.js": "/chunks/status-check.a63a1d526dfed0a76b1e.hot-update.js",
"/chunks/status-check.57c6ee73eb5756b44f65.hot-update.js": "/chunks/status-check.57c6ee73eb5756b44f65.hot-update.js",
"/chunks/status-check.655180fb3bb8f2efd7ae.hot-update.js": "/chunks/status-check.655180fb3bb8f2efd7ae.hot-update.js",
"/chunks/status-check.29342b5167bd43d568f5.hot-update.js": "/chunks/status-check.29342b5167bd43d568f5.hot-update.js",
"/chunks/status-check.df584bec143167d59b30.hot-update.js": "/chunks/status-check.df584bec143167d59b30.hot-update.js",
"/chunks/status-check.25ff987a9d155f6a08c9.hot-update.js": "/chunks/status-check.25ff987a9d155f6a08c9.hot-update.js",
"/chunks/status-check.9ddbb495101d3b822daf.hot-update.js": "/chunks/status-check.9ddbb495101d3b822daf.hot-update.js",
"/chunks/status-check.1b4fc4962eb0a2abf3dd.hot-update.js": "/chunks/status-check.1b4fc4962eb0a2abf3dd.hot-update.js",
"/chunks/status-check.ec77ec1f605d9f475cca.hot-update.js": "/chunks/status-check.ec77ec1f605d9f475cca.hot-update.js",
"/chunks/status-check.61056a5eacdc788fdb48.hot-update.js": "/chunks/status-check.61056a5eacdc788fdb48.hot-update.js",
"/chunks/status-check.de33b68974f5a3e9343d.hot-update.js": "/chunks/status-check.de33b68974f5a3e9343d.hot-update.js",
"/chunks/status-check.6deee25c3fa2227ac05c.hot-update.js": "/chunks/status-check.6deee25c3fa2227ac05c.hot-update.js",
"/js/main.346469da6ba011c0109f.hot-update.js": "/js/main.346469da6ba011c0109f.hot-update.js",
"/chunks/status-check.346469da6ba011c0109f.hot-update.js": "/chunks/status-check.346469da6ba011c0109f.hot-update.js",
"/js/main.fed47f21bf43ddf8070d.hot-update.js": "/js/main.fed47f21bf43ddf8070d.hot-update.js",
"/chunks/status-check.fed47f21bf43ddf8070d.hot-update.js": "/chunks/status-check.fed47f21bf43ddf8070d.hot-update.js",
"/chunks/status-check.a6bbcb26f56eeb17115c.hot-update.js": "/chunks/status-check.a6bbcb26f56eeb17115c.hot-update.js",
"/chunks/status-check.2110cbfc3b787f160276.hot-update.js": "/chunks/status-check.2110cbfc3b787f160276.hot-update.js",
"/chunks/status-check.f24b656e0468f2d00b4f.hot-update.js": "/chunks/status-check.f24b656e0468f2d00b4f.hot-update.js",
"/chunks/status-check.05b0553aadf9779806cd.hot-update.js": "/chunks/status-check.05b0553aadf9779806cd.hot-update.js",
"/chunks/status-check.13342e70f59140ae74c2.hot-update.js": "/chunks/status-check.13342e70f59140ae74c2.hot-update.js",
"/chunks/status-check.87e610af0ba29a732796.hot-update.js": "/chunks/status-check.87e610af0ba29a732796.hot-update.js",
"/chunks/status-check.9e087dc2b137ef2c85cc.hot-update.js": "/chunks/status-check.9e087dc2b137ef2c85cc.hot-update.js",
"/chunks/status-check.d7e06b44ad2eb06686bb.hot-update.js": "/chunks/status-check.d7e06b44ad2eb06686bb.hot-update.js",
"/chunks/status-check.7d330409915d9d7d53e8.hot-update.js": "/chunks/status-check.7d330409915d9d7d53e8.hot-update.js",
"/chunks/admin-account.b0c3374208474353d7fe.hot-update.js": "/chunks/admin-account.b0c3374208474353d7fe.hot-update.js",
"/chunks/app-setup.b0c3374208474353d7fe.hot-update.js": "/chunks/app-setup.b0c3374208474353d7fe.hot-update.js",
"/chunks/billings-detail.b0c3374208474353d7fe.hot-update.js": "/chunks/billings-detail.b0c3374208474353d7fe.hot-update.js",
"/chunks/database.b0c3374208474353d7fe.hot-update.js": "/chunks/database.b0c3374208474353d7fe.hot-update.js",
"/chunks/environment-setup.b0c3374208474353d7fe.hot-update.js": "/chunks/environment-setup.b0c3374208474353d7fe.hot-update.js",
"/chunks/installation-disclaimer.b0c3374208474353d7fe.hot-update.js": "/chunks/installation-disclaimer.b0c3374208474353d7fe.hot-update.js",
"/chunks/purchase-code.b0c3374208474353d7fe.hot-update.js": "/chunks/purchase-code.b0c3374208474353d7fe.hot-update.js",
"/chunks/stripe-credentials.b0c3374208474353d7fe.hot-update.js": "/chunks/stripe-credentials.b0c3374208474353d7fe.hot-update.js",
"/chunks/subscription-plans.b0c3374208474353d7fe.hot-update.js": "/chunks/subscription-plans.b0c3374208474353d7fe.hot-update.js",
"/chunks/subscription-service.b0c3374208474353d7fe.hot-update.js": "/chunks/subscription-service.b0c3374208474353d7fe.hot-update.js",
"/chunks/status-check.0f14031d4868f0989dd6.hot-update.js": "/chunks/status-check.0f14031d4868f0989dd6.hot-update.js",
"/chunks/status-check.b2ac3607bcf6295b4d10.hot-update.js": "/chunks/status-check.b2ac3607bcf6295b4d10.hot-update.js",
"/chunks/status-check.f316b77b0d63454fb2b0.hot-update.js": "/chunks/status-check.f316b77b0d63454fb2b0.hot-update.js",
"/chunks/status-check.cba5e0e686d4165d0e5b.hot-update.js": "/chunks/status-check.cba5e0e686d4165d0e5b.hot-update.js",
"/chunks/status-check.875ff8ea9b5f6b427e3d.hot-update.js": "/chunks/status-check.875ff8ea9b5f6b427e3d.hot-update.js",
"/chunks/status-check.12d2c68ca5d98223766c.hot-update.js": "/chunks/status-check.12d2c68ca5d98223766c.hot-update.js",
"/chunks/status-check.7920c3c8d544ef1e8dfa.hot-update.js": "/chunks/status-check.7920c3c8d544ef1e8dfa.hot-update.js",
"/chunks/status-check.650821558473b8202711.hot-update.js": "/chunks/status-check.650821558473b8202711.hot-update.js",
"/js/main.fe5e650dee5a1bb1fc13.hot-update.js": "/js/main.fe5e650dee5a1bb1fc13.hot-update.js",
"/chunks/setup-wizard.72c41776eacb54277e7b.hot-update.js": "/chunks/setup-wizard.72c41776eacb54277e7b.hot-update.js",
"/js/main.1a7a79423134ff81c39e.hot-update.js": "/js/main.1a7a79423134ff81c39e.hot-update.js",
"/chunks/status-check.43c5e2ea66b5c644abaa.hot-update.js": "/chunks/status-check.43c5e2ea66b5c644abaa.hot-update.js",
"/chunks/status-check.0407d7cadd6459a2005a.hot-update.js": "/chunks/status-check.0407d7cadd6459a2005a.hot-update.js",
"/chunks/status-check.7a654201d619492b9376.hot-update.js": "/chunks/status-check.7a654201d619492b9376.hot-update.js",
"/chunks/status-check.031b18740a152e7a4afe.hot-update.js": "/chunks/status-check.031b18740a152e7a4afe.hot-update.js",
"/chunks/status-check.7eb7825dea3966215cac.hot-update.js": "/chunks/status-check.7eb7825dea3966215cac.hot-update.js",
"/chunks/status-check.20d5dcc79d3a534cb81f.hot-update.js": "/chunks/status-check.20d5dcc79d3a534cb81f.hot-update.js",
"/chunks/status-check.46c1ceffd07c9cd4efd7.hot-update.js": "/chunks/status-check.46c1ceffd07c9cd4efd7.hot-update.js",
"/chunks/status-check.2c09dddbdc08be3cff85.hot-update.js": "/chunks/status-check.2c09dddbdc08be3cff85.hot-update.js",
"/chunks/status-check.cfd5dfab739238654232.hot-update.js": "/chunks/status-check.cfd5dfab739238654232.hot-update.js",
"/chunks/status-check.4545d2bb3a274c9d33e6.hot-update.js": "/chunks/status-check.4545d2bb3a274c9d33e6.hot-update.js",
"/chunks/status-check.3059fc882bb7470ea906.hot-update.js": "/chunks/status-check.3059fc882bb7470ea906.hot-update.js",
"/chunks/status-check.fabc216483cd1a46178f.hot-update.js": "/chunks/status-check.fabc216483cd1a46178f.hot-update.js",
"/chunks/status-check.2173dc6d5f4e6a54ee7c.hot-update.js": "/chunks/status-check.2173dc6d5f4e6a54ee7c.hot-update.js",
"/chunks/status-check.98c68242f87b96f7722c.hot-update.js": "/chunks/status-check.98c68242f87b96f7722c.hot-update.js",
"/chunks/status-check.4b98c68a29333a6337cc.hot-update.js": "/chunks/status-check.4b98c68a29333a6337cc.hot-update.js",
"/chunks/status-check.7178131f4e152a536f0e.hot-update.js": "/chunks/status-check.7178131f4e152a536f0e.hot-update.js",
"/chunks/status-check.807b117afc2ff10989b5.hot-update.js": "/chunks/status-check.807b117afc2ff10989b5.hot-update.js",
"/chunks/status-check.d6a3ce2c20f008057804.hot-update.js": "/chunks/status-check.d6a3ce2c20f008057804.hot-update.js",
"/chunks/status-check.8d8bf142eb151aa57a29.hot-update.js": "/chunks/status-check.8d8bf142eb151aa57a29.hot-update.js",
"/chunks/status-check.362d9498a4fd7f2a55c8.hot-update.js": "/chunks/status-check.362d9498a4fd7f2a55c8.hot-update.js"
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=9d10953d3b088324dfe3",
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=7d09e0b0658e140a7ffa",
"/js/main.57400113f383f4062d18.hot-update.js": "/js/main.57400113f383f4062d18.hot-update.js",
"/js/main.73d8c447097ea4686777.hot-update.js": "/js/main.73d8c447097ea4686777.hot-update.js",
"/js/main.0efd84c3833d84b7431f.hot-update.js": "/js/main.0efd84c3833d84b7431f.hot-update.js",
"/js/main.7756efc0c099cafc2144.hot-update.js": "/js/main.7756efc0c099cafc2144.hot-update.js",
"/js/main.16af1ec90f7cb7cfdc27.hot-update.js": "/js/main.16af1ec90f7cb7cfdc27.hot-update.js",
"/js/main.6d974de4f295f73172f2.hot-update.js": "/js/main.6d974de4f295f73172f2.hot-update.js",
"/js/main.784dc3bf93503ddfb3eb.hot-update.js": "/js/main.784dc3bf93503ddfb3eb.hot-update.js",
"/js/main.a7e623e5e87a8cd06638.hot-update.js": "/js/main.a7e623e5e87a8cd06638.hot-update.js",
"/js/main.fd177999a27d9a9e56ed.hot-update.js": "/js/main.fd177999a27d9a9e56ed.hot-update.js",
"/js/main.8b39d84cfbd9e8d53355.hot-update.js": "/js/main.8b39d84cfbd9e8d53355.hot-update.js",
"/js/main.571d6eb6e4cdc38cf4e7.hot-update.js": "/js/main.571d6eb6e4cdc38cf4e7.hot-update.js",
"/js/main.0a092bdc430e651e46a6.hot-update.js": "/js/main.0a092bdc430e651e46a6.hot-update.js",
"/js/main.a2e4ef0944dba57924a8.hot-update.js": "/js/main.a2e4ef0944dba57924a8.hot-update.js"
}

View File

@@ -15,56 +15,28 @@ const defaultState = {
}
const actions = {
downloadFolder: ({commit, getters}, folder) => {
commit('PROCESSING_POPUP', {
title: i18n.t('popup_zipping.title'),
message: i18n.t('popup_zipping.message')
})
downloadFolder: ({getters}, folder) => {
let route = getters.sharedDetail
? `/api/zip/folder/${folder.id}/${router.currentRoute.params.token}`
: `/api/zip/folder/${folder.id}`
axios.get(route)
.then(response => {
Vue.prototype.$downloadFile(response.data.url, response.data.name)
})
.catch(() => {
Vue.prototype.$isSomethingWrong()
})
.finally(() => {
commit('PROCESSING_POPUP', undefined)
})
Vue.prototype.$downloadFile(route, 'files.zip')
},
downloadFiles: ({commit, getters}) => {
downloadFiles: ({getters}) => {
let files = []
// get ids of selected files
getters.clipboard.forEach(file => files.push(file.id))
let ids = files.join(',')
// Get route
let route = getters.sharedDetail
? `/api/zip/files/${router.currentRoute.params.token}`
: '/api/zip/files'
? `/api/zip/files/${router.currentRoute.params.token}/?ids=${ids}`
: `/api/zip/files?ids=${ids}`
commit('PROCESSING_POPUP', {
title: i18n.t('popup_zipping.title'),
message: i18n.t('popup_zipping.message'),
})
axios.post(route, {
items: files
})
.then(response => {
Vue.prototype.$downloadFile(response.data.url, response.data.name)
})
.catch(() => {
Vue.prototype.$isSomethingWrong()
})
.finally(() => {
commit('PROCESSING_POPUP', undefined)
})
Vue.prototype.$downloadFile(route, 'files.zip')
},
moveItem: ({commit, getters, dispatch}, {to_item, noSelectedItem}) => {

View File

@@ -81,5 +81,5 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
Route::post('/move', MoveFileOrFolderController::class);
Route::get('/zip/folder/{id}', ZipFolderController::class);
Route::post('/zip/files', ZipFilesController::class);
Route::get('/zip/files', ZipFilesController::class);
});

View File

@@ -1,5 +1,4 @@
<?php
namespace Domain\Homepage\Controllers;
use Illuminate\View\View;

View File

@@ -1,11 +1,8 @@
<?php
namespace Domain\SetupWizard\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
class PingAPIController extends Controller
{
@@ -13,4 +10,4 @@ class PingAPIController extends Controller
{
return response('pong');
}
}
}

View File

@@ -21,42 +21,11 @@ class StoreEnvironmentSettingsController extends Controller
],
's3' => [
'FILESYSTEM_DRIVER' => $request->input('storage.driver') ?? null,
'AWS_ACCESS_KEY_ID' => $request->input('storage.key') ?? null,
'AWS_SECRET_ACCESS_KEY' => $request->input('storage.secret') ?? null,
'AWS_DEFAULT_REGION' => $request->input('storage.region') ?? null,
'AWS_BUCKET' => $request->input('storage.bucket') ?? null,
],
'spaces' => [
'FILESYSTEM_DRIVER' => $request->input('storage.driver') ?? null,
'DO_SPACES_KEY' => $request->input('storage.key') ?? null,
'DO_SPACES_SECRET' => $request->input('storage.secret') ?? null,
'DO_SPACES_ENDPOINT' => $request->input('storage.endpoint') ?? null,
'DO_SPACES_REGION' => $request->input('storage.region') ?? null,
'DO_SPACES_BUCKET' => $request->input('storage.bucket') ?? null,
],
'wasabi' => [
'FILESYSTEM_DRIVER' => $request->input('storage.driver') ?? null,
'WASABI_KEY' => $request->input('storage.key') ?? null,
'WASABI_SECRET' => $request->input('storage.secret') ?? null,
'WASABI_ENDPOINT' => $request->input('storage.endpoint') ?? null,
'WASABI_REGION' => $request->input('storage.region') ?? null,
'WASABI_BUCKET' => $request->input('storage.bucket') ?? null,
],
'backblaze' => [
'FILESYSTEM_DRIVER' => $request->input('storage.driver') ?? null,
'BACKBLAZE_KEY' => $request->input('storage.key') ?? null,
'BACKBLAZE_SECRET' => $request->input('storage.secret') ?? null,
'BACKBLAZE_ENDPOINT' => $request->input('storage.endpoint') ?? null,
'BACKBLAZE_REGION' => $request->input('storage.region') ?? null,
'BACKBLAZE_BUCKET' => $request->input('storage.bucket') ?? null,
],
'oss' => [
'FILESYSTEM_DRIVER' => $request->input('storage.driver') ?? null,
'OSS_ACCESS_KEY_ID' => $request->input('storage.key') ?? null,
'OSS_SECRET_ACCESS_KEY' => $request->input('storage.secret') ?? null,
'OSS_ENDPOINT' => $request->input('storage.endpoint') ?? null,
'OSS_REGION' => $request->input('storage.region') ?? null,
'OSS_BUCKET' => $request->input('storage.bucket') ?? null,
'S3_ACCESS_KEY_ID' => $request->input('storage.key') ?? null,
'S3_SECRET_ACCESS_KEY' => $request->input('storage.secret') ?? null,
'S3_DEFAULT_REGION' => $request->input('storage.region') ?? null,
'S3_BUCKET' => $request->input('storage.bucket') ?? null,
'S3_URL' => $request->input('storage.endpoint') ?? null,
],
];

View File

@@ -1,70 +1,44 @@
<?php
namespace Domain\Zip\Actions;
use Domain\Zip\Models\Zip;
use Illuminate\Support\Str;
use Domain\Sharing\Models\Share;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use League\Flysystem\FileNotFoundException;
use Symfony\Component\HttpKernel\Exception\HttpException;
use STS\ZipStream\ZipStreamFacade as Zip;
class ZipFilesAction
{
/**
* Zip selected files, store it in /zip folder and retrieve zip record
* Zip selected files, and download it as response stream
*/
public function __invoke(
File | Collection $files,
?Share $shared = null,
): Zip {
// Local storage instance
$disk_local = Storage::disk('local');
// Move file to local storage from external storage service
if (! is_storage_driver('local')) {
$files->each(function ($file) use ($disk_local) {
try {
$disk_local->put("temp/$file->basename", Storage::get("files/$file->user_id/$file->basename"));
} catch (FileNotFoundException $e) {
throw new HttpException(404, 'File not found');
}
});
}
// Get zip path
$zip_name = Str::random() . '.zip';
): ZipStream {
// Create zip
$zipper = new \Madnest\Madzipper\Madzipper;
$zip = $zipper->make($disk_local->path("zip/$zip_name"));
$zip = Zip::create('files.zip');
// Add files to zip
$files->each(function ($file) use ($zip, $disk_local) {
$file_path = is_storage_driver('local')
? $disk_local->path("files/$file->user_id/$file->basename")
: $disk_local->path("temp/$file->basename");
$files->map(function ($file) use ($zip) {
// get file path
$filePath = "files/$file->user_id/$file->basename";
$zip->addString("$file->name.$file->mimetype", File::get($file_path));
// Add file into zip
if (Storage::exists($filePath)) {
// local disk
if (is_storage_driver('local')) {
$zip->add(storage_path("app/files/$file->user_id/$file->basename"), $file->name);
}
// s3 client
if (is_storage_driver('s3')) {
$bucketName = config('filesystems.disks.s3.bucket');
$zip->add("s3://$bucketName/files/$file->user_id/$file->basename", $file->name);
}
}
});
// Close zip
//$zip->close();
// Delete temporary files
if (! is_storage_driver('local')) {
$files->each(function ($file) use ($disk_local) {
$disk_local->delete("temp/$file->basename");
});
}
// Store zip record
return Zip::create([
'user_id' => $shared->user_id ?? Auth::id(),
'shared_token' => $shared->token ?? null,
'basename' => $zip_name,
]);
return $zip;
}
}

View File

@@ -1,15 +1,12 @@
<?php
namespace Domain\Zip\Actions;
use Domain\Zip\Models\Zip;
use Illuminate\Support\Str;
use STS\ZipStream\ZipStream;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use League\Flysystem\FileNotFoundException;
use Symfony\Component\HttpKernel\Exception\HttpException;
use STS\ZipStream\ZipStreamFacade as Zip;
class ZipFolderAction
{
@@ -19,63 +16,43 @@ class ZipFolderAction
public function __invoke(
$id,
?Share $shared = null
): Zip {
): ZipStream {
$user_id = Auth::id() ?? $shared->user_id;
// Get folder
$requested_folder = Folder::with(['folders.files', 'files'])
->where('id', $id)
->where('user_id', Auth::id() ?? $shared->user_id)
->where('user_id', $user_id)
->with('folders')
->first();
$files = get_files_for_zip($requested_folder, collect([]));
// Local storage instance
$disk_local = Storage::disk('local');
// Create zip
$zip = Zip::create('files.zip');
// Move file to local storage from external storage service
if (! is_storage_driver('local')) {
foreach ($files as $file) {
try {
$disk_local->put("temp/{$file['basename']}", Storage::get("files/$requested_folder->user_id/{$file['basename']}"));
} catch (FileNotFoundException $e) {
throw new HttpException(404, 'File not found');
foreach ($files as $file) {
// get file path
$filePath = "files/$user_id/{$file['basename']}";
// Add file into zip
if (Storage::exists($filePath)) {
$zipDestination = "{$file['folder_path']}/{$file['name']}";
// local disk
if (is_storage_driver('local')) {
$zip->add(storage_path("app/files/$user_id/{$file['basename']}"), $zipDestination);
}
// s3 client
if (is_storage_driver('s3')) {
$bucketName = config('filesystems.disks.s3.bucket');
$zip->add("s3://$bucketName/files/$user_id/{$file['basename']}", $zipDestination);
}
}
}
// Get zip path
$zip_name = Str::random(16) . '-' . Str::slug($requested_folder->name) . '.zip';
// Create zip
$zipper = new \Madnest\Madzipper\Madzipper;
$zip = $zipper->make($disk_local->path("zip/$zip_name"));
// Add files to zip
foreach ($files as $file) {
$file_path = is_storage_driver('local')
? $disk_local->path("files/$requested_folder->user_id/{$file['basename']}")
: $disk_local->path("temp/{$file['basename']}");
$zip
->folder($file['folder_path'])
->addString("{$file['name']}.{$file['mimetype']}", File::get($file_path));
}
// Close zip
//$zip->close();
// Delete temporary files
if (! is_storage_driver('local')) {
foreach ($files as $file) {
$disk_local->delete('temp/' . $file['basename']);
}
}
// Store zip record
return Zip::create([
'user_id' => $shared->user_id ?? Auth::id(),
'shared_token' => $shared->token ?? null,
'basename' => $zip_name,
]);
return $zip;
}
}

View File

@@ -3,12 +3,13 @@ namespace Domain\Zip\Controllers;
use Illuminate\Http\Request;
use Domain\Files\Models\File;
use Illuminate\Http\Response;
use Domain\Sharing\Models\Share;
use App\Http\Controllers\Controller;
use Domain\Zip\Actions\ZipFilesAction;
use Domain\Traffic\Actions\RecordDownloadAction;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
use STS\ZipStream\ZipStream;
/**
* Guest download multiple files via zip
@@ -18,6 +19,7 @@ class VisitorZipFilesController extends Controller
public function __construct(
private ProtectShareRecordAction $protectShareRecord,
private VerifyAccessToItemAction $verifyAccessToItem,
private RecordDownloadAction $recordDownload,
private ZipFilesAction $zipFiles,
) {
}
@@ -25,7 +27,7 @@ class VisitorZipFilesController extends Controller
public function __invoke(
Request $request,
Share $shared,
): Response {
): ZipStream {
// Check ability to access protected share record
($this->protectShareRecord)($shared);
@@ -46,10 +48,11 @@ class VisitorZipFilesController extends Controller
// Create zip
$zip = ($this->zipFiles)($files, $shared);
// Get file
return response([
'url' => url("/zip/{$zip->id}/public/{$shared->token}"),
'name' => $zip->basename,
], 201);
($this->recordDownload)(
file_size: $zip->predictZipSize(),
user_id: $shared->user_id,
);
return $zip;
}
}

View File

@@ -1,11 +1,12 @@
<?php
namespace Domain\Zip\Controllers;
use Illuminate\Http\Response;
use STS\ZipStream\ZipStream;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller;
use Domain\Zip\Actions\ZipFolderAction;
use Domain\Traffic\Actions\RecordDownloadAction;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
@@ -17,6 +18,7 @@ class VisitorZipFolderController extends Controller
public function __construct(
private ProtectShareRecordAction $protectShareRecord,
private VerifyAccessToItemAction $verifyAccessToItem,
private RecordDownloadAction $recordDownload,
private ZipFolderAction $zipFolder,
) {
}
@@ -24,7 +26,7 @@ class VisitorZipFolderController extends Controller
public function __invoke(
string $id,
Share $shared,
): Response {
): ZipStream {
// Check ability to access protected share record
($this->protectShareRecord)($shared);
@@ -36,16 +38,17 @@ class VisitorZipFolderController extends Controller
->where('id', $id);
if (! $folder->exists()) {
abort(404, 'Requested folder doesn\'t exists.');
abort(404, "Requested folder doesn't exists.");
}
// Create zip
$zip = ($this->zipFolder)($id, $shared);
// Get file
return response([
'url' => url("/zip/{$zip->id}/public/{$shared->token}"),
'name' => $zip->basename,
], 201);
($this->recordDownload)(
file_size: $zip->predictZipSize(),
user_id: $shared->user_id,
);
return $zip;
}
}

View File

@@ -2,31 +2,35 @@
namespace Domain\Zip\Controllers;
use Illuminate\Http\Request;
use STS\ZipStream\ZipStream;
use Domain\Files\Models\File;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Domain\Zip\Actions\ZipFilesAction;
use Domain\Traffic\Actions\RecordDownloadAction;
class ZipFilesController extends Controller
{
public function __construct(
private ZipFilesAction $zipFiles,
private RecordDownloadAction $recordDownload,
) {
}
public function __invoke(
Request $request,
): Response {
): ZipStream {
$files = File::whereUserId(Auth::id())
->whereIn('id', $request->input('items'))
->whereIn('id', explode(',', $request->get('ids')))
->get();
$zip = ($this->zipFiles)($files);
return response([
'url' => route('zip', $zip->id),
'name' => $zip->basename,
], 201);
($this->recordDownload)(
file_size: $zip->predictZipSize(),
user_id: Auth::id(),
);
return $zip;
}
}

View File

@@ -1,34 +1,38 @@
<?php
namespace Domain\Zip\Controllers;
use Illuminate\Http\Response;
use STS\ZipStream\ZipStream;
use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Domain\Zip\Actions\ZipFolderAction;
use Domain\Traffic\Actions\RecordDownloadAction;
class ZipFolderController extends Controller
{
public function __construct(
private ZipFolderAction $zipFolder,
private RecordDownloadAction $recordDownload,
) {
}
public function __invoke(
string $id,
): Response {
): ZipStream {
$folder = Folder::whereUserId(Auth::id())
->where('id', $id);
if (! $folder->exists()) {
abort(404, "Requested folder doesn't exists.");
response("Requested folder doesn't exists.", 404);
}
$zip = ($this->zipFolder)($id);
return response([
'url' => route('zip', $zip->id),
'name' => $zip->basename,
], 201);
($this->recordDownload)(
file_size: $zip->predictZipSize(),
user_id: Auth::id(),
);
return $zip;
}
}