From 6b40a2b8361e8e1c2fe3e7ae57832f5fb64bc3c6 Mon Sep 17 00:00:00 2001 From: Benjamin Nussbaum Date: Tue, 18 Mar 2025 15:23:44 +0100 Subject: [PATCH] feat: proxy feature skipped when playlist is active --- app/Jobs/FetchProxyCloudResponses.php | 110 +++++++++++++------------- 1 file changed, 57 insertions(+), 53 deletions(-) diff --git a/app/Jobs/FetchProxyCloudResponses.php b/app/Jobs/FetchProxyCloudResponses.php index 31fb5bf..4cca3c3 100644 --- a/app/Jobs/FetchProxyCloudResponses.php +++ b/app/Jobs/FetchProxyCloudResponses.php @@ -22,52 +22,9 @@ class FetchProxyCloudResponses implements ShouldQueue public function handle(): void { Device::where('proxy_cloud', true)->each(function ($device) { - try { - $response = Http::withHeaders([ - 'id' => $device->mac_address, - 'access-token' => $device->api_key, - 'width' => 800, - 'height' => 480, - 'rssi' => $device->last_rssi_level, - 'battery_voltage' => $device->last_battery_voltage, - 'refresh-rate' => $device->default_refresh_interval, - 'fw-version' => $device->last_firmware_version, - 'accept-encoding' => 'identity;q=1,chunked;q=0.1,*;q=0', - 'user-agent' => 'ESP32HTTPClient', - ])->get(config('services.trmnl.proxy_base_url').'/api/display'); - - $device->update([ - 'proxy_cloud_response' => $response->json(), - ]); - - $imageUrl = $response->json('image_url'); - $filename = $response->json('filename'); - - \Log::info('Response data: '.$imageUrl); - if (isset($imageUrl)) { - try { - $imageContents = Http::get($imageUrl)->body(); - if (! Storage::disk('public')->exists("images/generated/{$filename}.bmp")) { - Storage::disk('public')->put( - "images/generated/{$filename}.bmp", - $imageContents - ); - } - - $device->update([ - 'current_screen_image' => $filename, - ]); - } catch (\Exception $e) { - Log::error("Failed to download and save image for device: {$device->mac_address}", [ - 'error' => $e->getMessage(), - ]); - } - } - - Log::info("Successfully updated proxy cloud response for device: {$device->mac_address}"); - - if ($device->last_log_request) { - Http::withHeaders([ + if (!$device->getNextPlaylistItem()) { + try { + $response = Http::withHeaders([ 'id' => $device->mac_address, 'access-token' => $device->api_key, 'width' => 800, @@ -78,17 +35,64 @@ class FetchProxyCloudResponses implements ShouldQueue 'fw-version' => $device->last_firmware_version, 'accept-encoding' => 'identity;q=1,chunked;q=0.1,*;q=0', 'user-agent' => 'ESP32HTTPClient', - ])->post(config('services.trmnl.proxy_base_url').'/api/log', $device->last_log_request); + ])->get(config('services.trmnl.proxy_base_url') . '/api/display'); $device->update([ - 'last_log_request' => null, + 'proxy_cloud_response' => $response->json(), + ]); + + $imageUrl = $response->json('image_url'); + $filename = $response->json('filename'); + + \Log::info('Response data: ' . $imageUrl); + if (isset($imageUrl)) { + try { + $imageContents = Http::get($imageUrl)->body(); + if (!Storage::disk('public')->exists("images/generated/{$filename}.bmp")) { + Storage::disk('public')->put( + "images/generated/{$filename}.bmp", + $imageContents + ); + } + + $device->update([ + 'current_screen_image' => $filename, + ]); + } catch (\Exception $e) { + Log::error("Failed to download and save image for device: {$device->mac_address}", [ + 'error' => $e->getMessage(), + ]); + } + } + + Log::info("Successfully updated proxy cloud response for device: {$device->mac_address}"); + + if ($device->last_log_request) { + Http::withHeaders([ + 'id' => $device->mac_address, + 'access-token' => $device->api_key, + 'width' => 800, + 'height' => 480, + 'rssi' => $device->last_rssi_level, + 'battery_voltage' => $device->last_battery_voltage, + 'refresh-rate' => $device->default_refresh_interval, + 'fw-version' => $device->last_firmware_version, + 'accept-encoding' => 'identity;q=1,chunked;q=0.1,*;q=0', + 'user-agent' => 'ESP32HTTPClient', + ])->post(config('services.trmnl.proxy_base_url') . '/api/log', $device->last_log_request); + + $device->update([ + 'last_log_request' => null, + ]); + } + + } catch (\Exception $e) { + Log::error("Failed to fetch proxy cloud response for device: {$device->mac_address}", [ + 'error' => $e->getMessage(), ]); } - - } catch (\Exception $e) { - Log::error("Failed to fetch proxy cloud response for device: {$device->mac_address}", [ - 'error' => $e->getMessage(), - ]); + } else { + Log::info("Skipping device: {$device->mac_address} as it has a pending playlist item."); } }); }