const fs = require('fs')
const http = require('http')
const path = require('path')

const form = fs.readFileSync(path.join(__dirname, 'public', 'form.html'))

const formidable = require('formidable')


http.createServer((req, res) => {
    if (req.method === 'GET') {
        get(res)
        return
    }
    if (req.method === 'POST') {
        post(req, res)
        return
    }
    error(405, res)
}).listen(3000)

function get(res) {
    res.writeHead(200, {
        'Content-Type': 'text/html'
    })
    res.end(form)
}

function post(req, res) {
    if (!/multipart\/form-data/.test(req.headers['content-type'])) {
        error(415, res)
        return
    }

    const form = formidable({
        multiples: true,
        uploadDir: './uploads'
    });

    form.parse(req, (err, fields, files) => {
        if (err) return err
        res.writeHead(200, {
            'Content-Type': 'application/json'
        });
        res.end(JSON.stringify({
            fields,
            files
        }))
    })
}

function error(code, res) {
    res.statusCode = code
    res.end(http.STATUS_CODES[code])
}