Finish that shit

This commit is contained in:
floppydiskette 2024-08-08 15:21:30 +01:00
commit 5472d7c7c7
16 changed files with 519 additions and 297 deletions

View file

@ -2,6 +2,9 @@
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Http;
use Illuminate\View\View;
use DateTime;
@ -24,7 +27,7 @@ function returnAge(): int {
*/
public function show(): View {
return view('home', [
'age' => $this->returnAge()
'age' => $this->returnAge(),
]);
}
}

View file

@ -0,0 +1,66 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Http;
use Illuminate\View\Component;
class DiscordStatus extends Component
{
/**
* Create a new component instance.
*/
public function __construct()
{
//
}
/**
* Returns current Discord presence from Lanyard API
* @return array|mixed
*/
public function getDiscordPresence(): mixed {
// If it's already cached just return that
if (Cache::has('discord_presence')) {
return Cache::get('discord_presence');
}
$response = Http::get('https://api.lanyard.rest/v1/users/' . Config::get('services.lanyard.user_id'));
$data = $response->json();
$presence = $data["data"];
Cache::put('discord_presence', $presence, now()->addSeconds(60));
return $presence;
}
public function getOnlineStatus(): array {
$presence = $this->getDiscordPresence();
return match ($presence["discord_status"]) {
"online", "dnd" => [
"text" => "online",
"color" => "#02c83a"
],
"idle" => [
"text" => "away",
"color" => "#d77c20"
],
default => [
"text" => "offline",
"color" => "#ca3329"
],
};
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.discord-status', [
'status' => $this->getOnlineStatus(),
]);
}
}

View file

@ -0,0 +1,44 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Http;
use Illuminate\View\Component;
class Weather extends Component
{
/**
* Create a new component instance.
*/
public function __construct()
{
//
}
public function getWeatherData(): mixed {
// If it's already cached just return that
if (Cache::has('weather_data')) {
return Cache::get('weather_data');
}
$response = Http::get('http://'. Config::get('services.weatherlink') . '/v1/current_conditions');
$data = $response->json();
$conditions = $data["data"]["conditions"];
Cache::put('weather_data', $conditions, now()->addSeconds(60));
return $conditions;
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.weather', [
'conditions' => $this->getWeatherData(),
]);
}
}