private SearchCodeRequest getSearchCodeRequest(Model.SearchCodeRequestParameters parameters)
        {
            SearchCodeRequest codeRequest;

            try
            {
                codeRequest = new SearchCodeRequest(parameters.Term);
            }
            catch (Exception)
            {
                codeRequest = new SearchCodeRequest();
            }

            Language language = (Language)Enum.Parse(typeof(Language), parameters.Language);

            codeRequest.Language  = language;
            codeRequest.Path      = parameters.Path;
            codeRequest.User      = parameters.Owner;
            codeRequest.FileName  = parameters.FileName;
            codeRequest.Extension = parameters.Extension;
            codeRequest.Forks     = getBoolParameter(parameters.ForksIncluded);
            codeRequest.Size      = pickRange(parameters.SizeChoice, parameters.Size);
            codeRequest.In        = getPathIncludedParameter(parameters.PathIncluded, parameters.Term);

            return(codeRequest);
        }
        public async Task <int> getNumberOfPages(Model.SearchCodeRequestParameters requestParameters)
        {
            SearchCodeRequest codeRequest = getSearchCodeRequest(requestParameters);
            SearchCodeResult  result      = await GlobalVariables.client.Search.SearchCode(codeRequest);

            if (result.TotalCount == 0)
            {
                return(0);
            }

            if (result.TotalCount > 1000)
            {
                return(GlobalVariables.MaximumNumberOfPages);
            }

            if (result.TotalCount % codeRequest.PerPage == 0)
            {
                return(result.TotalCount / codeRequest.PerPage);
            }

            return(result.TotalCount / codeRequest.PerPage + 1);
        }
        public async Task <List <File> > searchCode(Model.SearchCodeRequestParameters requestParameters, int firstPage, int lastPage)
        {
            List <File>       files       = new List <File>();
            SearchCodeRequest codeRequest = getSearchCodeRequest(requestParameters);

            for (int i = firstPage; i <= lastPage; i++)
            {
                codeRequest.Page = i;
                SearchCodeResult result = await GlobalVariables.client.Search.SearchCode(codeRequest).ConfigureAwait(false);

                files.AddRange(result.Items.Select(file => new Model.File
                {
                    Name     = file.Name,
                    Path     = file.Path,
                    RepoName = file.Repository.Name,
                    Owner    = file.Repository.Owner.Login,
                    HtmlUrl  = file.HtmlUrl
                }).ToList());
            }

            return(files);
        }