baseUrl . $endpoint; $client = \Config\Services::curlrequest(); try { $response = $client->request('GET', $url, [ 'headers' => [ 'Authorization' => "token {$token}", 'Accept' => 'application/json', ], 'http_errors' => false, ]); if ($response->getStatusCode() !== 200) { // Return array dengan format error yang standar return [ 'success' => false, 'message' => "Gagal mengambil data dari API. Status: " . $response->getStatusCode(), 'data' => null ]; } // Return sukses dengan data yang sudah di-decode return [ 'success' => true, 'message' => 'Data berhasil diambil', 'data' => json_decode($response->getBody(), true) ]; } catch (\Exception $e) { return [ 'success' => false, 'message' => "Terjadi kesalahan cURL: " . $e->getMessage(), 'data' => null ]; } } /** * Mengambil daftar Commits * Contoh penggunaan di routes: /gitea/commits/mikael-zakaria/cobazaka */ // public function getCommits(string $owner, string $repo) // { // // Tangkap parameter branch jika ada (misal: ?sha=main) // $branch = $this->request->getGet('sha'); // $endpoint = "/repos/{$owner}/{$repo}/commits"; // if (!empty($branch)) { // $endpoint .= "?sha=" . urlencode($branch); // } // $result = $this->fetchFromGitea($endpoint); // return $this->response->setJSON($result); // } public function getCommits(string $owner, string $repo) { // Tangkap parameter query string dari JavaScript $branch = $this->request->getGet('sha'); // Atur default limit, misalnya 50 (maksimal biasanya tergantung setingan admin Gitea, umumnya 50-100) $limit = $this->request->getGet('limit') ?? 50; $page = $this->request->getGet('page') ?? 1; // Susun parameter API $queryParams = [ 'limit' => $limit, 'page' => $page ]; // Jika branch dipilih, tambahkan ke parameter if (!empty($branch)) { $queryParams['sha'] = $branch; } // Gabungkan endpoint dengan query string $endpoint = "/repos/{$owner}/{$repo}/commits?" . http_build_query($queryParams); $result = $this->fetchFromGitea($endpoint); return $this->response->setJSON($result); } /** * Mengambil daftar Branches * Contoh penggunaan di routes: /gitea/branches/mikael-zakaria/cobazaka */ public function getBranches(string $owner, string $repo) { $endpoint = "/repos/{$owner}/{$repo}/branches"; $result = $this->fetchFromGitea($endpoint); return $this->response->setJSON($result); } /** * Mengambil detail User * Contoh penggunaan di routes: /gitea/user/mikael-zakaria */ public function getUser(string $username) { $endpoint = "/users/{$username}"; $result = $this->fetchFromGitea($endpoint); return $this->response->setJSON($result); } /** * Mengambil daftar Repositori milik User * Contoh penggunaan di routes: /gitea/repos/mikael-zakaria */ public function getRepositories(string $username) { $endpoint = "/users/{$username}/repos"; $result = $this->fetchFromGitea($endpoint); return $this->response->setJSON($result); } public function index() { return view('gitea_index'); } }