pull/1/head
Amio 2018-06-26 13:39:49 +08:00
commit b68f2e6b52
6 zmienionych plików z 1959 dodań i 0 usunięć

1
.gitignore vendored 100644
Wyświetl plik

@ -0,0 +1 @@
node_modules

40
README.md 100644
Wyświetl plik

@ -0,0 +1,40 @@
# Fast badge generating service.
## Usage
`https://badgen.now.sh/badge/:subject/:status/:color`
- `subject` Text
- `status` Text
- `color` Color RGB (default '3C1') or Color Preset (`green`, `yellow`, ...see below)
Color Presets:
![](https://badgen.now.sh/badge/color/green/green)
![](https://badgen.now.sh/badge/color/yellow/yellow)
![](https://badgen.now.sh/badge/color/orange/orange)
![](https://badgen.now.sh/badge/color/red/red)
![](https://badgen.now.sh/badge/color/pink/pink)
![](https://badgen.now.sh/badge/color/purple/purple)
![](https://badgen.now.sh/badge/color/blue/blue)
![](https://badgen.now.sh/badge/color/grey/grey)
![](https://badgen.now.sh/badge/color/black/black)
## Examples
| Preview | URL |
| --- | --- |
|![](https://badgen.now.sh/badge/chat/on%20gitter/blue) | https://badgen.now.sh/badge/chat/on%20gitter/blue |
|![](https://badgen.now.sh/badge/style/standard/f2a) | https://badgen.now.sh/badge/style/standard/f2a |
|![](https://badgen.now.sh/badge/stars/★★★★☆) | https://badgen.now.sh/badge/stars/★★★★☆ |
|![](https://badgen.now.sh/badge/license/Apache-2.0/blue) | https://badgen.now.sh/badge/license/Apache-2.0/blue |
|![](https://badgen.now.sh/list/platform/ios,macos,tvos/grey) | https://badgen.now.sh/list/platform/ios,macos,tvos/grey |
## License
ISC @ Amio
[npm-badge]: https://img.shields.io/npm/v/badgen.svg
[npm-link]: https://www.npmjs.com/package/badgen
[pp-badge]: https://packagephobia.now.sh/badge?p=badgen
[pp-link]: https://packagephobia.now.sh/result?p=badgen

8
now.json 100644
Wyświetl plik

@ -0,0 +1,8 @@
{
"alias": "badgen",
"public": true,
"files": [
"README.md",
"service.js"
]
}

1848
package-lock.json wygenerowano 100644

Plik diff jest za duży Load Diff

22
package.json 100644
Wyświetl plik

@ -0,0 +1,22 @@
{
"name": "badgen-service",
"private": true,
"description": "Badge generating service",
"author": "Amio <amio.cn@gmail.com>",
"license": "ISC",
"scripts": {
"lint": "standard",
"start": "node service.js",
"predeploy": "now rm badgen --safe -y -T badgen",
"deploy": "now -T badgen --public && now -T badgen alias"
},
"dependencies": {
"@amio/micro-cors": "^0.2.0",
"badgen": "^0.2.0",
"find-my-way": "^1.14.0",
"lru-cache": "^4.1.3"
},
"devDependencies": {
"standard": "^11.0.1"
}
}

40
service.js 100644
Wyświetl plik

@ -0,0 +1,40 @@
const http = require('http')
const cors = require('@amio/micro-cors')()
const router = require('find-my-way')()
const badgen = require('badgen')
const LRU = require('lru-cache')
const cache = new LRU({ max: 1000 })
function serveBadge (req, res, params) {
res.writeHead(200, { 'Content-Type': 'image/svg+xml;charset=utf-8' })
const cached = cache.get(req.url)
if (cached) {
res.end(cached)
} else {
const created = badgen(params)
cache.set(req.url, created)
res.end(created)
}
}
function serveListBadge (req, res, params) {
const { subject, status, color } = params
serveBadge(req, res, { subject, status: status.replace(/,/g, ' | '), color })
}
function redirect (req, res) {
res.writeHead(302, { 'Location': 'https://amio.github.io/badgen' })
res.end()
}
router.get('/badge/:subject/:status', serveBadge)
router.get('/badge/:subject/:status/:color', serveBadge)
router.get('/list/:subject/:status', serveListBadge)
router.get('/list/:subject/:status/:color', serveListBadge)
router.get('/', redirect)
const handler = cors((req, res) => router.lookup(req, res))
const server = http.createServer(handler)
server.listen(3000)