private IActionResult info_refs(IRepositoryPair pair, string service, User user) { if (pair is IApiedRepository repos) { if (service == "git-upload-pack") { if (repos.CanPull(user)) { return(Content(pair.SharedRepository.Pack(PackService.GitUploadPack), "application/x-git-upload-pack-advertisement")); } else { return(new UnauthorizedResult()); } } if (service == "git-receive-pack") { if (repos.CanPush(user)) { return(Content(pair.SharedRepository.Pack(PackService.GitReceivePack), "application/x-git-receive-pack-advertisement")); } else { return(new UnauthorizedResult()); } } } throw new ArgumentException($"Invalid service was requested: `{service}'"); }
private async Task <IActionResult> git_upload_pack(IRepositoryPair pair, User user) { if (pair is IApiedRepository repos && repos.CanPull(user)) { return(File(await pair.SharedRepository.Pack(PackService.GitUploadPack, Request.Body), "application/x-git-upload-pack-result")); } return(new UnauthorizedResult()); }
private async Task <IActionResult> git_receive_pack(IRepositoryPair pair, User user) { if (pair is IApiedRepository repos && repos.CanPush(user)) { var result = await pair.SharedRepository.Pack(PackService.GitReceivePack, Request.Body); pair.ClonedRepository.Synchronize(); return(File(result, "application/x-git-receive-pack-result")); } return(new UnauthorizedResult()); }