| @@ -0,0 +1,42 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\Image; | |||||
| use App\Http\Controllers\Web\WebController; | |||||
| use App\Kintone\KintoneAccess; | |||||
| use App\Kintone\Models\SeasonTicketContract; | |||||
| use Illuminate\Http\Request; | |||||
| use Illuminate\Http\Response; | |||||
| abstract class ImageController extends WebController | |||||
| { | |||||
| public function name(): string | |||||
| { | |||||
| return "画像取得"; | |||||
| } | |||||
| public function description(): string | |||||
| { | |||||
| return "KINTONEから画像を取得する"; | |||||
| } | |||||
| public function __construct(protected ImageParam $param) | |||||
| { | |||||
| parent::__construct(); | |||||
| $this->middleware('auth:sanctum'); | |||||
| } | |||||
| protected function run(Request $request): Response | |||||
| { | |||||
| $access = $this->getAccess(); | |||||
| $file = $access->fileGet($this->param->id); | |||||
| return response($file->body(), 200, [ | |||||
| 'Content-Length' => $file->header('Content-Length'), | |||||
| 'Content-Type' => $file->header('Content-Type'), | |||||
| ]); | |||||
| } | |||||
| abstract protected function getAccess(): KintoneAccess; | |||||
| } | |||||
| @@ -0,0 +1,18 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\Image; | |||||
| use App\Http\Controllers\Web\BaseParam; | |||||
| /** | |||||
| * @property string $id | |||||
| */ | |||||
| class ImageParam extends BaseParam | |||||
| { | |||||
| public function rules(): array | |||||
| { | |||||
| return [ | |||||
| 'id' => $this->str(), | |||||
| ]; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,19 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\Image; | |||||
| use App\Kintone\KintoneAccess; | |||||
| use App\Kintone\Models\SeasonTicketContract; | |||||
| class SeasonTicketContractImageController extends ImageController | |||||
| { | |||||
| public function name(): string | |||||
| { | |||||
| return "画像取得[車室情報管理]"; | |||||
| } | |||||
| protected function getAccess(): KintoneAccess | |||||
| { | |||||
| return SeasonTicketContract::getAccess(); | |||||
| } | |||||
| } | |||||
| @@ -13,6 +13,7 @@ use Exception; | |||||
| use Illuminate\Foundation\Auth\Access\AuthorizesRequests; | use Illuminate\Foundation\Auth\Access\AuthorizesRequests; | ||||
| use Illuminate\Foundation\Bus\DispatchesJobs; | use Illuminate\Foundation\Bus\DispatchesJobs; | ||||
| use Illuminate\Foundation\Validation\ValidatesRequests; | use Illuminate\Foundation\Validation\ValidatesRequests; | ||||
| use Illuminate\Http\Client\Response as ClientResponse; | |||||
| use Illuminate\Http\JsonResponse; | use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||
| use Illuminate\Http\Response; | use Illuminate\Http\Response; | ||||
| @@ -140,7 +141,7 @@ abstract class WebController extends BaseController | |||||
| * @param Request $request | * @param Request $request | ||||
| * @return Response|JsonResponse|string | * @return Response|JsonResponse|string | ||||
| */ | */ | ||||
| protected function run(Request $request): Response|JsonResponse|BinaryFileResponse|string | |||||
| protected function run(Request $request): Response|JsonResponse|BinaryFileResponse|ClientResponse |string | |||||
| { | { | ||||
| return $this->successResponse(); | return $this->successResponse(); | ||||
| } | } | ||||
| @@ -385,8 +385,7 @@ class KintoneAccess | |||||
| { | { | ||||
| $response = Http::withHeaders([ | $response = Http::withHeaders([ | ||||
| "X-Cybozu-API-Token" => $this->apiToken, | "X-Cybozu-API-Token" => $this->apiToken, | ||||
| "Content-Type" => "application/json", | |||||
| ])->get($this->getCursorUrl(), [ | |||||
| ])->get($this->getFileUrl(), [ | |||||
| "fileKey" => $fileKey, | "fileKey" => $fileKey, | ||||
| ]); | ]); | ||||
| @@ -394,6 +393,7 @@ class KintoneAccess | |||||
| $e = $response->toException(); | $e = $response->toException(); | ||||
| if ($e instanceof Exception) { | if ($e instanceof Exception) { | ||||
| Log::error($e->getMessage()); | Log::error($e->getMessage()); | ||||
| Log::error($response->body()); | |||||
| throw $e; | throw $e; | ||||
| } | } | ||||
| } | } | ||||
| @@ -13,5 +13,8 @@ use App\Util\RouteHelper; | |||||
| | | | | ||||
| */ | */ | ||||
| // 画像取得 | |||||
| RouteHelper::get('/image/season-ticket-contract', App\Http\Controllers\Web\Image\SeasonTicketContractImageController::class); | |||||
| // ルーティングで適合しない場合はフロント側のRoutingにゆだねる | // ルーティングで適合しない場合はフロント側のRoutingにゆだねる | ||||
| RouteHelper::get('/{any?}', App\Http\Controllers\Web\IndexController::class)->where('any', '.*'); | RouteHelper::get('/{any?}', App\Http\Controllers\Web\IndexController::class)->where('any', '.*'); | ||||