Beispiel #1
0
 internal UserItemViewModel(Octokit.User user, Action <UserItemViewModel> gotoAction)
 {
     Login       = user.Login;
     Name        = user.Name;
     Avatar      = new GitHubAvatar(user.AvatarUrl);
     GoToCommand = ReactiveCommand.Create(() => gotoAction?.Invoke(this));
 }
Beispiel #2
0
        public void Update(Octokit.User user)
        {
            header.Text = "GITHUB";

            login.Text = user.Login;
            name.Text  = user.Name;
        }
Beispiel #3
0
        private void _Commit(Namespace @namespace, string k, Record o, Record n, User user)
        {
            var verb = "修改";

            if (o is null)
            {
                verb = "添加";
            }
            else if (n is null)
            {
                verb = "删除";
            }

            var message = $@"{verb} {@namespace.ToString().ToLower()}: '{k}' - '{(n ?? o).Name.Raw}'.

|     | 原始标签 | 名称 | 描述 | 外部链接 |
| --- | -------- | ---- | ---- | -------- |
| 修改前 {o?.ToString(k) ?? "| | | | |"}
| 修改后 {n?.ToString(k) ?? "| | | | |"}";

#if !DEBUG
            _RepoClient.Commit(message, user.ToGitIdentity());
            _RepoClient.Push();
#endif
        }
 private static Attachment CreateCard(Octokit.User profile) =>
 new ThumbnailCard()
 {
     Title   = profile.Login,
     Images  = new[] { new CardImage(url: profile.AvatarUrl) },
     Buttons = new[] { new CardAction(ActionTypes.OpenUrl, @"Click to view", value: profile.HtmlUrl) }
 }.ToAttachment();
Beispiel #5
0
 public User(Octokit.User user, bool valid) : base(user, valid)
 {
     SiteAdmin   = user.SiteAdmin;
     Suspended   = user.Suspended;
     SuspendedAt = user.SuspendedAt.HasValue ? user.SuspendedAt.Value.DateTime : DateTime.MinValue;
     UpdatedAt   = user.UpdatedAt.DateTime;
 }
 internal IssueAssigneeItemViewModel(Octokit.User user)
 {
     Name        = user.Login;
     Avatar      = new GitHubAvatar(user.AvatarUrl);
     GoToCommand = ReactiveCommand.Create()
                   .WithSubscription(_ => IsSelected = !IsSelected);
 }
Beispiel #7
0
 public GitHubAccount(Octokit.User user = null)
 {
     if (user != null)
     {
         Update(user);
     }
 }
Beispiel #8
0
        async void OnSettingsClick(object sender, EventArgs e)
        {
            bool showing = ContentView.Settings.Toggle();

            if (showing)
            {
                if (HubClient.Instance.IsAuthenticated)
                {
                    ContentView.Settings.SettingsContent.GithubInfo.IsVisible = true;

                    ContentView.Settings.SettingsContent.ShowLoading();

                    Octokit.User user = await HubClient.Instance.GetCurrentUser();

                    ContentView.Settings.SettingsContent.GithubInfo.Update(user);

                    ContentView.Settings.SettingsContent.HideLoading();

                    Stream stream = await HubClient.Instance.GetUserAvatar(user.AvatarUrl);

                    ContentView.Settings.SettingsContent.GithubInfo.Update(stream);
                }
                else
                {
                    ContentView.Settings.SettingsContent.GithubInfo.IsVisible = false;
                    Console.WriteLine("Github not authenticated");
                }
#if __IOS__
                // TODO Get real drive information
                ContentView.Settings.SettingsContent.DriveInfo.Update("Nuti Tab", "*****@*****.**", "icon_avatar_template.png");
#elif __ANDROID__
#endif
            }
        }
        async Task LoadConnections(ObservableCollection <IConnection> result)
        {
            try
            {
                foreach (var c in await cache.Load())
                {
                    var       client = CreateClient(c.HostAddress);
                    User      user   = null;
                    Exception error  = null;

                    try
                    {
                        user = await loginManager.LoginFromCache(c.HostAddress, client);
                    }
                    catch (Exception e)
                    {
                        error = e;
                    }

                    var connection = new Connection(c.HostAddress, c.UserName, user, error);

                    result.Add(connection);
                    await usageTracker.IncrementCounter(x => x.NumberOfLogins);
                }
            }
            finally
            {
                loaded.SetResult(null);
            }
        }
Beispiel #10
0
        public ActionResult <Record> Put(
            [SingleNamespace] Namespace @namespace,
            [AcceptableRaw] string raw,
            [AcceptableRecord, FromBody] Record record,
            [FromHeader] User user)
        {
            var dic      = _Database[@namespace];
            var replaced = dic.Find(raw);

            if (replaced is null)
            {
                return(NotFound(new { record = "Record with same 'raw' is not found in the wiki, use POST to insert the record." }));
            }

            dic.AddOrReplace(raw, record);
            dic.Save();

            if (record.ToString(raw) == replaced.ToString(raw))
            {
                return(NoContent());
            }

            _Commit(@namespace, raw, replaced, record, user);
            return(Ok(record));
        }
Beispiel #11
0
 public static User ToModel([NotNull] this Octokit.User user) =>
 new User
 {
     DisplayName = user.Name,
     Login       = user.Login,
     InfoUrl     = user.HtmlUrl
 };
Beispiel #12
0
 public static GitHubUser ToGitHubUser(this Octokit.User user)
 {
     return(new GitHubUser()
     {
         Name = user.Name,
         Login = user.Login,
     });
 }
Beispiel #13
0
        public UserModel FetchUser(string login)
        {
            Octokit.User o_user = GitHubAPI.Instance.User_GetByLogin(login);
            if (o_user == null || o_user.Type != Octokit.AccountType.User)
            {
                return(null);
            }

            User user = new User(o_user, true);

            DatabaseManagerWeb.Instance.Account_InsertOrUpdate(user);

            List <RepositoryModel>             repoModels = null;
            IReadOnlyList <Octokit.Repository> o_repos    = GitHubAPI.Instance.Repositories_GetAllForUser(login, 1);

            if (o_repos != null)
            {
                List <Repository> repos = o_repos.Select(e => new Repository(e, true)).ToList();
                DatabaseManagerWeb.Instance.Repository_InsertOrUpdate(repos);

                repoModels = repos.Select(repo => new RepositoryModel
                {
                    Name        = repo.Name,
                    OwnerName   = login,
                    Description = repo.Description,
                    Language    = repo.Language,
                    Star        = repo.StargazersCount,
                    Fork        = repo.ForksCount,
                    HtmlUrl     = repo.HtmlUrl,
                    Reference   = $"/account/user?login={login}"
                }).ToList();
            }

            int totalStar = o_repos.Select(e => e.StargazersCount).Sum();
            int totalFork = o_repos.Select(e => e.ForksCount).Sum();

            var userModel = new UserModel
            {
                AvatarUrl        = user.AvatarUrl,
                Name             = user.Login,
                Star             = totalStar,
                Fork             = totalFork,
                Follower         = user.Followers,
                Following        = user.Following,
                Email            = user.Email,
                Bio              = user.Bio,
                Company          = user.Company,
                Location         = user.Location,
                BlogUrl          = user.BlogUrl,
                HtmlUrl          = user.HtmlUrl,
                Reference        = $"/account/user?login={user.Login}",
                CreatedAt        = user.CreatedAt,
                FetchedAt        = user.FetchedAt,
                RepositoryModels = repoModels ?? new List <RepositoryModel>(),
            };

            return(userModel);
        }
Beispiel #14
0
 public UserViewController(string username, Octokit.User user = null)
     : this()
 {
     ViewModel = new UserViewModel();
     ViewModel.Init(new UserViewModel.NavObject {
         Username = username
     });
     ViewModel.User = user;
 }
Beispiel #15
0
 public Connection(
     HostAddress hostAddress,
     Octokit.User user,
     ScopesCollection scopes)
 {
     HostAddress = hostAddress;
     this.user   = user;
     this.scopes = scopes;
     isLoggedIn  = true;
 }
Beispiel #16
0
 public Connection(
     HostAddress hostAddress,
     string username,
     Octokit.User user)
 {
     HostAddress   = hostAddress;
     this.username = username;
     this.user     = user;
     isLoggedIn    = true;
 }
Beispiel #17
0
 public Connection(
     HostAddress hostAddress,
     string userName,
     Octokit.User user,
     Exception connectionError)
 {
     HostAddress     = hostAddress;
     Username        = userName;
     User            = user;
     ConnectionError = connectionError;
 }
        private string GetUserName(Octokit.GitHubClient client, Octokit.User u)
        {
            var login = u.Login;

            if (!_userCache.ContainsKey(login))
            {
                _userCache.Add(login, string.IsNullOrEmpty(u.Name) ? client.User.Get(login).Result : u);
            }

            var user = _userCache[login];

            if (user != null)
            {
                return(user.Name);
            }

            return(null);
        }
Beispiel #19
0
        public ActionResult <Record> Delete(
            [SingleNamespace] Namespace @namespace,
            [AcceptableRaw] string raw,
            [FromHeader] User user)
        {
            var dic   = _Database[@namespace];
            var found = dic.Find(raw);

            if (found is null)
            {
                return(NotFound());
            }

            dic.Remove(raw, true);
            dic.Save();

            _Commit(@namespace, raw, found, null, user);
            return(NoContent());
        }
Beispiel #20
0
        private async Task <Octokit.Issue> UpdateIssue(Octokit.User assignee, Octokit.Milestone milestone, IEnumerable <Octokit.Label> labels)
        {
            var update = new Octokit.IssueUpdate {
                Assignee = assignee?.Login, Milestone = milestone?.Number
            };

            update.ClearLabels();
            foreach (var l in (labels ?? Enumerable.Empty <Octokit.Label>()))
            {
                update.AddLabel(l.Name);
            }

            using (_alertDialogFactory.Activate("Updating..."))
            {
                Issue = await _applicationService.GitHubClient.Issue.Update(RepositoryOwner, RepositoryName, Id, update);

                InternalEvents.Reset(await RetrieveEvents());
                return(Issue);
            }
        }
Beispiel #21
0
        public ActionResult <Record> Post(
            [SingleNamespace] Namespace @namespace,
            [AcceptableRaw] string raw,
            [AcceptableRecord, FromBody] Record record,
            [FromHeader] User user)
        {
            var dic      = _Database[@namespace];
            var replaced = dic.Find(raw);

            if (replaced != null)
            {
                return(Conflict(new { record = "Record with same 'raw' is in the wiki, use PUT to update the record." }));
            }

            dic.AddOrReplace(raw, record);
            dic.Save();

            _Commit(@namespace, raw, null, record, user);
            return(Created($"/api/database/{@namespace.ToString().ToLower()}/{raw}", record));
        }
Beispiel #22
0
        public static Account ParseAccount(Octokit.User user, bool valid)
        {
            if (user.Type.HasValue)
            {
                switch (user.Type.Value)
                {
                case Octokit.AccountType.User:
                    return(new User(user, valid));

                case Octokit.AccountType.Organization:
                    return(new Organization(user, valid));

                case Octokit.AccountType.Bot:
                default:
                    Console.WriteLine($"관리되지 않는 {nameof(Octokit.AccountType)}입니다, {user.Type.Value}");
                    return(new User(user, valid));
                }
            }
            else
            {
                Console.WriteLine($"{nameof(Octokit.AccountType)}이 null입니다, {nameof(user.Login)}: {user.Login}");
                return(new User(user, valid));
            }
        }
        async void Connect(string githubUrl, string githubToken, string todoistToken)
        {
            m_client             = new Octokit.GitHubClient(new Octokit.ProductHeaderValue("github-todoist"), new Uri(githubUrl));
            m_client.Credentials = new Octokit.Credentials(githubToken);

            m_currentUser = await m_client.User.Current();

            GithubUserName.Content    = String.Format("Connected: {0}", m_currentUser.Login);
            GithubUserName.Foreground = Brushes.Green;

            var allRepos = await m_client.Repository.GetAllForCurrent();

            Repository.Items.Clear();
            foreach (var repo in allRepos)
            {
                var repoItem = new RepositoryItem()
                {
                    name = repo.FullName, id = repo.Id
                };
                Repository.Items.Add(repoItem);
            }

            m_todoistClient = new Todoist.Net.TodoistClient(todoistToken);

            var projects = await m_todoistClient.Projects.GetAsync();

            TodoistProjects.Items.Clear();
            foreach (var project in projects)
            {
                var todoistItem = new TodoistItem()
                {
                    name = project.Name, id = project.Id
                };
                TodoistProjects.Items.Add(todoistItem);
            }
        }
Beispiel #24
0
 public GhUser(Octokit.User source)
 {
     BasicMemberMapping(source, this);
 }
Beispiel #25
0
 public UserViewController(Octokit.User user)
     : this(user.Login, user)
 {
 }
Beispiel #26
0
 public void Update(Octokit.User user)
 {
     Id          = user.Id.ToString();
     DisplayName = user.Name;
     GitHubUser  = user;
 }
 private string GitHubUser2ClubHouseUser(Octokit.User githubUser)
 {
     return(GitHubUser2ClubHouseUser(githubUser.Login));
 }
Beispiel #28
0
 public User(Octokit.User user)
 {
     MainUser = user;
     Id       = user.Id;
     Login    = user.Login;
 }
Beispiel #29
0
 internal UserItemViewModel(Octokit.User user, Action <UserItemViewModel> gotoAction)
 {
     User        = user;
     GoToCommand = ReactiveCommand.Create(() => gotoAction?.Invoke(this));
 }
Beispiel #30
0
 public UserViewModel Init(string username, Octokit.User user = null)
 {
     Username = username;
     User     = user;
     return(this);
 }