kopia lustrzana https://github.com/badgen/badgen.net
46 wiersze
1016 B
TypeScript
46 wiersze
1016 B
TypeScript
|
import got from '../libs/got'
|
||
|
import {
|
||
|
badgenServe,
|
||
|
BadgenServeMeta as Meta,
|
||
|
BadgenServeHandlers as Handlers,
|
||
|
BadgenServeHandlerArgs as Args
|
||
|
} from '../libs/badgen-serve'
|
||
|
|
||
|
export const meta: Meta = {
|
||
|
title: 'Keybase',
|
||
|
examples: {
|
||
|
'/keybase/pgp/lukechilds': 'pgp key',
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export const handlers: Handlers = {
|
||
|
'/keybase/:topic<pgp>/:username': handler
|
||
|
}
|
||
|
|
||
|
export default badgenServe(handlers)
|
||
|
|
||
|
async function handler ({ topic, username }: Args) {
|
||
|
const endpoint = `https://keybase.io/_/api/1.0/user/lookup.json`
|
||
|
const { body } = await got(endpoint, {
|
||
|
query: {
|
||
|
usernames: username,
|
||
|
fields: 'public_keys'
|
||
|
}
|
||
|
})
|
||
|
|
||
|
const fingerprint = body.them[0].public_keys.primary.key_fingerprint
|
||
|
|
||
|
switch (topic) {
|
||
|
case 'pgp':
|
||
|
return {
|
||
|
subject: 'PGP',
|
||
|
status: convertFingerprintTo64bit(fingerprint),
|
||
|
color: 'blue'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const convertFingerprintTo64bit = fingerprint => {
|
||
|
return fingerprint.slice(-16).toUpperCase().match(/.{4}/g).join(' ')
|
||
|
}
|