. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers; use DB; use FireflyIII\Transformers\UserTransformer; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use League\Fractal\Manager; use League\Fractal\Resource\Item; use League\Fractal\Serializer\JsonApiSerializer; /** * Returns basic information about this installation. * * Class AboutController. */ class AboutController extends Controller { /** * Returns system information. * * @return JsonResponse */ public function about(): JsonResponse { $search = ['~', '#']; $replace = ['\~', '# ']; $phpVersion = str_replace($search, $replace, PHP_VERSION); $phpOs = str_replace($search, $replace, PHP_OS); $currentDriver = DB::getDriverName(); $data = [ 'version' => config('firefly.version'), 'api_version' => config('firefly.api_version'), 'php_version' => $phpVersion, 'os' => $phpOs, 'driver' => $currentDriver, ]; return response()->json(['data' => $data], 200)->header('Content-Type', 'application/vnd.api+json'); } /** * Returns information about the user. * * @param Request $request * * @return JsonResponse */ public function user(Request $request): JsonResponse { $manager = new Manager(); $baseUrl = $request->getSchemeAndHttpHost() . '/api/v1'; $manager->setSerializer(new JsonApiSerializer($baseUrl)); $resource = new Item(auth()->user(), new UserTransformer($this->parameters), 'users'); return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json'); } }