github-repos-search-kinzer
v1.0.0
Published
Create a new file with the name index.js and add the following contents inside it: const axios = require('axios'); const getRepos = async ({ username = 'myogeshchavan97', page = 1, per_page = 30 } = {}) => { try { const repos = await axios.get( `https://a
Downloads
2
Readme
Create a new file with the name index.js and add the following contents inside it:
const axios = require('axios');
const getRepos = async ({
username = 'myogeshchavan97',
page = 1,
per_page = 30
} = {}) => {
try {
const repos = await axios.get(
https://api.github.com/users/${username}/repos?page=${page}&per_page=${per_page}&sort=updated
);
return repos.data
.map((repo) => {
return {
name: repo.name,
url: repo.html_url,
description: repo.description,
stars: repo.stargazers_count
};
})
.sort((first, second) => second.stars - first.stars);
} catch (error) {
return [];
}
};
getRepos().then((repositories) => console.log(repositories)); Let's understand the code first.
You have created a getRepos function that accepts an optional object with username, page and per_page properties.
Then you used object destructuring syntax for getting those properties out of the object.
Passing an object to the function is optional so we have initialized it to default values if the object is not passed to the function like this:
{
username = 'myogeshchavan97',
page = 1,
per_page = 30
} = {}
The reason for assigning an empty object {} is to not get an error while destructuring username from the object if the object is not passed. Check out my previous article to learn about destructuring in detail.
Then inside the function, you are making a call to the GitHub API by passing the required parameters to get the repositories of the specified user sorted by the updated date.
const repos = await axios.get(
https://api.github.com/users/${username}/repos?page=${page}&per_page=${per_page}&sort=updated
);
Here, you are using async/await syntax so the getRepos function is declared as async.
Then you are selecting only the required fields from the response using the Array map method
repos.data
.map((repo) => {
return {
name: repo.name,
url: repo.html_url,
description: repo.description,
stars: repo.stargazers_count
};
})
Then that result is sorted by descending order of stars so the first element in the list will be with the highest stars
.sort((first, second) => second.stars - first.stars);
If there is any error, you are returning an empty array in the catch block.
As the getRepos function is declared as async, you will get back a promise so you are using .then handler to get the result of the getRepos function call and printing to the console.
getRepos().then((repositories) => console.log(repositories));