<?php // this Code is Cracked by dharunMods-YouTube-Channel namespace App\Services; use App\Traits\PingServer; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; class TradeCopier { use PingServer; public function providers(): Collection|array { if (Cache::has('providers')) { return collect(Cache::get('providers')); } $response = $this->fetctApi('/master-account'); throw_if($response->failed(), \Exception::class, $response['message'] ?? 'Failed to fetch providers'); $value = $response['data']; Cache::put('providers', $value, now()->addHour()); return collect($value); } public function subscribers(): Collection|array { if (Cache::has('subscribers')) { return collect(Cache::get('subscribers')); } $response = $this->fetctApi('/trading-accounts'); throw_if($response->failed(), \Exception::class, $response['message'] ?? 'Failed to fetch subscribers'); $value = $response['data']; Cache::put('subscribers', $value, now()->addHour()); return collect($value); } public function accountMetrics(string $accountId, string $type): array { if (Cache::has("metrics-{$accountId}")) { return Cache::get("metrics-{$accountId}"); } $response = $this->fetctApi("/account-metrics/$accountId/$type"); throw_if($response->failed(), \Exception::class, $response['message'] ?? 'Failed to fetch metrics'); Cache::put("metrics-{$accountId}", $response['metrics'], now()->addHour()); return $response['metrics']; } public function membershipProfile(): array { if (Cache::has('account-profile')) { return Cache::get('account-profile'); } $account = $this->fetctApi('/account-profile'); throw_if($account->failed(), \Exception::class, $account['message'] ?? 'Failed to fetch account profile'); Cache::forever('account-profile', $account['data']); return $account['data']; } public function settings(): array { if (Cache::has('copier-settings')) { return Cache::get('copier-settings'); } $settings = $this->fetctApi('/settings'); throw_if($settings->failed(), \Exception::class, $settings['message'] ?? 'Failed to fetch settings'); Cache::put('copier-settings', $settings['data'], now()->addHour()); return $settings['data']; } }