pull/3/head
Amio 2018-05-29 16:53:54 +08:00
commit 4d726452e2
5 zmienionych plików z 104 dodań i 0 usunięć

1
.gitignore vendored 100644
Wyświetl plik

@ -0,0 +1 @@
node_modules

39
index.js 100644
Wyświetl plik

@ -0,0 +1,39 @@
module.exports = function ({subject, status, color = '#97CA00'}) {
const sbl = subject.length
const stl = status.length
const charWidth = 7.5
const sbTextWidth = sbl * charWidth
const sbRectWidth = sbTextWidth + 15
const sbTextCenter = sbRectWidth / 2
const stTextWidth = stl * charWidth
const stRectWidth = stTextWidth + 15
const stTextCenter = sbRectWidth + stRectWidth / 2
const width = sbRectWidth + stRectWidth
return `
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="${width}" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<clipPath id="a">
<rect width="${width}" height="20" rx="3" fill="#fff"/>
</clipPath>
<g clip-path="url(#a)">
<path fill="#555" d="M0 0h${sbRectWidth}v20H0z"/>
<path fill="${color}" d="M${sbRectWidth} 0h${stRectWidth}v20H${sbRectWidth}z"/>
<path fill="url(#b)" d="M0 0h${sbRectWidth + stRectWidth}v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="Arial,sans-serif" font-size="11">
<text x="${sbTextCenter}" y="14.5" textLength="${sbTextWidth}" fill="#010101" fill-opacity=".3">${subject}</text>
<text x="${sbTextCenter}" y="13.5" textLength="${sbTextWidth}">${subject}</text>
<text x="${stTextCenter}" y="14.5" textLength="${stTextWidth}" fill="#010101" fill-opacity=".3">${status}</text>
<text x="${stTextCenter}" y="13.5" textLength="${stTextWidth}">${status}</text>
</g> <script xmlns=""/>
</svg>
`
}

39
package-lock.json wygenerowano 100644
Wyświetl plik

@ -0,0 +1,39 @@
{
"name": "badgen",
"version": "0.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"fast-decode-uri-component": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.0.tgz",
"integrity": "sha512-WQSYVKn6tDW/3htASeUkrx5LcnuTENQIZQPCVlwdnvIJ7bYtSpoJYq38MgUJnx1CQIR1gjZ8HJxAEcN4gqugBg==",
"dev": true
},
"find-my-way": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.13.0.tgz",
"integrity": "sha512-aIa4UTxZ3klfApaQEJJ5cQvNeqfrxVngcjMgy+G5ygkrOrDPkORhY/RMH6F8mLwBpPt3Z0F03CtzN7gs2Q5H1w==",
"dev": true,
"requires": {
"fast-decode-uri-component": "^1.0.0",
"safe-regex": "^1.1.0"
}
},
"ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
"safe-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
"ret": "~0.1.10"
}
}
}
}

14
package.json 100644
Wyświetl plik

@ -0,0 +1,14 @@
{
"name": "badgen",
"version": "0.0.1",
"description": "Hand-crafted badge generator.",
"main": "index.js",
"scripts": {
"start": "node service.js"
},
"author": "Amio <amio.cn@gmail.com>",
"license": "ISC",
"devDependencies": {
"find-my-way": "^1.13.0"
}
}

11
service.js 100644
Wyświetl plik

@ -0,0 +1,11 @@
const http = require('http')
const router = require('find-my-way')()
const badgen = require('.')
router.get('/gen/:subject/:status', (req, res, params) => {
res.writeHead(200, { 'Content-Type': 'image/svg+xml;charset=utf-8' })
res.end(badgen(params))
})
const server = http.createServer((req, res) => router.lookup(req, res))
server.listen(3000)