Skip to content

Commit b89353d

Browse files
committed
Módulo de la API Github OK
1 parent 62b412b commit b89353d

File tree

7 files changed

+178
-0
lines changed

7 files changed

+178
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules/
2+
package-lock.json

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# API Github
2+
Obtener los datos de un usuario introducido por parámetro de la API de Github.
3+
4+
## Intrucciones de uso
5+
Seguir las siguientes instrucciones.
6+
7+
### Instalación
8+
9+
```
10+
npm install proyecto-1b-api-github
11+
```
12+
13+
### Uso
14+
15+
```
16+
const api = require('proyecto-1b-api-github');
17+
18+
api.obtenerDatosDeUsuario('mugan86')
19+
.then(
20+
respuesta => console.log(respuesta)
21+
).
22+
catch(error => console.log(error));
23+
```

index.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const axios = require('axios');
2+
3+
module.exports = {
4+
/**
5+
* Introducir el usuario de github para obtener sus datos de la API
6+
* @example
7+
* usuario = 'mugan86'
8+
* @param { string } usuario Usuario del que queremos los datos de la API
9+
*/
10+
obtenerDatosDeUsuario: function ( usuario ) {
11+
const url = `https://api.github.com/users/${ usuario }`;
12+
return axios.get(url).then(
13+
data => data.data
14+
).
15+
catch( error => console.log(error));
16+
}
17+
}

package.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"name": "proyecto-1b-api-github",
3+
"version": "1.0.0",
4+
"description": "Acceso a la API de Github de un usuario",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "mocha"
8+
},
9+
"repository": {
10+
"type": "git",
11+
"url": "git+https://github.com/npm-js-ts-angular-modules-course/proyecto-1b-api-github.git"
12+
},
13+
"keywords": [
14+
"nodejs",
15+
"api",
16+
"github"
17+
],
18+
"author": "Anartz Mugika Ledo",
19+
"license": "MIT",
20+
"bugs": {
21+
"url": "https://github.com/npm-js-ts-angular-modules-course/proyecto-1b-api-github/issues"
22+
},
23+
"homepage": "https://github.com/npm-js-ts-angular-modules-course/proyecto-1b-api-github#readme",
24+
"dependencies": {
25+
"axios": "^0.18.0"
26+
},
27+
"devDependencies": {
28+
"chai": "^4.2.0",
29+
"mocha": "^5.2.0",
30+
"nock": "^10.0.2"
31+
}
32+
}

test/index.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const obtenerUsuario = require('./../index').obtenerDatosDeUsuario;
2+
3+
const expect = require('chai').expect;
4+
5+
var nock = require('nock');
6+
7+
const mugan86 = require('./respuestas/mugan86');
8+
9+
describe('Test de datos de diferentes usuarios de Github', () => {
10+
beforeEach(() => {
11+
nock('https://api.github.com')
12+
.log(console.log)
13+
.get('/users/mugan86').
14+
reply(200, mugan86);
15+
});
16+
it('Obtener datos del usuario "mugan86"', () => {
17+
return obtenerUsuario('mugan86').then(
18+
respuesta => {
19+
// Probar el tipo de variable que obtenemos de repsuesta. Tiene que ser un objeto.
20+
expect(typeof respuesta).to.equal('object');
21+
22+
// Comprobar que el usuario de la API es mugan86
23+
expect(respuesta.login).to.equal('mugan86');
24+
// COmprobar que el ID del usuario es númerico
25+
expect(typeof respuesta.id).to.equal('number');
26+
// Seguidoes y seguidos sean númericos
27+
expect(typeof respuesta.followers).to.equal('number');
28+
expect(typeof respuesta.following).to.equal('number');
29+
// Location = Soraluze (Basque Country) (EU)
30+
expect(respuesta.location).to.equal('Soraluze (Basque Country) (EU)');
31+
}
32+
)
33+
});
34+
});

test/respuestas/mugan86.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module.exports = {
2+
3+
"login": "mugan86",
4+
"id": 5081970,
5+
"node_id": "MDQ6VXNlcjUwODE5NzA=",
6+
"avatar_url": "https://avatars0.githubusercontent.com/u/5081970?v=4",
7+
"gravatar_id": "",
8+
"url": "https://api.github.com/users/mugan86",
9+
"html_url": "https://github.com/mugan86",
10+
"followers_url": "https://api.github.com/users/mugan86/followers",
11+
"following_url": "https://api.github.com/users/mugan86/following{/other_user}",
12+
"gists_url": "https://api.github.com/users/mugan86/gists{/gist_id}",
13+
"starred_url": "https://api.github.com/users/mugan86/starred{/owner}{/repo}",
14+
"subscriptions_url": "https://api.github.com/users/mugan86/subscriptions",
15+
"organizations_url": "https://api.github.com/users/mugan86/orgs",
16+
"repos_url": "https://api.github.com/users/mugan86/repos",
17+
"events_url": "https://api.github.com/users/mugan86/events{/privacy}",
18+
"received_events_url": "https://api.github.com/users/mugan86/received_events",
19+
"type": "User",
20+
"site_admin": false,
21+
"name": "Anartz Mugika Ledo",
22+
"company": "@servirace @CrazyWords ",
23+
"blog": "https://twitter.com/mugan86",
24+
"location": "Soraluze (Basque Country) (EU)",
25+
"email": null,
26+
"hireable": true,
27+
"bio": "Android Native Developer / Applications hybrid with Ionic (1-3) and Web Developer in Angular 2-7 .\r\nFounder @servirace. Learning Kotlin Android intenselly.",
28+
"public_repos": 94,
29+
"public_gists": 2,
30+
"followers": 10,
31+
"following": 30,
32+
"created_at": "2013-07-24T14:28:55Z",
33+
"updated_at": "2018-11-28T16:18:41Z"
34+
35+
};

test/respuestas/usainzg.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module.exports = {
2+
3+
"login": "usainzg",
4+
"id": 6026143,
5+
"node_id": "MDQ6VXNlcjYwMjYxNDM=",
6+
"avatar_url": "https://avatars3.githubusercontent.com/u/6026143?v=4",
7+
"gravatar_id": "",
8+
"url": "https://api.github.com/users/usainzg",
9+
"html_url": "https://github.com/usainzg",
10+
"followers_url": "https://api.github.com/users/usainzg/followers",
11+
"following_url": "https://api.github.com/users/usainzg/following{/other_user}",
12+
"gists_url": "https://api.github.com/users/usainzg/gists{/gist_id}",
13+
"starred_url": "https://api.github.com/users/usainzg/starred{/owner}{/repo}",
14+
"subscriptions_url": "https://api.github.com/users/usainzg/subscriptions",
15+
"organizations_url": "https://api.github.com/users/usainzg/orgs",
16+
"repos_url": "https://api.github.com/users/usainzg/repos",
17+
"events_url": "https://api.github.com/users/usainzg/events{/privacy}",
18+
"received_events_url": "https://api.github.com/users/usainzg/received_events",
19+
"type": "User",
20+
"site_admin": false,
21+
"name": "Unai Sainz de la Maza",
22+
"company": null,
23+
"blog": "https://usainzg.github.io/",
24+
"location": "Basque Country",
25+
"email": null,
26+
"hireable": true,
27+
"bio": null,
28+
"public_repos": 21,
29+
"public_gists": 0,
30+
"followers": 15,
31+
"following": 8,
32+
"created_at": "2013-11-24T22:54:49Z",
33+
"updated_at": "2018-11-26T16:21:01Z"
34+
35+
};

0 commit comments

Comments
 (0)