/// <summary>
        /// Gets the achievements.
        /// </summary>
        /// <returns>The achievements.</returns>
        /// <param name="account">The developer account at issuer.</param>
        public override IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
        {
            var achievements = new List <Achievement> ();
            var baseUrl      = GetBaseUrl(account);
            var content      = GetContent(account);
            CQ  dom          = content;
            var stats        = dom[".stat-number"];

            AddAchievement(achievements, "Packages", stats[0].InnerText, baseUrl);
            AddAchievement(achievements, "Packages downloads", stats[1].InnerText, baseUrl);

            var downloads = dom[".downloads"];

            if (downloads.Count() > 0)
            {
                var maxSingle = downloads.OrderByDescending(d => ParseValue(d.InnerText)).First();

                AddAchievement(
                    achievements,
                    "Max single package downloads",
                    maxSingle.InnerText,
                    "https://www.nuget.org/packages/{0}".With(
                        maxSingle.ParentNode.PreviousSibling.PreviousSibling.PreviousElementSibling.FirstChild.InnerText));
            }

            return(achievements);
        }
Example #2
0
        /// <summary>
        /// Gets the achievements.
        /// </summary>
        /// <returns>The achievements.</returns>
        /// <param name="account">The developer account at issuer.</param>
        public override IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
        {
            var achievements = new List <Achievement> ();
            var userName     = account.Username;
            var user         = GetUser(userName);

            if (user != null)
            {
                var repoRepository = new RepositoryRepository(m_requestProxy);
                var repos          = repoRepository.List(userName);
                var ownRepos       = repos.Where(r => !r.Fork && r.Owner.Login.Equals(userName, StringComparison.OrdinalIgnoreCase));

                Func <string, GitHubAchievementBuilder> c = (name) => new GitHubAchievementBuilder(name, account, Issuer);
                Action <Achievement> a = (achievement) => achievements.Add(achievement);

                a(c("Followers").User(user).Property(u => u.Followers).Link("/followers"));
                a(c("Own repositories").Repos(ownRepos).Count().Link("?tab=repositories"));

                a(c("Own repositories forks").Repos(ownRepos).Sum(r => r.Forks).Link("?tab=repositories"));
                a(c("Max single own repository forks").Repos(ownRepos).Max(r => r.ForksCount).LinkMax("/{0}/network/members", r => r.Name));

                a(c("Own repositories stars").Repos(ownRepos).Sum(r => r.StargazersCount).Link("?tab=repositories"));
                a(c("Max single own repository stars").Repos(ownRepos).Max(r => r.StargazersCount).LinkMax("/{0}/stargazers", r => r.Name));
            }

            return(achievements);
        }
Example #3
0
        /// <summary>
        /// Gets the achievements.
        /// </summary>
        /// <returns>The achievements.</returns>
        /// <param name="account">The developer account at issuer.</param>
        public override IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
        {
            var result   = new List <Achievement> ();
            var response = GetResponse(account);
            var link     = response.Request.Resource;


            var scoreAchievement = new Achievement()
            {
                Name   = "Score",
                Issuer = Issuer,
                Value  = response.Data.TotalScore,
                Link   = link
            };

            result.Add(scoreAchievement);

            var achievementsEarnedAchievement = new Achievement()
            {
                Name   = "Achievements earned",
                Issuer = Issuer,
                Value  = response.Data.Achievements.Count(a => a.DateEarned.HasValue),
                Link   = link
            };

            result.Add(achievementsEarnedAchievement);

            return(result);
        }
Example #4
0
        /// <summary>
        /// Gets the achievements.
        /// </summary>
        /// <returns>The achievements.</returns>
        /// <param name="account">The developer account at issuer.</param>
        public override IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
        {
            var achievements = new List <Achievement>();

            var user = GetUser(account);

            if (user != null)
            {
                var answers = m_client.Users.GetAnswers("stackoverflow", new int[] { user.UserId }, "!9f8L7FuTn", pagesize: 1, sort: Sort.Votes).Result.Data.Items;

                if (answers != null)
                {
                    AddAchievement(achievements, "Reputation", user.Reputation, "{0}?tab=reputation".With(user.Link));

                    var maxSingleAnswerScore = answers.OrderByDescending(a => a.Score).FirstOrDefault();

                    if (maxSingleAnswerScore != null)
                    {
                        AddAchievement(achievements, "Max single answer score", maxSingleAnswerScore.Score, maxSingleAnswerScore.Link);
                    }

                    AddAchievement(achievements, "Total answers", user.AnswerCount, user.Link);
                    AddAchievement(achievements, "Total questions", user.QuestionCount, user.Link);
                }
            }

            return(achievements);
        }
 public IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
 {
     return(new List <Achievement> ()
     {
         new Achievement()
         {
             Name = "Achievement Three"
         }
     });
 }
Example #6
0
 /// <summary>
 /// Initializes a new instance of the
 /// <see cref="DevAchievements.Infrastructure.AchievementProviders.GitHub.GitHubAchievementBuilder"/> class.
 /// </summary>
 /// <param name="name">Name.</param>
 /// <param name="account">Account.</param>
 /// <param name="issuer">Issuer.</param>
 public GitHubAchievementBuilder(string name, DeveloperAccountAtIssuer account, AchievementIssuer issuer)
 {
     m_account     = account;
     m_achievement = new Achievement()
     {
         Name   = name,
         Issuer = issuer,
         Link   = "http://github.com/{0}".With(m_account.Username)
     };
 }
Example #7
0
        /// <summary>
        /// Gets the response.
        /// </summary>
        /// <returns>The response.</returns>
        /// <param name="account">Account.</param>
        private static IRestResponse <VsaResponse> GetResponse(DeveloperAccountAtIssuer account)
        {
            var client  = new RestClient("http://channel9.msdn.com/niners");
            var request = new RestRequest("{0}/achievements/visualstudio".With(account.Username));

            request.AddParameter("json", true);

            var response = client.Get <VsaResponse> (request);

            return(response);
        }
Example #8
0
        /// <summary>
        /// Gets the user.
        /// </summary>
        /// <returns>The user.</returns>
        /// <param name="account">Account.</param>
        private User GetUser(DeveloperAccountAtIssuer account)
        {
            User user = null;

            var result = m_client.Users.GetAll("stackoverflow", "!-.CabxAv7Udo", inname: account.Username).Result;

            if (result.Data != null)
            {
                user = result.Data.Items.FirstOrDefault();
            }

            return(user);
        }
Example #9
0
        /// <summary>
        /// Gets the name of the achievement issuer.
        /// </summary>
        /// <returns>The achievement issuer name.</returns>
        /// <param name="developerAccountAtIssuer">Developer account at issuer.</param>
        public static string GetAchievementIssuerName(this DeveloperAccountAtIssuer developerAccountAtIssuer)
        {
            var service = new AchievementIssuerService();

            var issuer = service.GetAchievementIssuerById(developerAccountAtIssuer.AchievementIssuerId);

            if (issuer == null)
            {
                return(String.Empty);
            }

            return(issuer.Name);
        }
Example #10
0
        /// <summary>
        /// Gets the achievements.
        /// </summary>
        /// <returns>The achievements.</returns>
        /// <param name="account">The developer account at issuer.</param>
        public override IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
        {
            var achievements = new List <Achievement> ();

            var issuer = SupportedIssuers.First(i => i.Name.Equals(account.AchievementIssuerId));

            AddAchievement(achievements, "Test 1", 1 + s_calls, "http://localhost", issuer);
            AddAchievement(achievements, "Test 2", 2 + s_calls + 2, "http://localhost", issuer);
            AddAchievement(achievements, "Test 3", 3, "http://localhost", issuer);

            s_calls++;

            return(achievements);
        }
        /// <summary>
        /// Gets the content.
        /// </summary>
        /// <returns>The content.</returns>
        /// <param name="account">Account.</param>
        private static string GetContent(DeveloperAccountAtIssuer account)
        {
            var client = new WebClient();

            try
            {
                return(client.DownloadString(GetBaseUrl(account)));
            }
            catch (WebException ex)
            {
                LogService.Debug("NuGetAchievementProvider: error getting URL '{0}' content: {1}.", GetBaseUrl(account), ex.Message);
                return(null);
            }
        }
Example #12
0
        public IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account)
        {
            if (account.Username.Equals("DeveloperWithAchievements"))
            {
                return(new List <Achievement> ()
                {
                    new Achievement()
                    {
                        Name = "Achievement One",
                        Issuer = new AchievementIssuer("Issuer One")
                    }
                });
            }

            return(new List <Achievement> ());
        }
Example #13
0
 /// <summary>
 /// Check if developer account exists at issuer.
 /// </summary>
 /// <param name="account">The developer account at issuer.</param>
 public override bool Exists(DeveloperAccountAtIssuer account)
 {
     return(true);
 }
 /// <summary>
 /// Gets the base URL.
 /// </summary>
 /// <returns>The base URL.</returns>
 /// <param name="account">Account.</param>
 private static string GetBaseUrl(DeveloperAccountAtIssuer account)
 {
     return("https://www.nuget.org/profiles/{0}".With(account.Username));
 }
Example #15
0
 /// <summary>
 /// Check if developer account exists at issuer.
 /// </summary>
 /// <param name="account">The developer account at issuer.</param>
 public override bool Exists(DeveloperAccountAtIssuer account)
 {
     return(GetUser(account.Username) != null);
 }
 /// <summary>
 /// Check if developer account exists at issuer.
 /// </summary>
 /// <param name="account">The developer account at issuer.</param>
 public override bool Exists(DeveloperAccountAtIssuer account)
 {
     return(!String.IsNullOrEmpty(GetContent(account)));
 }
 /// <summary>
 /// Gets the achievements.
 /// </summary>
 /// <returns>The achievements.</returns>
 /// <param name="account">The developer account at issuer.</param>
 public abstract IList <Achievement> GetAchievements(DeveloperAccountAtIssuer account);
 /// <summary>
 /// Check if developer account exists at issuer.
 /// </summary>
 /// <param name="account">The developer account at issuer.</param>
 public abstract bool Exists(DeveloperAccountAtIssuer account);
Example #19
0
 /// <summary>
 /// Check if developer account exists at issuer.
 /// </summary>
 /// <param name="account">The developer account at issuer.</param>
 public override bool Exists(DeveloperAccountAtIssuer account)
 {
     return(GetResponse(account).StatusCode == HttpStatusCode.OK);
 }