3 Commits
3f24919507
...
cfc8ec2616
Author | SHA1 | Message | Date |
---|---|---|---|
Mohammad Khazaee | cfc8ec2616 |
change save file to buffer
|
2 years ago |
Mohammad Khazaee | 66090628db |
change save file to buffer
|
2 years ago |
Mohammad Khazaee | 47d395be84 |
test for modella project
|
2 years ago |
22 changed files with 270 additions and 466 deletions
-
1.gitignore
-
97app/Http/Controllers/FileController.php
-
2app/Http/Middleware/BindFileModelMiddleware.php
-
2app/Http/Requests/FileStoreRequest.php
-
117app/Image/ImageProcessor.php
-
5composer.json
-
47composer.lock
-
6database/factories/BaseFactory.php
-
20database/factories/CollectionFactory.php
-
2database/factories/Documents/PolicyDocumentFactory.php
-
28database/factories/FileFactory.php
-
2database/factories/ILaravelFactory.php
-
2database/factories/UserFactory.php
-
6routes/api.php
-
111routes/web.php
-
BINstorage/stub/image1.png
-
8tests/Base/FactoryMethodsTrait.php
-
53tests/Feature/FileDeleteTest.php
-
47tests/Feature/FileRestoreTest.php
-
29tests/Feature/FileShowTest.php
-
102tests/Feature/FileStoreTest.php
-
49tests/Feature/FileUpdateTest.php
@ -1,97 +0,0 @@ |
|||||
<?php |
|
||||
|
|
||||
namespace App\Http\Controllers; |
|
||||
|
|
||||
use App\Http\Requests\FileStoreRequest; |
|
||||
use App\Http\Requests\FileUpdateRequest; |
|
||||
use App\Http\Resources\FileResource; |
|
||||
use App\Image\ImageProcessor; |
|
||||
use App\Jobs\FileConversionQueue; |
|
||||
use App\Models\File; |
|
||||
use Illuminate\Http\Request; |
|
||||
use Illuminate\Support\Facades\DB; |
|
||||
use Illuminate\Support\Facades\Storage; |
|
||||
use Illuminate\Support\Facades\Validator; |
|
||||
use Symfony\Component\Console\Input\Input; |
|
||||
|
|
||||
use function PHPUnit\Framework\isNull; |
|
||||
|
|
||||
class FileController extends Controller |
|
||||
{ |
|
||||
public function show($collection, $uuid, $ext, Request $request, ImageProcessor $imageProcessor) |
|
||||
{ |
|
||||
if ($request->castParams == 'resource') { |
|
||||
return new FileResource(app()->file); |
|
||||
} |
|
||||
if (!is_null(array_intersect(array_keys($request->all()), $this->availableParams))) { |
|
||||
$imageProcessor->process(app()->file->getPath(), app()->file->getModifiedPath(), $request->all()); |
|
||||
return response()->file(app()->file->getModifiedPath()); |
|
||||
} |
|
||||
return response()->file(app()->file->getPath()); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
// for local private we didn't talk about it
|
|
||||
// public function private($collection, $path)
|
|
||||
// {
|
|
||||
// Storage::disk('local')->download($path);
|
|
||||
// }
|
|
||||
|
|
||||
public function store(FileStoreRequest $request, ImageProcessor $imageProcessor) |
|
||||
{ |
|
||||
$request->file = $imageProcessor->convertImage($request->file->path(), '/tmp/' . app()->uuid . '.' . app()->collection->ext); |
|
||||
if (!is_null(app()->collection->process)) { |
|
||||
$request->file = $imageProcessor->process($request->file->path(), '/tmp/' . app()->uuid . '.' . app()->collection->ext, app()->collection->process); |
|
||||
} |
|
||||
|
|
||||
$fileResource = null; |
|
||||
DB::transaction(function () use ($request, &$fileResource) { |
|
||||
$uuid = app()->uuid; |
|
||||
$fileResource = File::create([ |
|
||||
'uuid' => $uuid, |
|
||||
'original_name' => $request->name, |
|
||||
'public' => $request->public, |
|
||||
'ext' => $request->file->extension(), |
|
||||
'mimetype' => $request->file->getMimeType(), |
|
||||
'width' => getimagesize($request->file)[0], |
|
||||
'height' => getimagesize($request->file)[1], |
|
||||
'file_size' => $request->file->getSize(), |
|
||||
'sort' => $request->file->getSize(), |
|
||||
'alts' => $request->alts, |
|
||||
'description' => $request->description, |
|
||||
'user_id' => auth()->id(), |
|
||||
'ip' => $request->ip(), |
|
||||
'collection_id' => app()->collection->id, |
|
||||
'published_at' => $request->published_at, |
|
||||
'server_path' => '/' . date('y') . '/' . date('m') . '/', |
|
||||
]); |
|
||||
if (!app()->collection->tmp_support && app()->collection->count == 1) { |
|
||||
File::where('user_id', auth()->id())->delete(); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
$storedFile = Storage::disk(app()->collection->disk)->putFileAs($fileResource->server_path, $request->file, $fileResource->uuid . '.' . app()->collection->ext); |
|
||||
|
|
||||
if (app()->collection->public) { |
|
||||
Storage::disk(app()->collection->disk)->setVisibility($storedFile, 'public'); |
|
||||
} |
|
||||
|
|
||||
}); |
|
||||
|
|
||||
return new FileResource($fileResource); |
|
||||
} |
|
||||
|
|
||||
public function update(FileUpdateRequest $request) |
|
||||
{ |
|
||||
app()->file->update($request->all()); |
|
||||
return new FileResource(app()->file); |
|
||||
} |
|
||||
|
|
||||
public function destroy() |
|
||||
{ |
|
||||
if (app()->file->trashed()) { |
|
||||
return app()->file->restore(); |
|
||||
} |
|
||||
return app()->file->delete(); |
|
||||
} |
|
||||
} |
|
Binary file not shown.
Before Width: 600 | Height: 1200 | Size: 620 KiB |
@ -1,47 +0,0 @@ |
|||||
<?php |
|
||||
|
|
||||
namespace Tests\Feature; |
|
||||
|
|
||||
use App\Image\ImageProcessor; |
|
||||
use App\Models\Collection; |
|
||||
use App\Models\File; |
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase; |
|
||||
use Illuminate\Foundation\Testing\WithFaker; |
|
||||
use Illuminate\Support\Facades\Storage; |
|
||||
use Tests\TestCase; |
|
||||
|
|
||||
class FileRestoreTest extends TestCase |
|
||||
{ |
|
||||
public function test_user_with_permission_can_not_restore_file() |
|
||||
{ |
|
||||
$this->assertFalse("it's not mohammad's fault, I'm waiting for dynamic policy"); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
public function test_user_with_permission_can_restore_file() |
|
||||
{ |
|
||||
$collection = Collection::factory()->createQuietly([ |
|
||||
'alt_required' => false, |
|
||||
'description_required' => false, |
|
||||
'tmp_support' => true, |
|
||||
'max_width' => 2000, |
|
||||
'max_height' => 2000, |
|
||||
'min_width' => 1, |
|
||||
'min_height' => 1, |
|
||||
'min_file_size' => 0 |
|
||||
]); |
|
||||
$uuid = app()->uuid; |
|
||||
$file = File::factory()->createQuietly([ |
|
||||
'uuid' => $uuid, |
|
||||
'server_path' => '/' . date('y') . '/' . date('m') . '/', |
|
||||
'user_id' => auth()->id(), |
|
||||
'collection_id' => $collection->id |
|
||||
]); |
|
||||
$imageProcessor = new ImageProcessor; |
|
||||
$imageProcessor->createFakeImage(storage_path('stub') . '/image.png', Storage::disk($collection->disk)->path($file->server_path . $uuid . '.' . $collection->ext)); |
|
||||
|
|
||||
$file->delete(); |
|
||||
$response = $this->loginAs()->deleteJson(route('api.files.destroy', ['collection_name' => $collection->name, 'uuid' => $file->uuid, 'extention' => $collection->ext])); |
|
||||
$response->assertok(); |
|
||||
} |
|
||||
} |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue