This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/website/src/api/github.js
slumbering 8b0f6535af docs: 🐛 another try with env variables
Signed-off-by: slumbering <slumbering.pierrot@gmail.com>
2021-06-14 14:42:41 +02:00

68 lines
1.8 KiB
JavaScript

import axios from 'axios';
const AxiosInstance = axios.create({
headers: { 'Accept': 'application/vnd.github.v3+json' },
});
function bindApiCall({ url, config, errorMessage }) {
try {
const apiCall = AxiosInstance.get(url, {
...config,
validateStatus: function (status) {
return status < 500; // Resolve only if the status code is less than 500
}
})
return apiCall
} catch (error) {
console.log(errorMessage, error.message)
}
}
async function getAccessToken(code) {
const accessToken = await bindApiCall({
url: 'https://github.com/login/oauth/access_token',
config: {
params: {
code,
client_id: process.env.REACT_APP_CLIENT_ID,
client_secret: process.env.REACT_APP_CLIENT_SECRET,
},
errorMessage: 'error getAccessToken'
}
})
return accessToken.data
}
export async function getUser(access_token) {
const user = await bindApiCall({
url: 'https://api.github.com/user',
config: {
headers: { Authorization: `token ${access_token}` },
},
errorMessage: 'error getUser'
})
return {
login: user.data?.login,
error: user.data?.error_description,
status: user.status
}
}
export async function checkUserCollaboratorStatus(code) {
const { access_token } = await getAccessToken(code)
const { login } = await getUser(access_token)
const isUserCollaborator = await bindApiCall({
url: `https://docs-access.dagger.io/u/${login}`,
errorMessage: 'error checkUserCollaboratorStatus'
})
return {
isAllowed: isUserCollaborator.data,
access_token
}
}