Ejemplo n.º 1
0
 public static GhRepository ToModel(Octokit.Repository repo)
 {
     return(new GhRepository()
     {
         Name = repo.Name,
         Description = repo.Description,
         ForksCount = repo.ForksCount,
         OpenIssuesCount = repo.OpenIssuesCount,
         StargazersCount = repo.StargazersCount,
         OwnerLogin = repo.Owner.Login
     });
 }
Ejemplo n.º 2
0
 public RepositoryViewController(
     string owner,
     string repositoryName,
     Octokit.Repository repository = null)
     : this()
 {
     ViewModel = new RepositoryViewModel();
     ViewModel.Init(new RepositoryViewModel.NavObject {
         Username = owner, Repository = repositoryName
     });
     ViewModel.Repository = repository;
 }
Ejemplo n.º 3
0
        public MutationTests()
        {
            _ticks    = DateTime.Now.Ticks.ToString();
            _repoName = $"TestProject_{_ticks}";

            _gitHubClient = GetV3GitHubClient();
            _repository   = _gitHubClient.Repository.Create(new NewRepository(_repoName)).Result;

            var repositoryQuery = new Query().Repository(Helper.Username, _repoName)
                                  .Select(r => r.Id);

            _repositoryId = Connection.Run(repositoryQuery).Result;
        }
Ejemplo n.º 4
0
 public GitHubRepository(Octokit.Repository repository)
     : base(
         repository.Name,
         repository.Archived,
         repository.Permissions != null ?
         new UserPermissions(repository.Permissions.Admin, repository.Permissions.Push, repository.Permissions.Pull) : null,
         GithubUriHelpers.Normalise(repository.CloneUrl),
         new User(repository.Owner.Login, repository.Owner.Name, repository.Owner.Email),
         repository.Fork,
         repository.Parent != null ?
         new GitHubRepository(repository.Parent) : null
         )
 {
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RemoteRepositoryModel"/> class.
 /// </summary>
 /// <param name="repository">The source octokit repository.</param>
 public RemoteRepositoryModel(Octokit.Repository repository)
     : base(repository.Name, repository.CloneUrl)
 {
     Id     = repository.Id;
     IsFork = repository.Fork;
     SetIcon(repository.Private, IsFork);
     OwnerAccount  = new Account(repository.Owner);
     DefaultBranch = new BranchModel(repository.DefaultBranch, this);
     Parent        = repository.Parent != null ? new RemoteRepositoryModel(repository.Parent) : null;
     if (Parent != null)
     {
         Parent.DefaultBranch.DisplayName = Parent.DefaultBranch.Id;
     }
 }
Ejemplo n.º 6
0
        public void Clone()
        {
            async void OnSelected(object sender, RepoEventArgs e)
            {
                GitHubRepo repo = await GitManager.Client.Repository.Get(e.Owner, e.Name);

                await CloneAsync(repo);
            }

            var repoWindow = new RepoWindow();

            repoWindow.Selected += OnSelected;

            repoWindow.Show();
        }
Ejemplo n.º 7
0
        public async Task CloneAsync(GitHubRepo repo)
        {
            async void OnSelected(object sender, CloneEventArgs e)
            {
                await CloneAsync(repo, e.BranchName, e.Path);
            }

            var cloneWindow = new CloneWindow();

            await cloneWindow.InitializeAsync(repo);

            cloneWindow.Selected += OnSelected;

            cloneWindow.Show();
        }
Ejemplo n.º 8
0
        public async Task CloneAsync(GitHubRepo repo, string branchName, string path)
        {
            RepositoryManager.RepositoryPath = path;

            await repo.CloneAsync(branchName, RepositoryManager.RepositoryPath);

            await SelectRepository(repo, branchName);

            if (!xRepositoryGrid.IsEnabled)
            {
                xRepositoryGrid.IsEnabled = true;
            }

            MessageBox.Show("Cloned the repository successfully.", MainTitle, MessageBoxButton.OK, MessageBoxImage.Information);
        }
Ejemplo n.º 9
0
        internal RepositoryItemViewModel(Octokit.Repository repository, bool showOwner, Action<RepositoryItemViewModel> gotoCommand)
        {
            if (!string.IsNullOrEmpty(repository.Description) && repository.Description.IndexOf(':') >= 0)
                Description = Emojis.FindAndReplace(repository.Description);
            else
                Description = repository.Description;

            Repository = repository;
            Name = repository.Name;
            Owner = repository.Owner?.Login ?? string.Empty;
            Avatar = new GitHubAvatar(repository.Owner?.AvatarUrl);
            Stars = repository.StargazersCount.ToString();
            Forks = repository.ForksCount.ToString();
            ShowOwner = showOwner;
            GoToCommand = ReactiveCommand.Create().WithSubscription(x => gotoCommand(this));
        }
Ejemplo n.º 10
0
        internal RepositoryItemViewModel(Octokit.Repository repository, bool showOwner, Action <RepositoryItemViewModel> gotoCommand)
        {
            if (!string.IsNullOrEmpty(repository.Description) && repository.Description.IndexOf(':') >= 0)
            {
                Description = Emojis.FindAndReplace(repository.Description);
            }
            else
            {
                Description = repository.Description;
            }

            Repository  = repository;
            Name        = repository.Name;
            Owner       = repository.Owner?.Login ?? string.Empty;
            Avatar      = new GitHubAvatar(repository.Owner?.AvatarUrl);
            Stars       = repository.StargazersCount.ToString();
            Forks       = repository.ForksCount.ToString();
            ShowOwner   = showOwner;
            GoToCommand = ReactiveCommand.Create().WithSubscription(x => gotoCommand(this));
        }
Ejemplo n.º 11
0
        async Task LoadRepo()
        {
            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
            try
            {
                await _storage.SetWorkingRepo(RepoId);
            }
            catch (Exception e)
            {
                UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                OpenRepoSelector();
                return;
            }
            _repo = await _storage.GetRepo(RepoId);

            Title = _repo.Name;
            NavigationItem.BackBarButtonItem = new UIBarButtonItem(Title.Truncate(7), UIBarButtonItemStyle.Plain, null);

            var observableIssues = _storage.GetIssues();

            observableIssues.Subscribe(UpdateIssues, onCompleted:  DoneLoadingIssues);
        }
Ejemplo n.º 12
0
        public RepositoryItemViewModel(Octokit.Repository repository, bool showOwner, bool showDescription, Action <RepositoryItemViewModel> gotoCommand)
        {
            if (showDescription)
            {
                if (!string.IsNullOrEmpty(repository.Description) && repository.Description.IndexOf(':') >= 0)
                {
                    Description = Emojis.FindAndReplace(repository.Description);
                }
                else
                {
                    Description = repository.Description;
                }
            }
            else
            {
                Description = null;
            }

            Repository  = repository;
            ShowOwner   = showOwner;
            GoToCommand = ReactiveCommand.Create(() => gotoCommand?.Invoke(this));
        }
Ejemplo n.º 13
0
        /// <inheritdoc />
        public async Task <ILocalRepository> GetRepository(Octokit.Repository repository, Func <int, Task> onCloneProgress, Func <Task> onOperationBlocked, CancellationToken cancellationToken)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            var repoPath = ioManager.ConcatPath(repository.Owner.Login, repository.Name);

            TaskCompletionSource <object> usageTask = null;

            try
            {
                return(await TryLoadRepository(repoPath, onOperationBlocked, tcs => usageTask = tcs, cancellationToken).ConfigureAwait(false));
            }
            catch (LibGit2SharpException e)
            {
                logger.LogWarning(e, "Failed to load repository {0}/{1}! Cloning...", repository.Owner.Login, repository.Name);
            }

            //so the repo failed to load and now we're holding our queue spot in usageTask
            //reclone it
            try
            {
                await ioManager.DeleteDirectory(repoPath, cancellationToken).ConfigureAwait(false);

                await ioManager.CreateDirectory(repoPath, cancellationToken).ConfigureAwait(false);

                await repositoryOperations.Clone(repository.CloneUrl, ioManager.ResolvePath(repoPath), onCloneProgress, cancellationToken).ConfigureAwait(false);

                return(await localRepositoryFactory.CreateLocalRepository(ioManager.ResolvePath(repoPath), usageTask, cancellationToken).ConfigureAwait(false));
            }
            catch
            {
                //ok we can't do anything else, clear our queue spot
                usageTask.SetResult(null);
                throw;
            }
        }
Ejemplo n.º 14
0
        public static MyIssues.Models.Repository Map(this Octokit.Repository repo)
        {
            var l = new Models.Repository
            {
                CreatedAt       = repo.CreatedAt,
                Description     = repo.Description,
                FullName        = repo.FullName,
                HasIssues       = repo.HasIssues,
                Homepage        = repo.Homepage,
                Id              = repo.Id,
                Language        = repo.Language,
                Name            = repo.Name,
                OpenIssuesCount = repo.OpenIssuesCount,
                Owner           = repo.Owner.Login,
                IsPrivate       = repo.Private,
                PushedAt        = repo.PushedAt,
                StargazersCount = repo.StargazersCount,
                UpdatedAt       = repo.UpdatedAt,
                Url             = repo.Url
            };

            return(l);
        }
Ejemplo n.º 15
0
 public Repository(Octokit.Repository repository, bool valid)
 {
     Id               = repository.Id;
     NodeId           = repository.NodeId;
     OwnerId          = repository.Owner.Id;
     Name             = repository.Name ?? throw new ArgumentNullException(nameof(repository.Name));
     Description      = repository.Description ?? string.Empty;
     Language         = repository.Language ?? string.Empty;
     LicenseKey       = repository.License != null ? repository.License.Key : null;
     SubscribersCount = repository.SubscribersCount;
     StargazersCount  = repository.StargazersCount;
     ForksCount       = repository.ForksCount;
     Fork             = repository.Fork;
     Archived         = repository.Archived;
     HtmlUrl          = repository.HtmlUrl ?? string.Empty;
     ApiUrl           = repository.Url ?? string.Empty;
     CreatedAt        = repository.CreatedAt.DateTime;
     UpdatedAt        = repository.UpdatedAt.DateTime;
     ParentId         = repository.Parent != null ? repository.Parent.Id : -1;
     SourceId         = repository.Source != null ? repository.Source.Id : -1;
     FetchedAt        = DateTime.Now;
     Valid            = valid;
 }
Ejemplo n.º 16
0
        private async Task LoadRepo(long repoId)
        {
            progress_horizontal.Visibility    = ViewStates.Visible;
            _issuesListView.IsLoading         = true;
            progress_horizontal.Indeterminate = true;
            try
            {
                await _storage.SetWorkingRepo(repoId);
            }
            catch (Exception e)
            {
                OpenRepoSelector();
                return;
            }
            _repo = await _storage.GetRepo(repoId);

            Title = _repo.Name;
            var observableIssues = _storage.GetIssues();

            observableIssues.Subscribe(UpdateIssues);

            var adapter = new IssuesAdapter(new List <Models.Issue>());

            adapter.OnIssueSelected += (selected) =>
            {
                Intent intent = new Intent(this, typeof(IssueMainActivity));
                intent.PutExtra("id", selected.Id);
                intent.PutExtra("number", selected.Number);
                intent.PutExtra("title", selected.Title);
                StartActivity(intent);
            };

            _issuesListView.IsLoading = false;
            _issuesListView.SetAdapter(adapter);

            progress_horizontal.Visibility = ViewStates.Gone;
        }
Ejemplo n.º 17
0
 internal RepositoryItemViewModel(Octokit.Repository repository, bool showOwner, Action <RepositoryItemViewModel> gotoCommand)
     : this(repository.Name, repository.Owner.Login, repository.Owner.AvatarUrl,
            repository.Description, repository.StargazersCount, repository.ForksCount, showOwner, gotoCommand)
 {
 }
Ejemplo n.º 18
0
 public static async Task CloneAsync(this GitHubRepo repo, string branchName, string path)
 {
     await Task.Run(() => GitManager.Clone(repo.CloneUrl, branchName, path));
 }
Ejemplo n.º 19
0
        public IHttpActionResult ConfirmWebsite(string websiteId)
        {
            ew.common.EwhLogger.Common.Debug("START CONFIRM WEBSITE: " + websiteId);
            if (ModelState.IsValid)
            {
                var ewhWebsite = _websiteManager.GetEwhWebsite(websiteId);
                if (ewhWebsite == null)
                {
                    return(NotFound());
                }
                var githubManager = new GitHubManager();
                Octokit.Repository gitRepository = null;
                //create github repository
                if (string.IsNullOrEmpty(ewhWebsite.Git))
                {
                    if (githubManager.CreateRepository(ewhWebsite.RepositoryName, ewhWebsite.DisplayName).Result)
                    {
                        gitRepository  = githubManager.RepositoryAdded;
                        ewhWebsite.Git = githubManager.RepositoryAdded.CloneUrl;
                        ewhWebsite.Save();
                    }
                    else
                    {
                        EwhLogger.Common.Debug(string.Format("Create Repository Failed: {0} - {1}", ewhWebsite.RepositoryName, ewhWebsite.DisplayName));
                        return(NoOK("Can not create github repository"));
                    }
                }
                else
                {
                    gitRepository = githubManager.GetRepository(repoName: ewhWebsite.RepositoryName).Result;
                }

                if (string.IsNullOrEmpty(ewhWebsite.Source))
                {
                    ewhWebsite.InitGogSource();
                }
                if (string.IsNullOrEmpty(ewhWebsite.Source))
                {
                    return(NoOK("Source_Empty"));
                }

                // add web-hook to demo & production server
                var ewhGogsSource     = new EwhSource();
                var ewhAccountAsOwner = _accountManager.GetEwhAccount(ewhWebsite.GetOwnerId());
                if (ewhAccountAsOwner != null)
                {
                    ewhGogsSource.CreateWebHook(new EwhSource.CreateWebHookDto(ewhAccountAsOwner.UserName, ewhWebsite.RepositoryName));

                    ewhGogsSource.CreateWebHook(new EwhSource.CreateWebHookDto(ewhAccountAsOwner.UserName, ewhWebsite.RepositoryName, ew.config.ProductionServer.WebHookUrl, ew.config.ProductionServer.SecretKey));
                }

                // create sub domain
                var websiteDomain     = string.Empty;
                var subDomainName     = string.Format("{0}-{1}.{2}", ewhAccountAsOwner.UserName, ewhWebsite.Name, ew.config.CloudflareInfo.EwhDomain).ToLower();
                var cloudflareManager = new CloudflareManager();
                if (cloudflareManager.CreateDNSRecord(ew.config.CloudflareInfo.EwhCloudflareZoneId, new cloudflare_wrapper.Models.UpdateDNSRecordDto()
                {
                    Type = "CNAME", Name = subDomainName, Content = "easywebhub.github.io"
                }))
                {
                    websiteDomain = cloudflareManager.DNSRecordAdded.name;
                }
                else
                {
                }

                if (gitRepository != null)
                {
                    var gitUrlIncludePass  = githubManager.GetGitUrlIncludePassword(ewhWebsite.Git);
                    var sourceRepoUrl      = ewhWebsite.Source;
                    var ewhGitHookListener = new EwhGitHookListener();
                    var demoGitHook        = new git_hook_listener.Models.CreateGitHookListenerConfigDto()
                    {
                        GitHookListenerBaseUrl = ew.config.DemoServer.BaseUrl,
                        repoUrl     = sourceRepoUrl,
                        branch      = "gh-pages",
                        cloneBranch = "gh-pages",
                        path        = string.Format("repositories/{0}", gitRepository.Name),
                        args        = new List <string>(),
                        then        = new List <git_hook_listener.Models.RepoCommand>()
                    };
                    demoGitHook.then.Add(new git_hook_listener.Models.RepoCommand()
                    {
                        command = "git", args = new List <string>()
                        {
                            "remote", "add", "github", gitUrlIncludePass
                        }, options = new git_hook_listener.Models.RepoCommandOption()
                        {
                            cwd = demoGitHook.path
                        }
                    });
                    demoGitHook.then.Add(new git_hook_listener.Models.RepoCommand()
                    {
                        command = "git", args = new List <string>()
                        {
                            "push", "--force", "github", "HEAD:gh-pages"
                        }, options = new git_hook_listener.Models.RepoCommandOption()
                        {
                            cwd = demoGitHook.path
                        }
                    });

                    if (ewhGitHookListener.CreateGitHookListernerConfig(demoGitHook))
                    {
                        ewhWebsite.AddStagging(new UpdateDeploymentEnvironmentToWebsite()
                        {
                            Url = websiteDomain, Git = sourceRepoUrl, HostingFee = HostingFees.Free.ToString(), Name = "EasyWeb Environment"
                        });
                    }

                    var productionGitHook = new git_hook_listener.Models.CreateGitHookListenerConfigDto()
                    {
                        GitHookListenerBaseUrl = ew.config.ProductionServer.BaseUrl,
                        repoUrl     = sourceRepoUrl,
                        branch      = "master",
                        cloneBranch = "master",
                        path        = string.Format("repositories/{0}", gitRepository.Name)
                    };
                    productionGitHook.then.Add(new git_hook_listener.Models.RepoCommand()
                    {
                        command = "git", args = new List <string>()
                        {
                            "remote", "add", "github", gitUrlIncludePass
                        }, options = new git_hook_listener.Models.RepoCommandOption()
                        {
                            cwd = productionGitHook.path
                        }
                    });
                    productionGitHook.then.Add(new git_hook_listener.Models.RepoCommand()
                    {
                        command = "git", args = new List <string>()
                        {
                            "push", "--force", "github", "gh-pages"
                        }, options = new git_hook_listener.Models.RepoCommandOption()
                        {
                            cwd = productionGitHook.path
                        }
                    });

                    if (ewhGitHookListener.CreateGitHookListernerConfig(productionGitHook))
                    {
                        ewhWebsite.AddProduction(new UpdateDeploymentEnvironmentToWebsite()
                        {
                            Git = sourceRepoUrl, HostingFee = HostingFees.Basic.ToString(), Name = "Production Enviroment"
                        });
                    }
                }
                return(Ok(new WebsiteDetailDto(ewhWebsite)));
            }
            return(BadRequest());
        }
Ejemplo n.º 20
0
        public async Task <string> GetRepositoryDescriptionAsync(string repoOwner, string repoName)
        {
            Octokit.Repository repo = await client.Repository.Get(repoOwner, repoName);

            return(repo.Description);
        }
Ejemplo n.º 21
0
 public static void Clone(this GitHubRepo repo, string branchName, string path)
 {
     GitManager.Clone(repo.CloneUrl, branchName, path);
 }
Ejemplo n.º 22
0
 public RepositoryViewController(Octokit.Repository repository)
     : this(repository.Owner.Login, repository.Name, repository)
 {
 }