implement PUT

This commit is contained in:
Peter Cai 2021-11-24 17:22:06 -05:00
parent 236b5e4d0a
commit 0192183d1e
3 changed files with 25 additions and 1 deletions

View File

@ -85,4 +85,9 @@ class S3
method: 'GET'
headers: @makeHeaders params
headObject: (key, params) ->
@request @baseURL + key, null,
method: 'HEAD'
headers: @makeHeaders params
export default S3

View File

@ -1,5 +1,8 @@
import config from "../config.json"
import * as crypto from "./crypto"
import S3 from "./aws/s3"
s3 = new S3 config
addEventListener 'fetch', (event) =>
event.respondWith handleRequest event
@ -23,7 +26,22 @@ handlePUT = (request) ->
unless valid
return verifyFailure()
return new Response "Valid"
# Don't overwrite existing files
resp = await s3.headObject url.pathname[1...], {}
if resp.ok
return new Response "File already exists",
status: 400
try
await s3.putObject url.pathname[1...], request.body,
ContentType: request.headers.get "Content-Type"
ContentLength: request.headers.get "Content-Length"
catch err
console.log err
return new Response "Cannot upload",
status: 400
return new Response "OK"
verifyFailure = ->
return new Response "Invalid signature",

View File

@ -9,6 +9,7 @@ module.exports = {
mode: 'production',
resolve: {
extensions: ['.coffee', '.js'],
fallback: { "os": false },
},
module: {
rules: [