public RepositoryVm getRepoFiles(String repositoryName, String baseUrl) throws IOException {
        String organizationName = ApplicationProperties.getProperties().getProperty(PropertiesConstants.GITHUB_ORGANIZATION);
        Repository repository = getRepository(organizationName, repositoryName);
        Release latestRelease = getLatestRelease(repository);
        RepositoryVm repositoryVm = createRepositoryVm(repository, baseUrl, latestRelease);
        
        HashMap<String, DataFile> repoFileData = getRepoFileData(repositoryName, baseUrl);
        List<RepositoryFileVm> repositoryFiles = new ArrayList<>();
        for (String fileName : repoFileData.keySet()) {
            if (!Utils.isDataFilePath(fileName)) {
                continue;
            }
            
            DataFile dataFile = repoFileData.get(fileName);
            RepositoryFileVm repositoryFile = new RepositoryFileVm();
            repositoryFile.setName(fileName);
            if (Utils.isCataloguePath(fileName)) {
                repositoryFile.setType(StringUtils.capitalize(DataType.CATALOGUE.toString()));
            }
            else if (Utils.isGameSytstemPath(fileName)) {
                repositoryFile.setType(StringUtils.capitalize(DataType.GAME_SYSTEM.toString()));
            }
            else if (Utils.isRosterPath(fileName)) {
                repositoryFile.setType(StringUtils.capitalize(DataType.ROSTER.toString()));
            }
            
            repositoryFile.setDataFileUrl(Utils.checkUrl(baseUrl + "/" + repository.getName() + "/" + fileName));
            repositoryFile.setIssueUrl(Utils.checkUrl(baseUrl + "/" + repository.getName() + "/" + fileName + "/issue"));
            
            String uncompressedFileName = Utils.getUncompressedFileName(fileName);
            repositoryFile.setGitHubUrl(Utils.checkUrl(repositoryVm.getGitHubUrl() + "/blob/master/" + uncompressedFileName));
            
            repositoryFile.setRevision(dataFile.getRevision());
            repositoryFile.setAuthorName(dataFile.getAuthorName());
            repositoryFile.setAuthorContact(dataFile.getAuthorContact());
            repositoryFile.setAuthorUrl(dataFile.getAuthorUrl());
            
            repositoryFiles.add(repositoryFile);
        }
        
        Collections.sort(repositoryFiles, new Comparator<RepositoryFileVm>() {
            @Override
            public int compare(RepositoryFileVm o1, RepositoryFileVm o2) {
                String o1Type = o1.getType().toLowerCase();
                String o2Type = o2.getType().toLowerCase();
                if (o1Type.equals(DataType.CATALOGUE.toString())
                        && o2Type.equals(DataType.GAME_SYSTEM.toString())) {
                    return 1;
                }
                else if (o1Type.equals(DataType.GAME_SYSTEM.toString())
                        && o2Type.equals(DataType.CATALOGUE.toString())) {
                    return -1;
                }
                
                return o1.getName().compareTo(o2.getName());
            }
        });
        
        repositoryVm.setRepositoryFiles(repositoryFiles);
        return repositoryVm;
    }