public CliResult Execute() { Output("Type creator login:"******"User not found"); return(new CliResult(CliExitCode.NotFound, StrOutput)); } Output("Type repo title:"); var repoTitle = Console.ReadLine(); Output("Type repo url:"); var repoUrl = Console.ReadLine(); // TODO: get service type var repo = RepoRepository.CreateAndGet(user, repoTitle, repoUrl, RepoServiceType.GitHub); Output("Type project name:"); var projectName = Console.ReadLine(); var project = ProjectRepository.FindOrCreate(projectName, user, repo); Output("Created project:"); Output(new ProjectTransformer().Transform(project).ToString()); return(new CliResult(CliExitCode.Ok, StrOutput)); }
public static (Project project, Repo repo) ImportProject(User me, string originId) { var externalRepo = GetClient().Repository.Get(Convert.ToInt64(originId)).Result; User creator = null; if (me != null) { var token = me.ServiceAccessToken(ServiceType.GitHub); if (token.origin_user_id == "") { GitHubUserUtils.UpdateOriginUserId(me); } var originUserId = token.origin_user_id; creator = externalRepo.Owner.Id == Convert.ToInt64(originUserId) ? me : null; } Repo repository = RepoRepository.CreateAndGet( me, externalRepo.Name, externalRepo.HtmlUrl, RepoServiceType.GitHub, externalRepo.Id.ToString() ); var project = ProjectRepository.FindOrCreate(repository.title, creator, repository); if (externalRepo.Description != null) { project.UpdateCol("description", externalRepo.Description); } return(project, repository); }
public static RepoModel Create() { return(RepoRepository.CreateAndGet( UserFaker.Create(), "randomTitle_" + Rand.SmallInt(), "repoUrl_" + Rand.SmallInt(), RepoServiceType.GitHub )); }
public void Find_DataCorrect_GotServiceTypeCorrect() { var user = UserFaker.Create(); var repo = RepoRepository.CreateAndGet( user, "some_title_" + Rand.SmallInt(), "random_url_" + Rand.SmallInt(), RepoServiceType.GitLab ); repo = repo.Refresh(); Assert.AreEqual(RepoServiceType.GitLab, repo.service_type); }
public static (Project project, Repo repo) ImportProject(User me, string originId) { var tokenModel = me.ServiceAccessToken(ServiceType.GitLab); var client = new GitLabClient(tokenModel.access_token); client.SetAuthorizedUser(); if (tokenModel.origin_user_id == "") { GitLabUserUtils.UpdateOriginUserId(me); } var gitLabProject = GitlabApi.GetPublicProject(originId); if (gitLabProject == null) { return(null, null); } Repo repository = RepoRepository.CreateAndGet( me, gitLabProject.Value <string>("name"), gitLabProject.Value <string>("web_url"), RepoServiceType.GitLab, gitLabProject.Value <string>("id") ); var originUserId = tokenModel.origin_user_id; User creator = null; var projectUsers = GitlabApi.GetProjectUsers(originId); foreach (var projectUser in projectUsers.Children()) { if (originUserId == projectUser.Value <string>("id")) { creator = me; break; } } var project = ProjectRepository.FindOrCreate(repository.title, creator, repository); project.UpdateCol("description", gitLabProject.Value <string>("description")); return(project, repository); }
public RepoCrudController() { Post("/api/v1/repository/create", _ => { var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "title", "repo_url", "service_type" }), new ShouldBeCorrectEnumValue("service_type", typeof(RepoServiceType)), new ShouldNotExistInTable("repo_url", "repositories") }); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var me = UserRepository.Find(CurrentRequest.UserId); var repository = RepoRepository.CreateAndGet( me, (string)Request.Query["title"], (string)Request.Query["repo_url"], (RepoServiceType)GetRequestEnum("service_type", typeof(RepoServiceType)) ); return(HttpResponse.Item( "repository", new RepoTransformer().Transform(repository), HttpStatusCode.Created )); }); Patch("/api/v1/repository/edit", _ => { var rules = new List <IValidatorRule>() { new ExistsInTable("repo_guid", "repositories", "guid") }; if (Request.Query["repo_url"]) { rules.Add(new ShouldNotExistInTable("repo_url", "repositories")); } var errors = ValidationProcessor.Process(Request, rules); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var repo = RepoRepository.FindByGuid((string)Request.Query["repo_guid"]); repo = RepoRepository.UpdateAndRefresh(repo, new JObject() { ["title"] = (string)Request.Query["title"], ["repo_url"] = (string)Request.Query["repo_url"] }); return(HttpResponse.Item("repository", new RepoTransformer().Transform(repo))); }); Delete("/api/v1/repository/delete", _ => { var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ExistsInTable("repo_guid", "repositories", "guid"), }); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var repo = RepoRepository.FindByGuid((string)Request.Query["repo_guid"]); repo.Delete(); return(HttpResponse.Item("repository", new RepoTransformer().Transform(repo))); }); }