public GitHubUserViewModel ToGitHubUserViewModel(GitUser gitUser, IEnumerable <GitRepository> gitRepository)
        {
            var gitHubUserViewModel = new GitHubUserViewModel
            {
                UserName       = gitUser.login,
                AvatarUrl      = gitUser.avatar_url,
                Location       = gitUser.location,
                RepositoryList = gitRepository.Select(i => GetGitHubRepositoryViewModel(i))
            };

            return(gitHubUserViewModel);
        }
        public HttpResponseMessage GetUser([FromBody] User user)
        {
            var vm        = new GitHubUserViewModel();
            var msg       = new JsonMsg();
            var formatter = new JsonMediaTypeFormatter();

            try
            {
                if (string.IsNullOrEmpty(user.UserName))
                {
                    throw new ArgumentNullException("UserName", "Username cannot be empty");
                }

                var gitHubUser     = new UserService(new ApiHelper());
                var reposToDisplay = Convert.ToInt32(ConfigurationManager.AppSettings["UserReposToDisplay"]);

                GitHubUserModel userDetails = gitHubUser.GetUserDetails(user.UserName);

                vm.UserName           = userDetails.UserName;
                vm.AvatarUrl          = userDetails.AvatarUrl;
                vm.Location           = userDetails.Location;
                vm.GitHubRepositories = gitHubUser.GetTopXRepos(userDetails.GitHubRepositories, reposToDisplay)
                                        .Select(item => new GitHubRepoViewModel()
                {
                    RepositoryName  = item.RepositoryName,
                    RepositoryUrl   = item.RepositoryUrl,
                    StarGazersCount = item.StarGazersCount
                }).ToList();

                msg.result = !string.IsNullOrEmpty(vm.UserName);
                msg.data   = vm;
                return(Request.CreateResponse(HttpStatusCode.OK, msg, formatter));
            }

            catch (Exception ex)
            {
                Log.Error(ex);
                var errorMessage = ex.InnerException.ToString();
                return(Request.CreateResponse(errorMessage.Contains("404") ? HttpStatusCode.OK : HttpStatusCode.BadRequest, msg, formatter));
            }
        }