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' method: 'GET'
headers: @makeHeaders params headers: @makeHeaders params
headObject: (key, params) ->
@request @baseURL + key, null,
method: 'HEAD'
headers: @makeHeaders params
export default S3 export default S3

View file

@ -1,5 +1,8 @@
import config from "../config.json" import config from "../config.json"
import * as crypto from "./crypto" import * as crypto from "./crypto"
import S3 from "./aws/s3"
s3 = new S3 config
addEventListener 'fetch', (event) => addEventListener 'fetch', (event) =>
event.respondWith handleRequest event event.respondWith handleRequest event
@ -23,7 +26,22 @@ handlePUT = (request) ->
unless valid unless valid
return verifyFailure() 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 = -> verifyFailure = ->
return new Response "Invalid signature", return new Response "Invalid signature",

View file

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