mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-10-16 17:53:18 +01:00
Add check for premium to telemetry and update lookup
This commit is contained in:
committed by
Constantin Graf
parent
06a2048771
commit
12cc3f27f8
@@ -15,12 +15,18 @@ use App\Models\User;
|
|||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use Log;
|
use Log;
|
||||||
|
use Nwidart\Modules\Facades\Module;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
class ApiService
|
class ApiService
|
||||||
{
|
{
|
||||||
private const string API_URL = 'https://app.solidtime.io/api/v1';
|
private const string API_URL = 'https://app.solidtime.io/api/v1';
|
||||||
|
|
||||||
|
private function isPremium(): bool
|
||||||
|
{
|
||||||
|
return Module::has('Invoicing');
|
||||||
|
}
|
||||||
|
|
||||||
public function checkForUpdate(): ?string
|
public function checkForUpdate(): ?string
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@@ -31,6 +37,7 @@ class ApiService
|
|||||||
'version' => config('app.version'),
|
'version' => config('app.version'),
|
||||||
'build' => config('app.build'),
|
'build' => config('app.build'),
|
||||||
'url' => config('app.url'),
|
'url' => config('app.url'),
|
||||||
|
'is_premium' => $this->isPremium(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($response->status() === 200 && isset($response->json()['version']) && is_string($response->json()['version'])) {
|
if ($response->status() === 200 && isset($response->json()['version']) && is_string($response->json()['version'])) {
|
||||||
@@ -62,6 +69,7 @@ class ApiService
|
|||||||
'version' => config('app.version'),
|
'version' => config('app.version'),
|
||||||
'build' => config('app.build'),
|
'build' => config('app.build'),
|
||||||
'url' => config('app.url'),
|
'url' => config('app.url'),
|
||||||
|
'is_premium' => $this->isPremium(),
|
||||||
// telemetry data
|
// telemetry data
|
||||||
'user_count' => User::count(),
|
'user_count' => User::count(),
|
||||||
'organization_count' => Organization::count(),
|
'organization_count' => Organization::count(),
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ use App\Service\ApiService;
|
|||||||
use Cache;
|
use Cache;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Illuminate\Http\Client\ConnectionException;
|
use Illuminate\Http\Client\ConnectionException;
|
||||||
|
use Illuminate\Http\Client\Request;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
@@ -32,6 +33,11 @@ class SelfHostCheckForUpdateCommandTest extends TestCase
|
|||||||
$this->assertSame(Command::SUCCESS, $exitCode);
|
$this->assertSame(Command::SUCCESS, $exitCode);
|
||||||
$output = Artisan::output();
|
$output = Artisan::output();
|
||||||
$this->assertSame('1.2.3', Cache::get('latest_version'));
|
$this->assertSame('1.2.3', Cache::get('latest_version'));
|
||||||
|
Http::assertSent(function (Request $request): bool {
|
||||||
|
$data = $request->data();
|
||||||
|
|
||||||
|
return array_key_exists('is_premium', $data) && is_bool($data['is_premium']);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_checks_for_update_fails_gracefully_if_response_has_error_status_code(): void
|
public function test_checks_for_update_fails_gracefully_if_response_has_error_status_code(): void
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use App\Console\Commands\SelfHost\SelfHostTelemetryCommand;
|
|||||||
use App\Service\ApiService;
|
use App\Service\ApiService;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Illuminate\Http\Client\ConnectionException;
|
use Illuminate\Http\Client\ConnectionException;
|
||||||
|
use Illuminate\Http\Client\Request;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use PHPUnit\Framework\Attributes\CoversClass;
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||||||
@@ -31,6 +32,11 @@ class SelfHostTelemetryCommandTest extends TestCase
|
|||||||
$this->assertSame(Command::SUCCESS, $exitCode);
|
$this->assertSame(Command::SUCCESS, $exitCode);
|
||||||
$output = Artisan::output();
|
$output = Artisan::output();
|
||||||
$this->assertSame('', $output);
|
$this->assertSame('', $output);
|
||||||
|
Http::assertSent(function (Request $request): bool {
|
||||||
|
$data = $request->data();
|
||||||
|
|
||||||
|
return array_key_exists('is_premium', $data) && is_bool($data['is_premium']);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_telemetry_sends_fails_gracefully_if_response_has_error_status_code(): void
|
public function test_telemetry_sends_fails_gracefully_if_response_has_error_status_code(): void
|
||||||
|
|||||||
Reference in New Issue
Block a user