コード例 #1
0
        /// <summary>
        /// Create repository
        /// </summary>
        /// <param name="owner">the organisation or user</param>
        /// <param name="createRepoOption">the options for creating repository</param>
        /// <returns>The newly created repository</returns>
        public async Task <Repository> CreateRepository(string owner, CreateRepoOption createRepoOption)
        {
            AltinnCore.RepositoryClient.Model.Repository repository = new Repository();
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AltinnCore.RepositoryClient.Model.Repository));
            string urlEnd      = AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext) == owner ? "/user/repos" : "/org/" + owner + "/repos";
            Uri    endpointUrl = new Uri(GetApiBaseUrl() + urlEnd);

            using (HttpClient client = GetApiClient())
            {
                HttpResponseMessage response = await client.PostAsJsonAsync <CreateRepoOption>(endpointUrl, createRepoOption);

                if (response.StatusCode == System.Net.HttpStatusCode.Created)
                {
                    Stream stream = await response.Content.ReadAsStreamAsync();

                    repository = serializer.ReadObject(stream) as AltinnCore.RepositoryClient.Model.Repository;
                }
                else
                {
                    _logger.LogError("User " + AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext) + " Create repository failed with statuscode " + response.StatusCode + " for " + owner + " and reponame " + createRepoOption.Name);
                }

                repository.RepositoryCreatedStatus = response.StatusCode;
            }

            return(repository);
        }
コード例 #2
0
        /// <inheritdoc />
        public async Task <Repository> CreateRepository(string org, CreateRepoOption options)
        {
            var    repository            = new Repository();
            string developerUserName     = AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext);
            string urlEnd                = developerUserName == org ? "user/repos" : $"org/{org}/repos";
            HttpResponseMessage response = await _httpClient.PostAsJsonAsync(urlEnd, options);

            if (response.StatusCode == HttpStatusCode.Created)
            {
                repository = await response.Content.ReadAsAsync <Repository>();

                repository.RepositoryCreatedStatus = HttpStatusCode.Created;
            }
            else if (response.StatusCode == HttpStatusCode.Conflict)
            {
                // The repository with the same name already exists, 409 from Gitea API
                repository.RepositoryCreatedStatus = HttpStatusCode.Conflict;
            }
            else
            {
                _logger.LogError("User " + AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext) +
                                 " Create repository failed with statuscode " + response.StatusCode + " for " +
                                 org + " and repo-name " + options.Name);
            }

            return(repository);
        }
コード例 #3
0
        public Task <Repository> CreateRepository(string org, CreateRepoOption options)
        {
            string     remotePath = TestDataHelper.GetTestDataRemoteRepository(org, options.Name);
            Repository repo       = new Repository
            {
                Name = options.Name
            };

            if (Directory.Exists(remotePath))
            {
                repo.RepositoryCreatedStatus = System.Net.HttpStatusCode.Conflict;
                return(Task.FromResult(repo));
            }

            Directory.CreateDirectory(remotePath);
            repo.RepositoryCreatedStatus = System.Net.HttpStatusCode.Created;

            return(Task.FromResult(repo));
        }
コード例 #4
0
        /// <inheritdoc />
        public async Task <Repository> CreateRepository(string org, CreateRepoOption createRepoOption)
        {
            Repository          repository        = new Repository();
            string              developerUserName = AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext);
            string              urlEnd            = developerUserName == org ? "user/repos" : $"org/{org}/repos";
            HttpResponseMessage response          = await _httpClient.PostAsJsonAsync(urlEnd, createRepoOption);

            if (response.StatusCode == HttpStatusCode.Created)
            {
                repository = await response.Content.ReadAsAsync <Repository>();
            }
            else
            {
                _logger.LogError("User " + AuthenticationHelper.GetDeveloperUserName(_httpContextAccessor.HttpContext) + " Create repository failed with statuscode " + response.StatusCode + " for " + org + " and reponame " + createRepoOption.Name);
            }

            repository.RepositoryCreatedStatus = HttpStatusCode.Created;

            return(repository);
        }
コード例 #5
0
        /// <summary>
        /// Create repository
        /// </summary>
        /// <param name="giteaSession"></param>
        /// <param name="org"></param>
        /// <param name="createRepoOption"></param>
        /// <returns></returns>
        public async Task <Repository> CreateRepositoryForOrg(string giteaSession, string org, CreateRepoOption createRepoOption)
        {
            AltinnCore.RepositoryClient.Model.Repository repository = null;
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AltinnCore.RepositoryClient.Model.Repository));

            Uri    giteaUrl = new Uri(_settings.ApiEndPoint + "/org/" + org + "/repos");
            Cookie cookie   = new Cookie(_settings.GiteaCookieName, giteaSession, "/", _settings.ApiEndPointHost);

            if (Environment.GetEnvironmentVariable("GiteaApiEndpoint") != null && Environment.GetEnvironmentVariable("GiteaEndpoint") != null)
            {
                giteaUrl = new Uri(Environment.GetEnvironmentVariable("GiteaApiEndpoint") + "/org/" + org + "/repos");
                new Cookie(_settings.GiteaCookieName, giteaSession, "/", Environment.GetEnvironmentVariable("GiteaEndpoint"));
            }
            CookieContainer cookieContainer = new CookieContainer();

            cookieContainer.Add(cookie);
            HttpClientHandler handler = new HttpClientHandler()
            {
                CookieContainer = cookieContainer
            };

            using (HttpClient client = new HttpClient(handler))
            {
                var response = client.PostAsJsonAsync <CreateRepoOption>(giteaUrl, createRepoOption);
                if (response.Result.StatusCode == System.Net.HttpStatusCode.Created)
                {
                    Stream stream = await response.Result.Content.ReadAsStreamAsync();

                    repository = serializer.ReadObject(stream) as AltinnCore.RepositoryClient.Model.Repository;
                }
                else if (response.Result.StatusCode == System.Net.HttpStatusCode.Forbidden ||
                         response.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized)
                {
                    // User is not logged in.
                    return(null);
                }
                else
                {
                    // Will cause an exception Temporary workaround
                    Stream stream = await response.Result.Content.ReadAsStreamAsync();

                    repository = serializer.ReadObject(stream) as AltinnCore.RepositoryClient.Model.Repository;
                }
            }

            return(repository);
        }
コード例 #6
0
 public Task <Repository> CreateRepository(string org, CreateRepoOption options)
 {
     throw new NotImplementedException();
 }