Exemplo n.º 1
0
 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}'");
 }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
        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());
        }