rewrite api endpoint
This commit is contained in:
parent
2326b23c10
commit
76ce36a7e1
|
@ -21,7 +21,8 @@
|
|||
"react-reveal": "^1.2.2",
|
||||
"react-scripts": "^3.4.0",
|
||||
"react-syntax-highlighter": "^12.2.1",
|
||||
"react-visibility-sensor": "^5.1.1"
|
||||
"react-visibility-sensor": "^5.1.1",
|
||||
"shortid": "^2.2.15"
|
||||
},
|
||||
"scripts": {
|
||||
"predeploy": "npm run build",
|
||||
|
|
|
@ -2,7 +2,7 @@ import React, { Component } from 'react'
|
|||
import classNames from 'classnames'
|
||||
import Dropzone from 'react-dropzone'
|
||||
import Reveal from 'react-reveal/Reveal'
|
||||
|
||||
import shortid from 'shortid';
|
||||
import { Button, UploadFile } from '../'
|
||||
import { Deco3, Deco4, Deco5, Folder, DownArrow } from '../../svg'
|
||||
import './HomeUpload.scss'
|
||||
|
@ -13,47 +13,41 @@ export default class HomeUpload extends Component {
|
|||
handleDrop = async acceptedFiles => {
|
||||
this.setState({
|
||||
files: [
|
||||
...acceptedFiles.map(file => {
|
||||
return { file, status: 'uploading' }
|
||||
}),
|
||||
...acceptedFiles.map(file => ({ file, status: 'uploading' })),
|
||||
...this.state.files,
|
||||
],
|
||||
})
|
||||
|
||||
const onComplete = (file, status, skylink) => {
|
||||
this.setState(state => {
|
||||
const index = state.files.findIndex(f => f.file === file)
|
||||
|
||||
return {
|
||||
files: [
|
||||
...state.files.slice(0, index),
|
||||
{
|
||||
...state.files[index],
|
||||
status,
|
||||
url: `https://siasky.net/${skylink}`,
|
||||
},
|
||||
...state.files.slice(index + 1),
|
||||
],
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
acceptedFiles.forEach(async file => {
|
||||
const url = `/api/skyfile?filename=${file.name}`
|
||||
const fd = new FormData()
|
||||
fd.append('file', file)
|
||||
|
||||
const onComplete = (status, skylink) => {
|
||||
this.setState(state => {
|
||||
const index = state.files.findIndex(f => f.file === file)
|
||||
|
||||
return {
|
||||
files: [
|
||||
...state.files.slice(0, index),
|
||||
{
|
||||
...state.files[index],
|
||||
status,
|
||||
url: `https://siasky.net/${skylink}`,
|
||||
},
|
||||
...state.files.slice(index + 1),
|
||||
],
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
body: fd,
|
||||
mode: 'cors',
|
||||
})
|
||||
const fd = new FormData()
|
||||
fd.append('file', file)
|
||||
|
||||
const uuid = shortid.generate();
|
||||
const response = await fetch(`/skynet/skyfile/${uuid}`, { method: 'POST', body: fd })
|
||||
const { skylink } = await response.json()
|
||||
|
||||
onComplete('complete', skylink)
|
||||
onComplete(file, 'complete', skylink)
|
||||
} catch (error) {
|
||||
onComplete('error')
|
||||
onComplete(file, 'error')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import requestId from "express-request-id"
|
|||
import fs from "fs"
|
||||
import morgan from 'morgan'
|
||||
import { homedir } from "os"
|
||||
import shortid from "shortid"
|
||||
import { Logger } from "winston"
|
||||
import logger from "./logger"
|
||||
|
||||
|
@ -26,7 +25,7 @@ const siad = axios.create({
|
|||
}
|
||||
})
|
||||
|
||||
export class Server {
|
||||
class Server {
|
||||
public app: express.Express
|
||||
|
||||
constructor(private logger: Logger) {
|
||||
|
@ -78,7 +77,7 @@ export class Server {
|
|||
}
|
||||
|
||||
private configureRoutes() {
|
||||
this.app.post("/skyfile", this.handleSkyfilePOST.bind(this))
|
||||
this.app.post("/skynet/skyfile/:uuid", this.handleSkyfilePOST.bind(this))
|
||||
|
||||
this.app.get(
|
||||
"/stats", this.handleStatsGET.bind(this)
|
||||
|
@ -151,16 +150,20 @@ export class Server {
|
|||
res.status(400).send({ error: "Missing file" })
|
||||
}
|
||||
|
||||
const uid = shortid.generate()
|
||||
this.logger.info(`POST skyfile w/name ${file.name} and uid ${uid}`)
|
||||
if( !req.params.uuid ) {
|
||||
res.status(400).send({ error: "Missing uuid" })
|
||||
}
|
||||
|
||||
this.logger.info(`POST skyfile w/name ${file.name} and uid ${req.params.uuid}`)
|
||||
|
||||
try {
|
||||
const { data } = await siad.post(
|
||||
`/skynet/skyfile/${uid}`,
|
||||
`/skynet/skyfile/${req.params.uuid}`,
|
||||
file.data,
|
||||
{
|
||||
maxContentLength: MAX_UPLOAD_FILESIZE,
|
||||
params: { filename: file.name }
|
||||
params: {
|
||||
filename: file.name
|
||||
}
|
||||
}
|
||||
)
|
||||
return res.send(data)
|
||||
|
@ -172,4 +175,4 @@ export class Server {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = new Server(logger).app
|
||||
export default new Server(logger).app
|
||||
|
|
|
@ -10914,7 +10914,7 @@ shellwords@^0.1.1:
|
|||
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
|
||||
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
|
||||
|
||||
shortid@2.2.15:
|
||||
shortid@2.2.15, shortid@^2.2.15:
|
||||
version "2.2.15"
|
||||
resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.15.tgz#2b902eaa93a69b11120373cd42a1f1fe4437c122"
|
||||
integrity sha512-5EaCy2mx2Jgc/Fdn9uuDuNIIfWBpzY4XIlhoqtXF6qsf+/+SGZ+FxDdX/ZsMZiWupIWNqAEmiNY4RC+LSmCeOw==
|
||||
|
|
Reference in New Issue