import got from '../libs/got' import { badgenServe, BadgenServeMeta as Meta, BadgenServeHandlers as Handlers, BadgenServeHandlerArgs as Args } from '../libs/badgen-serve' const help = ` ## Private repositories In order to use the dependabot badge with a private GitHub repository you will need to get its id. You can use the [GitHub API](https://developer.github.com/v3/) and [curl](https://curl.haxx.se/docs/manual.html) to do this like so:
curl -u "$your_username" https://api.github.com/repos/$repo_owner/$repo_name* _\`$your_username\` is well your GitHub username for authentication._ * _\`$repo_owner\` is the owner of the repo e.g. badgen._ * _\`$repo_name\` is the name of the repo e.g. badgen-icons._ You will need to have read permissions for the repo for this to work, and once entering the command you will be prompted to provide a password for your GitHub account. If you use 2 factor authentication use one of the following 2 methods: * Pass a 2 factor authentication code
curl -u "$your_username" --header 'x-github-otp: $2fa_code' https://api.github.com/repos/$repo_owner/$repo_name* _\`$2fa_code\` is the 2 factor authentication code from your phone._ * Pass a personal access token
curl --header 'Authorization: token $pat_token' https://api.github.com/repos/$repo_owner/$repo_name* _\`$pat_token\` is a personal authentication token (see [this article](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line))._ Running one of the above curl commands should output a large JSON object of all the repository details, all we want is the "id" field, it should be the first item and be a 9 digit number. Once you have found the id for your repo, you can use it with the badgen dependabot endpoint like so:
https://badgen.net/dependabot/badgen/example-private-repo/123456789?icon=dependabot` export const meta: Meta = { title: 'Dependabot', examples: { '/dependabot/dependabot/dependabot-core/?icon=dependabot': 'status' }, help } export const handlers: Handlers = { '/dependabot/:owner/:repo/:identifier?': handler } export default badgenServe(handlers) async function handler ({ owner, repo, identifier }: Args) { // https://github.com/dependabot/feedback/issues/6#issuecomment-503994253 let endpoint = `https://api.dependabot.com/badges/status?host=github&repo=${owner}/${repo}` if (identifier) { endpoint += `&identifier=${identifier}` } const { status, colour } = await got(endpoint).then(res => res.body) return { subject: 'Dependabot', status, color: colour } }