Skip to content

Commit

Permalink
Iconv
Browse files Browse the repository at this point in the history
  • Loading branch information
a632079 committed Mar 4, 2018
1 parent 780d682 commit b989fdf
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 12 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"colors": "^1.1.2",
"cron": "^1.3.0",
"humanize-number": "^0.0.2",
"iconv": "^2.3.0",
"kcors": "^2.2.1",
"koa": "^2.4.1",
"koa-bodyparser": "^4.2.0",
Expand Down
16 changes: 16 additions & 0 deletions shrinkwrap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ dependencies:
colors: 1.1.2
cron: 1.3.0
humanize-number: 0.0.2
iconv: 2.3.0
kcors: 2.2.1
koa: 2.5.0
koa-bodyparser: 4.2.0
Expand Down Expand Up @@ -1460,6 +1461,15 @@ packages:
resolution:
integrity: sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=
tarball: 'http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz'
/iconv/2.3.0:
dependencies:
nan: 2.9.2
dev: false
engines:
node: '>=0.8.0'
resolution:
integrity: sha1-lzmIfCvUktml4jbdNmfFNYYBIBs=
tarball: 'http://registry.npm.taobao.org/iconv/download/iconv-2.3.0.tgz'
/ienoopen/1.0.0:
dev: false
resolution:
Expand Down Expand Up @@ -2045,6 +2055,11 @@ packages:
resolution:
integrity: sha1-O3oNJiA910s6nfTJz7gnsvuQfmQ=
tarball: 'http://registry.npm.taobao.org/named-placeholders/download/named-placeholders-1.1.1.tgz'
/nan/2.9.2:
dev: false
resolution:
integrity: sha1-9WTXX1+PNqbZRWzKemxP5IireGY=
tarball: 'http://registry.npm.taobao.org/nan/download/nan-2.9.2.tgz'
/natural-compare/1.4.0:
dev: true
resolution:
Expand Down Expand Up @@ -3204,6 +3219,7 @@ specifiers:
eslint-plugin-promise: ^3.6.0
eslint-plugin-standard: ^3.0.1
humanize-number: ^0.0.2
iconv: ^2.3.0
kcors: ^2.2.1
koa: ^2.4.1
koa-bodyparser: ^4.2.0
Expand Down
60 changes: 49 additions & 11 deletions src/controllers/hitokoto.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Import necessary packages
const Iconv = require('iconv').Iconv
const path = require('path')
const SrcDir = path.join('../../', './src/')
const db = require(SrcDir + 'db')
Expand All @@ -25,23 +26,41 @@ async function hitokoto (ctx, next) {
}
// CheckEncoding
const encode = ctx.query.encode
let response
let js = false
switch (encode) {
case 'json':
ctx.body = ret
response = Buffer.from(ret)
break
case 'text':
ctx.body = ret.text
response = Buffer.from(ret.text)
break
case 'js':
const select = ctx.query.select ? ctx.query.select : '.hitokoto'
ctx.set('charset', 'utf-8')
ctx.set('Content-Type', 'text/javascript; charset=utf-8')
ctx.body = `(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`
// ctx.set('Content-Type', 'text/javascript; charset=utf-8')
js = true
response = Buffer.from(`(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`)
break
default:
ctx.body = ret
response = Buffer.from(ret)
break
}
if (ctx.query && ctx.query.charset && ctx.query.charset.toLocaleLowerCase() === 'gbk') {
if (js) {
ctx.set('Content-Type', 'text/javascript; charset=gbk')
} else {
ctx.set('Content-Type', 'application/json; charset=gbk')
}
const iconv = new Iconv('UTF-8', 'GBK')
ctx.body = iconv.convert(response)
} else {
if (js) {
ctx.set('Content-Type', 'text/javascript; charset=utf-8')
} else {
ctx.set('Content-Type', 'application/json; charset=utf-8')
}
ctx.body = response
}
} else {
// Not Params or just has callback
const ret = await hitokoto.findOne({
Expand All @@ -51,22 +70,41 @@ async function hitokoto (ctx, next) {

// CheckEncoding
const encode = ctx.query.encode
let response
let js = false
switch (encode) {
case 'json':
ctx.body = ret
response = Buffer.from(ret)
break
case 'text':
ctx.body = ret.text
response = Buffer.from(ret.text)
break
case 'js':
const select = ctx.query.select ? ctx.query.select : '.hitokoto'
ctx.set('Content-Type', 'text/javascript; charset=utf-8')
ctx.body = `(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');if(!dom){console.error("请输入正确的选择器值");}Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`
// ctx.set('Content-Type', 'text/javascript; charset=utf-8')
js = true
response = Buffer.from(`(function hitokoto(){var hitokoto="${ret.hitokoto}";var dom=document.querySelector('${select}');Array.isArray(dom)?dom[0].innerText=hitokoto:dom.innerText=hitokoto;})()`)
break
default:
ctx.body = ret
response = Buffer.from(ret)
break
}
if (ctx.query && ctx.query.charset && ctx.query.charset.toLocaleLowerCase() === 'gbk') {
if (js) {
ctx.set('Content-Type', 'text/javascript; charset=gbk')
} else {
ctx.set('Content-Type', 'application/json; charset=gbk')
}
const iconv = new Iconv('UTF-8', 'GBK')
ctx.body = iconv.convert(response)
} else {
if (js) {
ctx.set('Content-Type', 'text/javascript; charset=utf-8')
} else {
ctx.set('Content-Type', 'application/json; charset=utf-8')
}
ctx.body = response
}
}
}
module.exports = hitokoto
2 changes: 1 addition & 1 deletion update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ bail() {
}
exec_cmd_nobail() {
echo "+ $1"
bash -c "$1"
sh -c "$1"
}

exec_cmd() {
Expand Down

0 comments on commit b989fdf

Please sign in to comment.