Commit ad75b565 authored by nano's avatar nano

error handing

parent c3f4ecc2
......@@ -2,13 +2,9 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/routes/package.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config.ts" afterPath="$PROJECT_DIR$/config.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package/main.ts" afterPath="$PROJECT_DIR$/package/main.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/server.ts" afterPath="$PROJECT_DIR$/server.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/Package.ts" afterPath="$PROJECT_DIR$/src/models/Package.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/app.ts" afterPath="$PROJECT_DIR$/src/routes/app.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/package.ts" afterPath="$PROJECT_DIR$/src/routes/package.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/upload.ts" afterPath="$PROJECT_DIR$/src/routes/upload.ts" />
</list>
<ignored path="mycard-console-backend.iws" />
......@@ -35,8 +31,8 @@
<file leaf-file-name="app.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="259">
<caret line="26" column="0" lean-forward="false" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
<state relative-caret-position="302">
<caret line="44" column="0" lean-forward="false" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
<folding>
<element signature="e#39#73#0" expanded="true" />
</folding>
......@@ -44,45 +40,11 @@
</provider>
</entry>
</file>
<file leaf-file-name="utils.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/package/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="761">
<caret line="53" column="38" lean-forward="false" selection-start-line="53" selection-start-column="38" selection-end-line="53" selection-end-column="38" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Package.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-590">
<caret line="21" column="15" lean-forward="true" selection-start-line="21" selection-start-column="15" selection-end-line="21" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="package.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-110">
<caret line="16" column="2" lean-forward="true" selection-start-line="16" selection-start-column="2" selection-end-line="16" selection-end-column="2" />
<folding>
<element signature="e#39#73#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="false">
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="310">
<caret line="93" column="48" lean-forward="true" selection-start-line="93" selection-start-column="48" selection-end-line="93" selection-end-column="48" />
<state relative-caret-position="611">
<caret line="114" column="8" lean-forward="false" selection-start-line="114" selection-start-column="8" selection-end-line="114" selection-end-column="8" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
......@@ -90,18 +52,6 @@
</provider>
</entry>
</file>
<file leaf-file-name="main.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-824">
<caret line="12" column="22" lean-forward="false" selection-start-line="12" selection-start-column="22" selection-end-line="12" selection-end-column="22" />
<folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
......@@ -130,6 +80,8 @@
<find>ondown</find>
<find>onDownloadStart</find>
<find>object</find>
<find>update</find>
<find>!</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -153,7 +105,6 @@
<option value="$PROJECT_DIR$/src/models/Iridium.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/bin/run" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/src/routes/config.ts" />
......@@ -161,10 +112,11 @@
<option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/src/models/Package.ts" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
</list>
</option>
</component>
......@@ -185,7 +137,7 @@
</component>
<component name="ProjectFrameBounds">
<option name="x" value="149" />
<option name="y" value="350" />
<option name="y" value="71" />
<option name="width" value="1492" />
<option name="height" value="968" />
</component>
......@@ -220,6 +172,24 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="upload" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
......@@ -447,12 +417,12 @@
<workItem from="1492397500450" duration="9337000" />
<workItem from="1492407479780" duration="11530000" />
<workItem from="1492482951965" duration="50292000" />
<workItem from="1492655792313" duration="5818000" />
<workItem from="1492655792313" duration="9095000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="88712000" />
<option name="totallyTimeSpent" value="91989000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -464,7 +434,7 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="149" y="350" width="1492" height="968" extended-state="0" />
<frame x="149" y="71" width="1492" height="968" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
......@@ -803,14 +773,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="161">
<caret line="23" column="1" lean-forward="false" selection-start-line="23" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="389">
......@@ -846,60 +808,68 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/main.ts">
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1286">
<caret line="23" column="1" lean-forward="false" selection-start-line="23" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-824">
<caret line="12" column="22" lean-forward="false" selection-start-line="12" selection-start-column="22" selection-end-line="12" selection-end-column="22" />
<state relative-caret-position="1292">
<caret line="99" column="3" lean-forward="true" selection-start-line="99" selection-start-column="3" selection-end-line="99" selection-end-column="3" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#39#73#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="761">
<caret line="53" column="38" lean-forward="false" selection-start-line="53" selection-start-column="38" selection-end-line="53" selection-end-column="38" />
<state relative-caret-position="83">
<caret line="43" column="96" lean-forward="false" selection-start-line="43" selection-start-column="92" selection-end-line="43" selection-end-column="96" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="259">
<caret line="26" column="0" lean-forward="false" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
<state relative-caret-position="283">
<caret line="43" column="19" lean-forward="true" selection-start-line="43" selection-start-column="19" selection-end-line="43" selection-end-column="19" />
<folding>
<element signature="e#39#73#0" expanded="true" />
<element signature="e#0#25#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-590">
<caret line="21" column="15" lean-forward="true" selection-start-line="21" selection-start-column="15" selection-end-line="21" selection-end-column="15" />
<state relative-caret-position="378">
<caret line="21" column="15" lean-forward="false" selection-start-line="21" selection-start-column="15" selection-end-line="21" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="310">
<caret line="93" column="48" lean-forward="true" selection-start-line="93" selection-start-column="48" selection-end-line="93" selection-end-column="48" />
<state relative-caret-position="302">
<caret line="44" column="0" lean-forward="false" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
<element signature="e#39#73#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-110">
<caret line="16" column="2" lean-forward="true" selection-start-line="16" selection-start-column="2" selection-end-line="16" selection-end-column="2" />
<state relative-caret-position="611">
<caret line="114" column="8" lean-forward="false" selection-start-line="114" selection-start-column="8" selection-end-line="114" selection-end-column="8" />
<folding>
<element signature="e#39#73#0" expanded="true" />
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
......
......@@ -43,18 +43,18 @@ export async function bundle(...args) {
files.set(file, {
path: file,
hash: file_hash,
size: (await fs.statAsync(file)).size.toString()
size: (await fs.statAsync(file)).size
})
let sand_file = path.join(sand_path, `${file_hash}.tar.gz`)
await archiveSingle(sand_file, [file], package_path)
archives.set(sand_file, {
path: sand_file,
hash: await caculateSHA256(sand_file),
size: (await fs.statAsync(sand_file)).size.toString()
size: (await fs.statAsync(sand_file)).size
})
await archiveSingle(sand_file, [file], package_path)
},
onDir: async (files, _path, depth) => {
},
......@@ -68,7 +68,7 @@ export async function bundle(...args) {
// TODO: 上传meta
const fullHash = await caculateSHA256(fullFile)
const fullSize = (await fs.statAsync(fullFile)).size.toString()
const fullSize = (await fs.statAsync(fullFile)).size
// TODO: 增量包
......
......@@ -23,7 +23,7 @@ router.post('/v2/package/:id/update', async (ctx: Context, next) => {
let sandSize = ctx.request.body.length * request_overhead
let pack = await mongodb.Packages.findOne({id: package_id, status: 'ready'})
let pack = await mongodb.Packages.findOne({id: package_id, status: 'uploaded'})
let {fullSize, fullPath} = pack!
......@@ -61,8 +61,6 @@ router.post('/v2/package/:id/update', async (ctx: Context, next) => {
})
router.get('/v1/packages', async (ctx: Context, next) => {
if (!ctx.request.query.appId) {
ctx.throw(400, "appId must be required!")
......
......@@ -20,6 +20,12 @@ import config from '../../config'
// path: path.join(__dirname, '../../test/upload')
// }
const checkExtension = async (file) => {
const ext = mime.extension(file.mime);
if (['zip', 'gz', 'rar', '7z'].indexOf(ext) === -1) {
throw new Error('Unsupported file type');
}
}
import Router = require('koa-router');
const ossStream = Client(new OSS({
......@@ -36,10 +42,7 @@ const UploadImage = async (ctx: Context) => {
const {files} = await busboy(ctx.req);
ctx.body = await Promise.all(files.map(async file => {
const ext = mime.extension(file.mime);
if (['png', 'jpg', 'jpeg', 'gif', 'webp'].indexOf(ext) === -1) {
throw new Error('Unsupported image type');
}
await checkExtension(file)
const filename = `test/${uuid.v1()}`;
......@@ -86,23 +89,33 @@ export const UploadPackage = async (ctx: Context) => {
file.on('close', async() => {
pack!.status = 'uploading'
await pack!.save()
resolve(pack!)
// 上传完, 打包
const bundled = await bundle(filename)
Object.assign(pack, bundled)
pack!.status = 'uploaded'
await pack!.save()
try {
pack.status = 'uploading'
await pack.save()
resolve(pack)
// 上传完, 打包
const bundled = await bundle(filename)
Object.assign(pack, bundled)
pack.status = 'uploaded'
// 打包完,上传阿里云
await mongodb.Packages.update({id: pack.id}, {$set: { status: 'deprecated' }}, {multi: true})
await pack.save()
// 打包完,上传阿里云
} catch (e) {
pack.status = 'failed'
await pack.save()
}
})
file.on('error', async (error) => {
pack!.status = 'failed'
await pack!.save()
pack.status = 'failed'
await pack.save()
reject(error)
})
......@@ -136,13 +149,21 @@ const uploadPackageUrl = async (ctx: Context) => {
const { files } = await downloader.send('tellStatus', m.gid)
const [file] = files
// 打包
const bundled = await bundle(path.basename(file.path))
try {
await checkExtension(file)
// 打包完, 上传阿里云
pack.files = bundled.files
pack.status = 'uploaded'
await pack.save()
// 打包
const bundled = await bundle(path.basename(file.path))
// 打包完, 上传阿里云
pack.files = bundled.files
pack.status = 'uploaded'
await pack.save()
} catch (e) {
pack.status = 'failed'
await pack.save()
}
}
downloader.onDownloadError = async(err) => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment