Exemple #1
0
        public static List <User> GetFollowerList(object followersInJson)
        {
            string followersJSON = (string)followersInJson;
            // Create followerInfo list and put there deserialized followerTaskResult
            List <FollowerInfo> followerInfo = JsonConvert.DeserializeObject <List <FollowerInfo> >(followersJSON);

            // Create list of User classes so as to add there followerinfo
            List <User> followersList = new List <User>();

            // Get followers' names and add them to the followersList
            //foreach(FollowerInfo follower in followerInfo)
            //{
            //    User temp = GitHubAgent.GetUserByURL(follower.URL);
            //    Console.WriteLine(temp.ToString());
            //    followersList.Add(temp);
            //}

            // Another way to get followers' names and add them to the followersList by Parallel
            Parallel.ForEach(followerInfo, follower =>
            {
                User temp = GitHubAgent.GetUserByURL(follower.URL);
                followersList.Add(temp);
            }
                             );
            return(followersList);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            Console.Write("Enter github account username : "******"https://api.github.com/users/{username}";

            // Create task getDataTask
            Task <User> getDataTask = new Task <User>(GitHubAgent.GetUserByURL, api);

            try
            {
                // Run the task getDataTask
                getDataTask.Start();

                GitHubAgent.LoadingWaiter(LoaderTypes.Points, getDataTask);

                // Get getDataTask's result which is User class
                User user = getDataTask.Result;

                Console.WriteLine($"Data for {user.ToString()} is ready. press Enter to show it.");
                Console.ReadKey();
                Console.WriteLine($"Country: {user.Country}");
                Console.WriteLine($"Followers: {user.Followers}, Followings: {user.Following}");

                //////// GETTING USER'S ALL REPOSITORY NAMES

                // Create task which give all repos of user
                Task <string> task = GitHubAgent.GetDataFromURLAsync(user.RepositoryURL);

                GitHubAgent.LoadingWaiter(LoaderTypes.Repository, task);

                // Get all repos in JSON format
                string allReposInJSON = task.Result;

                // Get repository list which contains Repository type classes
                List <Repository> repoList = JsonConvert.DeserializeObject <List <Repository> >(allReposInJSON);

                Console.WriteLine($"{username} repositories are ready. Click Enter to show, or Q to exit:");

                if (Console.ReadKey().Key != ConsoleKey.Q)
                {
                    //Print repo names
                    Parallel.ForEach(repoList, repo =>
                    {
                        Console.WriteLine(repo.Name);
                    }
                                     );

                    ///////// GET USER'S ALL FOLLOWERS
                    Console.WriteLine("Press Enter to see followers names.");
                    // Create another task taskForFollowers
                    Task <string> taskForFollowers = new Task <string>(GitHubAgent.GetDataFromURL, user.FollowersURL);

                    // Run the task taskForFollowers
                    taskForFollowers.Start();

                    GitHubAgent.LoadingWaiter(LoaderTypes.FollowerURL, taskForFollowers);

                    Console.WriteLine("Follower URLs are ready. Starting loading.");

                    // Get taskForFollowers task's result in string (which is the api of followers)
                    string followerTaskResult = taskForFollowers.Result;

                    Task <List <User> > followerTask = GitHubAgent.GetFollowerListAsync(followerTaskResult);

                    GitHubAgent.LoadingWaiter(LoaderTypes.Followers, followerTask);

                    foreach (var fol in followerTask.Result)
                    {
                        Console.WriteLine(fol.ToString());
                    }
                }
            }

            catch (NullReferenceException e)
            {
                Console.WriteLine(e.Message);
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
            }

            Console.ReadKey();
        }
Exemple #3
0
        public static void LoadingWaiter(LoaderTypes loader, Task task)
        {
            switch (loader)
            {
            case LoaderTypes.Points:
                while (!task.IsCompleted)
                {
                    ClearCurrentConsoleLine();
                    for (int i = 0; i < 5; i++)
                    {
                        Thread.Sleep(500);
                        Console.Write(". ");
                    }
                }
                break;

            case LoaderTypes.Followers:
                while (!task.IsCompleted)
                {
                    GitHubAgent.ClearCurrentConsoleLine();
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.Write("Followers !");
                    Thread.Sleep(400);

                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                break;

            case LoaderTypes.FollowerURL:
                while (!task.IsCompleted)
                {
                    GitHubAgent.ClearCurrentConsoleLine();
                    Thread.Sleep(300);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("* * * * * * * * * ");
                    Thread.Sleep(300);
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                break;

            case LoaderTypes.Repository:
                while (!task.IsCompleted)
                {
                    GitHubAgent.ClearCurrentConsoleLine();
                    Thread.Sleep(500);
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.Write("Repozitories !");
                    Thread.Sleep(500);
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                break;

            case LoaderTypes.Followings:
                while (!task.IsCompleted)
                {
                    GitHubAgent.ClearCurrentConsoleLine();
                    Thread.Sleep(500);
                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.Write("Followings !");
                    Thread.Sleep(500);
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                break;

            default:
                break;
            }
            Console.WriteLine();
        }