/// <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); }
/// <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); }
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)); }
/// <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); }
/// <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); }
public Task <Repository> CreateRepository(string org, CreateRepoOption options) { throw new NotImplementedException(); }