1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 'use strict';
- const ghGot = require('gh-got');
- function searchCommits(email, token) {
- return ghGot('search/commits', {
- token,
- query: {
- q: `author-email:${email}`,
- sort: 'author-date',
- // eslint-disable-next-line camelcase
- per_page: 1
- },
- headers: {
- accept: 'application/vnd.github.cloak-preview',
- 'user-agent': 'https://github.com/sindresorhus/github-username'
- }
- }).then(result => {
- const data = result.body;
- if (data.total_count === 0) {
- throw new Error(`Couldn't find username for \`${email}\``);
- }
- return data.items[0].author.login;
- });
- }
- module.exports = (email, token) => {
- if (!(typeof email === 'string' && email.includes('@'))) {
- return Promise.reject(new Error('Email required'));
- }
- return ghGot('search/users', {
- token,
- query: {
- q: `${email} in:email`
- },
- headers: {
- 'user-agent': 'https://github.com/sindresorhus/github-username'
- }
- }).then(result => {
- const data = result.body;
- if (data.total_count === 0) {
- return searchCommits(email, token);
- }
- return data.items[0].login;
- });
- };
|