index->getRepository($repository); $blob = $repository->getBlob($commitish); $commit = $repository->getCommit($blob->getHash()); $file = File::createFromBlob($blob); if ($file->isBinary()) { $response = new Response($file->getContents()); $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $file->getName()); $response->headers->set('Content-Disposition', $disposition); $response->headers->set('Content-Type', $file->getMimeType()); return $response; } return new Response($this->templating->render('Blob/show.html.twig', [ 'repository' => $repository, 'commit' => $commit, 'blob' => $blob, 'file' => $file, ])); } public function showRaw(string $repository, string $commitish): Response { $repository = $this->index->getRepository($repository); $blob = $repository->getBlob($commitish); $file = File::createFromBlob($blob); $response = new Response($file->getContents()); $response->headers->set('Content-Type', $file->getMimeType()); if ($file->isBinary()) { $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $file->getName()); $response->headers->set('Content-Disposition', $disposition); } return $response; } public function blame(string $repository, string $commitish): Response { $repository = $this->index->getRepository($repository); $blob = $repository->getBlob($commitish); $blame = $repository->getBlame($commitish); return new Response($this->templating->render('Blob/blame.html.twig', [ 'repository' => $repository, 'blame' => $blame, 'blob' => $blob, ])); } public function showHistory(Request $request, string $repository, string $commitish): Response { $page = (int) $request->query->get('page', 1); $perPage = (int) $request->query->get('perPage', $this->perPage); $repository = $this->index->getRepository($repository); $blob = $repository->getBlob($commitish); $commits = $repository->getCommits($commitish, $page, $perPage); $commitGroups = []; foreach ($commits as $commit) { $commitGroups[$commit->getCommitedAt()->format('Y-m-d')][] = $commit; } return new Response($this->templating->render('Blob/history.html.twig', [ 'repository' => $repository, 'blob' => $blob, 'commitGroups' => $commitGroups, 'commitish' => $commitish, 'page' => $page, 'nextPage' => $page + 1, 'previousPage' => $page - 1, 'perPage' => $perPage, ])); } }