Commit 24bbadbe authored by nano's avatar nano

fix checksum

parent ca8fddda
......@@ -2,7 +2,13 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Dockerfile" afterPath="$PROJECT_DIR$/Dockerfile" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package/main.ts" afterPath="$PROJECT_DIR$/package/main.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/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" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/utils.ts" afterPath="$PROJECT_DIR$/src/utils.ts" />
</list>
<ignored path="mycard-console-backend.iws" />
<ignored path=".idea/workspace.xml" />
......@@ -24,23 +30,27 @@
<favorites_list name="mycard-console-backend" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="App.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<leaf>
<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="24">
<caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" />
<folding />
<state relative-caret-position="187">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<folding>
<element signature="e#39#80#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">
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="199">
<caret line="55" column="19" lean-forward="false" selection-start-line="55" selection-start-column="19" selection-end-line="55" selection-end-column="19" />
<folding />
<state relative-caret-position="1454">
<caret line="106" column="36" lean-forward="false" selection-start-line="106" selection-start-column="36" selection-end-line="106" selection-end-column="36" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
......@@ -48,8 +58,8 @@
<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="297">
<caret line="118" column="0" lean-forward="true" selection-start-line="118" selection-start-column="0" selection-end-line="118" selection-end-column="0" />
<state relative-caret-position="178">
<caret line="27" column="0" lean-forward="true" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
<folding>
<element signature="e#39#73#0" expanded="true" />
</folding>
......@@ -57,23 +67,11 @@
</provider>
</entry>
</file>
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3096">
<caret line="184" column="20" lean-forward="false" selection-start-line="184" selection-start-column="20" selection-end-line="184" selection-end-column="20" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</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="192">
<caret line="50" column="0" lean-forward="false" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
<state relative-caret-position="513">
<caret line="65" column="44" lean-forward="false" selection-start-line="65" selection-start-column="44" selection-end-line="65" selection-end-column="44" />
<folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
......@@ -81,16 +79,6 @@
</provider>
</entry>
</file>
<file leaf-file-name="config.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="1" lean-forward="false" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
......@@ -124,6 +112,7 @@
<find>dep</find>
<find>full</find>
<find>fullPath</find>
<find>onFile</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -145,20 +134,20 @@
<option value="$PROJECT_DIR$/src/models/User.ts" />
<option value="$PROJECT_DIR$/tsconfig.json" />
<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$/src/models/App.ts" />
<option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/src/routes/config.ts" />
<option value="$PROJECT_DIR$/src/routes/package.json" />
<option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/src/models/Package.ts" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/views/update.hbs" />
<option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/src/models/Package.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
</list>
</option>
......@@ -179,9 +168,9 @@
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="52" />
<option name="y" value="23" />
<option name="width" value="1227" />
<option name="x" value="413" />
<option name="y" value="95" />
<option name="width" value="1474" />
<option name="height" value="777" />
</component>
<component name="ProjectLevelVcsManager">
......@@ -216,6 +205,70 @@
<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" />
<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>
<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="src" />
<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="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="routes" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
......@@ -380,12 +433,13 @@
<workItem from="1492407479780" duration="11530000" />
<workItem from="1492482951965" duration="50292000" />
<workItem from="1492655792313" duration="22867000" />
<workItem from="1492741754173" duration="2752000" />
<workItem from="1492741754173" duration="2869000" />
<workItem from="1492753774887" duration="5690000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="108513000" />
<option name="totallyTimeSpent" value="114320000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -397,11 +451,11 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="52" y="23" width="1227" height="777" extended-state="0" />
<frame x="413" y="95" width="1474" height="777" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32990867" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2893864" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24019271" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<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" />
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="DB Execution Console" 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="8" side_tool="false" content_ui="tabs" />
......@@ -465,24 +519,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/models/Iridium.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="7" lean-forward="false" selection-start-line="0" selection-start-column="7" selection-end-line="0" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2790">
<caret line="167" column="0" lean-forward="false" selection-start-line="167" selection-start-column="0" selection-end-line="168" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="234">
......@@ -636,14 +672,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="12" lean-forward="false" selection-start-line="3" selection-start-column="12" selection-end-line="3" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/@types/fs-extra-promise/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="172">
......@@ -710,13 +738,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414">
......@@ -739,6 +760,14 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="25">
<caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
......@@ -747,66 +776,92 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/utils.ts">
<entry file="file://$PROJECT_DIR$/node_modules/@types/mime/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="181">
<caret line="67" column="16" lean-forward="false" selection-start-line="67" selection-start-column="16" selection-end-line="67" selection-end-column="16" />
<state relative-caret-position="126">
<caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding>
<element signature="e#0#38#0" expanded="false" />
<element signature="n#!!doc" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<entry file="file://$USER_HOME$/Desktop/desmume-darwin.meta4">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3096">
<caret line="184" column="20" lean-forward="false" selection-start-line="184" selection-start-column="20" selection-end-line="184" selection-end-column="20" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
<state relative-caret-position="36">
<caret line="2" column="39" lean-forward="true" selection-start-line="2" selection-start-column="39" selection-end-line="2" selection-end-column="39" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/main.ts">
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="192">
<caret line="50" column="0" lean-forward="false" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
<state relative-caret-position="174">
<caret line="14" column="16" lean-forward="true" selection-start-line="14" selection-start-column="16" selection-end-line="14" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="324">
<caret line="18" column="1" lean-forward="true" selection-start-line="18" selection-start-column="1" selection-end-line="18" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1454">
<caret line="106" column="36" lean-forward="false" selection-start-line="106" selection-start-column="36" selection-end-line="106" selection-end-column="36" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<entry file="file://$PROJECT_DIR$/package/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414">
<caret line="23" column="49" lean-forward="false" selection-start-line="23" selection-start-column="49" selection-end-line="23" selection-end-column="49" />
<state relative-caret-position="150">
<caret line="15" column="43" lean-forward="false" selection-start-line="15" selection-start-column="43" selection-end-line="15" selection-end-column="43" />
<folding>
<element signature="e#39#80#0" expanded="true" />
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="24">
<caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" />
<folding />
<state relative-caret-position="513">
<caret line="65" column="44" lean-forward="false" selection-start-line="65" selection-start-column="44" selection-end-line="65" selection-end-column="44" />
<folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="199">
<caret line="55" column="19" lean-forward="false" selection-start-line="55" selection-start-column="19" selection-end-line="55" selection-end-column="19" />
<folding />
<state relative-caret-position="187">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<folding>
<element signature="e#39#80#0" expanded="true" />
</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="297">
<caret line="118" column="0" lean-forward="true" selection-start-line="118" selection-start-column="0" selection-end-line="118" selection-end-column="0" />
<state relative-caret-position="178">
<caret line="27" column="0" lean-forward="true" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
<folding>
<element signature="e#39#73#0" expanded="true" />
</folding>
......
FROM node:alpine
MAINTAINER nanoo
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
......
......@@ -39,11 +39,12 @@ export async function bundle(...args) {
await crawlPath(package_path, {
relative: true,
onFile: async (file) => {
let file_hash = await caculateSHA256(file)
files.set(file, {
path: file,
path: path.relative(package_path,file),
hash: file_hash,
size: (await fs.statAsync(file)).size
})
......@@ -55,14 +56,17 @@ export async function bundle(...args) {
let sand_hash = await caculateSHA256(sand_file)
archives.set(sand_file, {
path: sand_file,
path: path.relative(sand_path, sand_file),
hash: sand_hash,
size: (await fs.statAsync(sand_file)).size
})
await fs.renameAsync(sand_file, path.join(path.dirname(sand_file), `${sand_hash}.tar.gz`))
},
onDir: async (files, _path, depth) => {
onDir: async (_files, _path, depth) => {
files.set(_path, {
path: path.relative(package_path, _path),
})
},
})
......@@ -80,7 +84,6 @@ export async function bundle(...args) {
return {
files: Array.from(files.values()),
archives: Array.from(archives.values()),
fullPath,
fullSize,
fullHash
}
......
......@@ -12,8 +12,8 @@ export interface Action {
export interface File {
path: string;
size: number;
hash: string;
size?: number;
hash?: string;
}
export interface Archive {
......@@ -28,7 +28,6 @@ export interface Package {
appId: string;
fullSize: number;
fullHash: string;
fullPath: string;
version: string;
status: string;
type: string;
......@@ -52,8 +51,6 @@ export class PackageSchema extends Instance<Package, PackageSchema> implements P
fullSize: number;
@Property(String, false)
fullHash: string;
@Property(String, false)
fullPath: string;
@Property(String, true)
type: string;
@Property(String, true)
......
......@@ -4,33 +4,39 @@ import {mongodb} from '../models/iridium'
import {Context} from "koa";
import config from '../../config'
import {Archive, Package} from "../models/Package";
import {renderChecksum} from "../utils";
const router = new Router();
router.get('/v2/packages', async (ctx: Context, next) => {
if (!ctx.request.query.appId) {
ctx.throw(400, "appId must be required!")
}
let packs = await mongodb.Packages.find({appId: ctx.params.id, status: 'uploaded'})
let packs = await mongodb.Packages.find({appId: ctx.request.query.appId, status: 'uploaded'}).toArray()
ctx.body = {
[ctx.request.query.appId]: packs
}
})
router.get('/v2/package/:id', async(ctx: Context, next) => {
//TODO
router.get('/v2/package/:id/checksum', async(ctx: Context, next) => {
let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'})
if(!pack) {
return ctx.throw(400, 'pack error')
}
ctx.body = renderChecksum(pack.files)
})
router.get('/v2/package/:id/meta', async(ctx: Context, next) => {
let {fullHash, fullSize, fullPath} = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'}) || {}
if(!fullHash || !fullSize || !fullPath) {
ctx.throw(400, 'pack error')
let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'})
if(!pack) {
return ctx.throw(400, 'pack error')
}
await ctx['render']('update', {files: {
name: fullPath,
size: fullSize,
hash: fullHash
name: pack.id,
size: pack.fullSize,
hash: pack.fullHash
}})
})
......@@ -69,7 +75,7 @@ router.post('/v2/package/:id/update', async (ctx: Context, next) => {
if( sandSize <= fullSize ) {
files = [{
path: pack.fullPath,
path: pack.id,
size: pack.fullSize,
hash: pack.fullHash
}]
......
......@@ -21,8 +21,9 @@ import config from '../../config'
// }
const checkPackage = async (file) => {
const ext = mime.extension(file.mime);
if (['zip', 'gz', 'rar', '7z'].indexOf(ext) === -1) {
// const ext = mime.extension(file.mime);
if (['zip', 'gz', 'rar', '7z', 'application/x-gzip'].indexOf(file.mime) === -1) {
throw new Error('Unsupported file type');
}
}
......@@ -77,10 +78,7 @@ export const UploadPackage = 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 (['zip', 'gz', 'rar', '7z'].indexOf(ext) === -1) {
throw new Error('Unsupported file type');
}
await checkPackage(file)
const filename = uuid.v1()
......@@ -97,8 +95,6 @@ export const UploadPackage = async (ctx: Context) => {
file.on('close', async() => {
try {
pack.status = 'uploading'
await pack.save()
......
......@@ -13,3 +13,7 @@ export const handleImg = (img) => {
return 'https://cdn01.moecube.com/accounts/default_avatar.jpg';
}
}
export function renderChecksum(files: { path: string, hash?: string }[]) {
return files.map(({ path, hash }) => `${hash || ''} ${path}`).join('\n');
}
\ No newline at end of file
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