kopia lustrzana https://github.com/badgen/badgen.net
45 wiersze
1.2 KiB
TypeScript
45 wiersze
1.2 KiB
TypeScript
![]() |
import got from '../libs/got'
|
||
|
import { parseDocument } from 'yaml'
|
||
|
import { version, versionColor } from '../libs/utils'
|
||
|
import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler'
|
||
|
|
||
|
const F_DROID_METADATA_REPO_URL = 'https://gitlab.com/fdroid/fdroiddata/raw/master/metadata/'
|
||
|
|
||
|
const client = got.extend({ prefixUrl: F_DROID_METADATA_REPO_URL })
|
||
|
|
||
|
export default createBadgenHandler({
|
||
|
title: 'F-Droid',
|
||
|
examples: {
|
||
|
'/f-droid/v/org.schabi.newpipe': 'version',
|
||
|
'/f-droid/v/com.amaze.filemanager': 'version',
|
||
|
'/f-droid/license/org.tasks': 'license'
|
||
|
},
|
||
|
handlers: {
|
||
|
'/f-droid/:topic<v|license>/:appId': handler
|
||
|
}
|
||
|
})
|
||
|
|
||
|
async function handler ({ topic, appId }: PathArgs) {
|
||
|
const yaml = await client.get(`${appId}.yml`).text()
|
||
|
const metadata = parseDocument(yaml)
|
||
|
|
||
|
switch (topic) {
|
||
|
case 'v': {
|
||
|
const ver = metadata.get('CurrentVersion')
|
||
|
return {
|
||
|
subject: 'f-droid',
|
||
|
status: version(ver),
|
||
|
color: versionColor(ver)
|
||
|
}
|
||
|
}
|
||
|
case 'license': {
|
||
|
const license = metadata.get('License')
|
||
|
return {
|
||
|
subject: 'license',
|
||
|
status: license || 'unknown',
|
||
|
color: 'blue'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|