Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tiny-image
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
劳工
tiny-image
Commits
dfdb6f5d
Commit
dfdb6f5d
authored
Feb 13, 2020
by
rockyl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
日志文件修改
parent
5cdbd1fd
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
134 additions
and
100 deletions
+134
-100
index.js
dist/index.js
+65
-49
index.js.map
dist/index.js.map
+1
-1
api.js
src/api.js
+59
-0
index.js
src/index.js
+2
-46
logger.js
src/logger.js
+7
-4
No files found.
dist/index.js
View file @
dfdb6f5d
...
...
@@ -3,13 +3,13 @@
function
_interopDefault
(
ex
)
{
return
(
ex
&&
(
typeof
ex
===
'object'
)
&&
'default'
in
ex
)
?
ex
[
'default'
]
:
ex
;
}
var
restify
=
_interopDefault
(
require
(
'restify'
));
var
imagemin
=
_interopDefault
(
require
(
'imagemin'
));
var
imageminJpegtran
=
_interopDefault
(
require
(
'imagemin-jpegtran'
));
var
imageminPngquant
=
_interopDefault
(
require
(
'imagemin-pngquant'
));
var
Eurekaclient
=
_interopDefault
(
require
(
'eureka-client-ts'
));
var
log4js
=
require
(
'log4js'
);
var
path
=
_interopDefault
(
require
(
'path'
));
var
fs
=
_interopDefault
(
require
(
'fs-extra'
));
var
imagemin
=
_interopDefault
(
require
(
'imagemin'
));
var
imageminJpegtran
=
_interopDefault
(
require
(
'imagemin-jpegtran'
));
var
imageminPngquant
=
_interopDefault
(
require
(
'imagemin-pngquant'
));
/**
* Created by rockyl on 2020-02-13.
...
...
@@ -21,11 +21,14 @@ fs.ensureDir(logPath);
log4js
.
configure
({
appenders
:
{
out
:
{
type
:
'console'
},
allLog
:
{
type
:
'file'
,
filename
:
path
.
join
(
logPath
,
'log.log'
),
keepFileExt
:
true
,
maxLogSize
:
10485760
,
backups
:
3
},
out
:
{
type
:
'console'
},
allLog
:
{
type
:
'dateFile'
,
filename
:
path
.
join
(
logPath
,
'log.log'
),
},
},
categories
:
{
default
:
{
appenders
:
[
'out'
,
'allLog'
],
level
:
'debug'
},
default
:
{
appenders
:
[
'out'
,
'allLog'
],
level
:
'debug'
},
}
});
...
...
@@ -50,6 +53,61 @@ async function getEurekaClient(port) {
return
eureka
;
}
/**
* Created by rockyl on 2020-02-13.
*/
const
acceptTypes
=
[
'image/png'
,
'image/jpeg'
];
function
applyApi
(
server
){
server
.
get
(
'/echo/:name'
,
function
(
req
,
res
,
next
)
{
res
.
send
(
req
.
params
);
return
next
();
});
server
.
get
(
'/monitor/check'
,
function
(
req
,
res
,
next
)
{
res
.
sendRaw
(
'ok'
);
return
next
();
});
server
.
post
(
'/tinify'
,
async
function
(
req
,
res
,
next
)
{
logger
.
info
(
'/tinify'
);
let
file
=
req
.
files
.
file
;
if
(
acceptTypes
.
includes
(
file
.
type
)){
try
{
const
buffer
=
await
imagemin
([
file
.
path
],
{
plugins
:
[
imageminJpegtran
(),
imageminPngquant
({
quality
:
[
0.6
,
0.8
]
})
]
});
res
.
sendRaw
(
buffer
[
0
].
data
,
{
'Content-Type'
:
file
.
type
,
});
}
catch
(
e
)
{
logger
.
error
(
'/tinify'
,
'compress failed'
);
res
.
send
({
code
:
2
,
msg
:
'compress failed'
});
}
}
else
{
logger
.
error
(
'/tinify'
,
'type error'
);
res
.
send
({
code
:
1
,
msg
:
'type error'
});
}
return
next
();
});
}
/**
* Created by rockyl on 2020-02-12.
*/
...
...
@@ -58,8 +116,6 @@ let [_, __, port = '8090'] = process.argv;
let
eureka
;
port
=
parseInt
(
port
);
const
acceptTypes
=
[
'image/png'
,
'image/jpeg'
];
const
server
=
restify
.
createServer
({
name
:
'tiny-image'
,
version
:
'1.0.0'
...
...
@@ -69,47 +125,7 @@ server.use(restify.plugins.acceptParser(server.acceptable));
server
.
use
(
restify
.
plugins
.
queryParser
());
server
.
use
(
restify
.
plugins
.
bodyParser
());
server
.
get
(
'/echo/:name'
,
function
(
req
,
res
,
next
)
{
res
.
send
(
req
.
params
);
return
next
();
});
server
.
post
(
'/tinify'
,
async
function
(
req
,
res
,
next
)
{
logger
.
info
(
'/tinify'
);
let
file
=
req
.
files
.
file
;
if
(
acceptTypes
.
includes
(
file
.
type
)){
try
{
const
buffer
=
await
imagemin
([
file
.
path
],
{
plugins
:
[
imageminJpegtran
(),
imageminPngquant
({
quality
:
[
0.6
,
0.8
]
})
]
});
res
.
sendRaw
(
buffer
[
0
].
data
,
{
'Content-Type'
:
file
.
type
,
});
}
catch
(
e
)
{
logger
.
error
(
'/tinify'
,
'compress failed'
);
res
.
send
({
code
:
2
,
msg
:
'compress failed'
});
}
}
else
{
logger
.
error
(
'/tinify'
,
'type error'
);
res
.
send
({
code
:
1
,
msg
:
'type error'
});
}
return
next
();
});
applyApi
(
server
);
process
.
on
(
'uncaughtException'
,
(
err
)
=>
{
logger
.
error
(
err
);
...
...
dist/index.js.map
View file @
dfdb6f5d
{
"version"
:
3
,
"file"
:
"index.js"
,
"sources"
:
[
"../src/logger.js"
,
"../src/eureka.js"
,
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2020-02-13.
\n
*/
\n\n
import { configure, getLogger } from 'log4js';
\n
import path from
\"
path
\"
;
\n
import fs from
\"
fs-extra
\"
;
\n\n
const logPath = path.join(process.env.HOME || process.env.USERPROFILE, 'logs', 'tiny-image');
\n\n
fs.ensureDir(logPath);
\n\n
configure({\n
\t
appenders: {\n
\t\t
out: { type: 'console' },
\n\t\t
allLog: { type: 'file', filename: path.join(logPath, 'log.log'), keepFileExt: true, maxLogSize: 10485760, backups: 3 },
\n\t
},
\n\t
categories: {\n
\t\t
default: { appenders: ['out', 'allLog'], level: 'debug' },
\n\t
}
\n\n
});
\n\n
const logger = getLogger();
\n\n
export default logger;"
,
"import Eurekaclient from 'eureka-client-ts';
\n
import logger from './logger';
\n\n
const eurekaConfig = {\n appName: 'tiny-image',
\n
services: ['tiny-image'],
\n
};
\n\n
export async function getEurekaClient(port) {\n eurekaConfig.port = port;
\n
let eureka;
\n
try {\n eureka = new Eurekaclient(eurekaConfig);
\n
await eureka.start();
\n
} catch (e) {\n logger.error(e);
\n
}
\n\n
return eureka;
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2020-02-12.
\n
*/
\n\n
import restify from 'restify';
\n
import imagemin from 'imagemin';
\n
import imageminJpegtran from 'imagemin-jpegtran';
\n
import imageminPngquant from 'imagemin-pngquant';
\n
import
{
getEurekaClient
}
from
\"
./eureka
\"
;
\n
import logger from
\"
./logger
\"
;
\n\n
let [_, __, port = '8090'] = process.argv;
\n
let eureka;
\n
port = parseInt(port);
\n\n
const acceptTypes = ['image/png', 'image/jpeg'];
\n\n
const server = restify.createServer({\n
\t
name: 'tiny-image',
\n\t
version: '1.0.0'
\n
});
\n\n
server.use(restify.plugins.acceptParser(server.acceptable));
\n
server.use(restify.plugins.queryParser());
\n
server.use(restify.plugins.bodyParser());
\n\n
server.get('/echo/:name', function (req, res, next) {\n
\t
res.send(req.params);
\n\t
return next();
\n
});
\n\n
server.post('/tinify', async function (req, res, next) {\n
\t
logger.info('/tinify');
\n\n\t
let file = req.files.file;
\n\n\t
if(acceptTypes.includes(file.type)){\n
\t\t
try {\n
\t\t\t
const buffer = await imagemin([file.path], {\n
\t\t\t\t
plugins: [
\n\t\t\t\t\t
imageminJpegtran(),
\n\t\t\t\t\t
imageminPngquant({\n
\t\t\t\t\t\t
quality: [0.6, 0.8]
\n\t\t\t\t\t
})
\n\t\t\t\t
]
\n\t\t\t
});
\n\n\t\t\t
res.sendRaw(buffer[0].data, {\n
\t\t\t\t
'Content-Type': file.type,
\n\t\t\t
});
\n\t\t
}catch (e) {\n
\t\t\t
logger.error('/tinify', 'compress failed');
\n\t\t\t
res.send({\n
\t\t\t\t
code: 2,
\n\t\t\t\t
msg: 'compress failed'
\n\t\t\t
});
\n\t\t
}
\n\t
}else{\n
\t\t
logger.error('/tinify', 'type error');
\n\t\t
res.send({\n
\t\t\t
code: 1,
\n\t\t\t
msg: 'type error'
\n\t\t
});
\n\t
}
\n\n\t
return next();
\n
});
\n\n
process.on('uncaughtException', (err) =>
{
\n\tlogger.error(err);\n
}
);
\n\n
process.on(
\"
SIGTERM
\"
, () => {\n
\t
eureka.stop();
\n\t
setTimeout(() =>
{
\n\t\tprocess.exit(1)\n\t
}
, 6000);
\n
});
\n\n
server.listen(port, async function () {\n
\t
try {\n
\t\t
eureka = await getEurekaClient(port);
\n\t\t
logger.info('eureka register success');
\n\t
} catch (e)
{
\n\t\tlogger.error(e.name);\n\t
}
\n\t
logger.info('%s listening at %s', server.name, server.url);
\n
});
\n
"
],
"names"
:
[
"configure"
,
"getLogger"
],
"mappings"
:
"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"
}
\ No newline at end of file
{
"version"
:
3
,
"file"
:
"index.js"
,
"sources"
:
[
"../src/logger.js"
,
"../src/eureka.js"
,
"../src/api.js"
,
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2020-02-13.
\n
*/
\n\n
import {configure, getLogger} from 'log4js';
\n
import path from
\"
path
\"
;
\n
import fs from
\"
fs-extra
\"
;
\n\n
const logPath = path.join(process.env.HOME || process.env.USERPROFILE, 'logs', 'tiny-image');
\n\n
fs.ensureDir(logPath);
\n\n
configure({\n
\t
appenders: {\n
\t\t
out: {type: 'console'},
\n\t\t
allLog: {\n
\t\t\t
type: 'dateFile',
\n\t\t\t
filename: path.join(logPath, 'log.log'),
\n\t\t
},
\n\t
},
\n\t
categories: {\n
\t\t
default: {appenders: ['out', 'allLog'], level: 'debug'},
\n\t
}
\n\n
});
\n\n
const logger = getLogger();
\n\n
export default logger;"
,
"import Eurekaclient from 'eureka-client-ts';
\n
import logger from './logger';
\n\n
const eurekaConfig = {\n appName: 'tiny-image',
\n
services: ['tiny-image'],
\n
};
\n\n
export async function getEurekaClient(port) {\n eurekaConfig.port = port;
\n
let eureka;
\n
try {\n eureka = new Eurekaclient(eurekaConfig);
\n
await eureka.start();
\n
} catch (e) {\n logger.error(e);
\n
}
\n\n
return eureka;
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2020-02-13.
\n
*/
\n\n
import logger from
\"
./logger
\"
;
\n
import imagemin from
\"
imagemin
\"
;
\n
import imageminJpegtran from
\"
imagemin-jpegtran
\"
;
\n
import imageminPngquant from
\"
imagemin-pngquant
\"
;
\n\n
const acceptTypes = ['image/png', 'image/jpeg'];
\n\n
export default function applyApi(server){\n
\t
server.get('/echo/:name', function (req, res, next) {\n
\t\t
res.send(req.params);
\n\t\t
return next();
\n\t
});
\n\n\t
server.get('/monitor/check', function (req, res, next) {\n
\t\t
res.sendRaw('ok');
\n\t\t
return next();
\n\t
});
\n\n\t
server.post('/tinify', async function (req, res, next) {\n
\t\t
logger.info('/tinify');
\n\n\t\t
let file = req.files.file;
\n\n\t\t
if(acceptTypes.includes(file.type)){\n
\t\t\t
try {\n
\t\t\t\t
const buffer = await imagemin([file.path], {\n
\t\t\t\t\t
plugins: [
\n\t\t\t\t\t\t
imageminJpegtran(),
\n\t\t\t\t\t\t
imageminPngquant({\n
\t\t\t\t\t\t\t
quality: [0.6, 0.8]
\n\t\t\t\t\t\t
})
\n\t\t\t\t\t
]
\n\t\t\t\t
});
\n\n\t\t\t\t
res.sendRaw(buffer[0].data, {\n
\t\t\t\t\t
'Content-Type': file.type,
\n\t\t\t\t
});
\n\t\t\t
}catch (e) {\n
\t\t\t\t
logger.error('/tinify', 'compress failed');
\n\t\t\t\t
res.send({\n
\t\t\t\t\t
code: 2,
\n\t\t\t\t\t
msg: 'compress failed'
\n\t\t\t\t
});
\n\t\t\t
}
\n\t\t
}else{\n
\t\t\t
logger.error('/tinify', 'type error');
\n\t\t\t
res.send({\n
\t\t\t\t
code: 1,
\n\t\t\t\t
msg: 'type error'
\n\t\t\t
});
\n\t\t
}
\n\n\t\t
return next();
\n\t
});
\n
}"
,
"/**
\n
* Created by rockyl on 2020-02-12.
\n
*/
\n\n
import restify from 'restify';
\n
import
{
getEurekaClient
}
from
\"
./eureka
\"
;
\n
import logger from
\"
./logger
\"
;
\n
import applyApi from
\"
./api
\"
;
\n\n
let [_, __, port = '8090'] = process.argv;
\n
let eureka;
\n
port = parseInt(port);
\n\n
const server = restify.createServer({\n
\t
name: 'tiny-image',
\n\t
version: '1.0.0'
\n
});
\n\n
server.use(restify.plugins.acceptParser(server.acceptable));
\n
server.use(restify.plugins.queryParser());
\n
server.use(restify.plugins.bodyParser());
\n\n
applyApi(server);
\n\n
process.on('uncaughtException', (err) =>
{
\n\tlogger.error(err);\n
}
);
\n\n
process.on(
\"
SIGTERM
\"
, () => {\n
\t
eureka.stop();
\n\t
setTimeout(() =>
{
\n\t\tprocess.exit(1)\n\t
}
, 6000);
\n
});
\n\n
server.listen(port, async function () {\n
\t
try {\n
\t\t
eureka = await getEurekaClient(port);
\n\t\t
logger.info('eureka register success');
\n\t
} catch (e)
{
\n\t\tlogger.error(e.name);\n\t
}
\n\t
logger.info('%s listening at %s', server.name, server.url);
\n
});
\n
"
],
"names"
:
[
"configure"
,
"getLogger"
],
"mappings"
:
"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"
}
\ No newline at end of file
src/api.js
0 → 100644
View file @
dfdb6f5d
/**
* Created by rockyl on 2020-02-13.
*/
import
logger
from
"./logger"
;
import
imagemin
from
"imagemin"
;
import
imageminJpegtran
from
"imagemin-jpegtran"
;
import
imageminPngquant
from
"imagemin-pngquant"
;
const
acceptTypes
=
[
'image/png'
,
'image/jpeg'
];
export
default
function
applyApi
(
server
){
server
.
get
(
'/echo/:name'
,
function
(
req
,
res
,
next
)
{
res
.
send
(
req
.
params
);
return
next
();
});
server
.
get
(
'/monitor/check'
,
function
(
req
,
res
,
next
)
{
res
.
sendRaw
(
'ok'
);
return
next
();
});
server
.
post
(
'/tinify'
,
async
function
(
req
,
res
,
next
)
{
logger
.
info
(
'/tinify'
);
let
file
=
req
.
files
.
file
;
if
(
acceptTypes
.
includes
(
file
.
type
)){
try
{
const
buffer
=
await
imagemin
([
file
.
path
],
{
plugins
:
[
imageminJpegtran
(),
imageminPngquant
({
quality
:
[
0.6
,
0.8
]
})
]
});
res
.
sendRaw
(
buffer
[
0
].
data
,
{
'Content-Type'
:
file
.
type
,
});
}
catch
(
e
)
{
logger
.
error
(
'/tinify'
,
'compress failed'
);
res
.
send
({
code
:
2
,
msg
:
'compress failed'
});
}
}
else
{
logger
.
error
(
'/tinify'
,
'type error'
);
res
.
send
({
code
:
1
,
msg
:
'type error'
});
}
return
next
();
});
}
\ No newline at end of file
src/index.js
View file @
dfdb6f5d
...
...
@@ -3,18 +3,14 @@
*/
import
restify
from
'restify'
;
import
imagemin
from
'imagemin'
;
import
imageminJpegtran
from
'imagemin-jpegtran'
;
import
imageminPngquant
from
'imagemin-pngquant'
;
import
{
getEurekaClient
}
from
"./eureka"
;
import
logger
from
"./logger"
;
import
applyApi
from
"./api"
;
let
[
_
,
__
,
port
=
'8090'
]
=
process
.
argv
;
let
eureka
;
port
=
parseInt
(
port
);
const
acceptTypes
=
[
'image/png'
,
'image/jpeg'
];
const
server
=
restify
.
createServer
({
name
:
'tiny-image'
,
version
:
'1.0.0'
...
...
@@ -24,47 +20,7 @@ server.use(restify.plugins.acceptParser(server.acceptable));
server
.
use
(
restify
.
plugins
.
queryParser
());
server
.
use
(
restify
.
plugins
.
bodyParser
());
server
.
get
(
'/echo/:name'
,
function
(
req
,
res
,
next
)
{
res
.
send
(
req
.
params
);
return
next
();
});
server
.
post
(
'/tinify'
,
async
function
(
req
,
res
,
next
)
{
logger
.
info
(
'/tinify'
);
let
file
=
req
.
files
.
file
;
if
(
acceptTypes
.
includes
(
file
.
type
)){
try
{
const
buffer
=
await
imagemin
([
file
.
path
],
{
plugins
:
[
imageminJpegtran
(),
imageminPngquant
({
quality
:
[
0.6
,
0.8
]
})
]
});
res
.
sendRaw
(
buffer
[
0
].
data
,
{
'Content-Type'
:
file
.
type
,
});
}
catch
(
e
)
{
logger
.
error
(
'/tinify'
,
'compress failed'
);
res
.
send
({
code
:
2
,
msg
:
'compress failed'
});
}
}
else
{
logger
.
error
(
'/tinify'
,
'type error'
);
res
.
send
({
code
:
1
,
msg
:
'type error'
});
}
return
next
();
});
applyApi
(
server
);
process
.
on
(
'uncaughtException'
,
(
err
)
=>
{
logger
.
error
(
err
);
...
...
src/logger.js
View file @
dfdb6f5d
...
...
@@ -2,7 +2,7 @@
* Created by rockyl on 2020-02-13.
*/
import
{
configure
,
getLogger
}
from
'log4js'
;
import
{
configure
,
getLogger
}
from
'log4js'
;
import
path
from
"path"
;
import
fs
from
"fs-extra"
;
...
...
@@ -12,11 +12,14 @@ fs.ensureDir(logPath);
configure
({
appenders
:
{
out
:
{
type
:
'console'
},
allLog
:
{
type
:
'file'
,
filename
:
path
.
join
(
logPath
,
'log.log'
),
keepFileExt
:
true
,
maxLogSize
:
10485760
,
backups
:
3
},
out
:
{
type
:
'console'
},
allLog
:
{
type
:
'dateFile'
,
filename
:
path
.
join
(
logPath
,
'log.log'
),
},
},
categories
:
{
default
:
{
appenders
:
[
'out'
,
'allLog'
],
level
:
'debug'
},
default
:
{
appenders
:
[
'out'
,
'allLog'
],
level
:
'debug'
},
}
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment