Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public static RepoModel Create()
 {
     return(RepoRepository.CreateAndGet(
                UserFaker.Create(),
                "randomTitle_" + Rand.SmallInt(),
                "repoUrl_" + Rand.SmallInt(),
                RepoServiceType.GitHub
                ));
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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)));
            });
        }