Browse Source

Fix Accept-Patch in OPTIONS

Use resource allowed patches in OPTIONS.
master
TheoryOfNekomata 8 months ago
parent
commit
e554fee7bf
1 changed files with 4 additions and 9 deletions
  1. +4
    -9
      packages/core/src/backend/servers/http/core.ts

+ 4
- 9
packages/core/src/backend/servers/http/core.ts View File

@@ -551,15 +551,10 @@ export const createServer = (backendState: BackendState, serverParams = {} as Cr
if (resourceReq.method === 'POST') {
headers['Accept-Post'] = Array.from(resourceReq.backend.app.mediaTypes.keys()).join(',');
} else if (resourceReq.method === 'PATCH') {
headers['Accept-Patch'] = Array.from(resourceReq.backend.app.mediaTypes.keys()).map((m) => {
const [mimeType, mimeSubtype] = m.split('/');

// TODO accept only patch document type from request
// TODO implement Vary header (which headers influenced the request)
// TODO implement OPTIONS method for determining the accepted media types and languages
// TODO configure strict and lax accept behavior for content negotiation
return `${mimeType}/merge-patch+${mimeSubtype}`;
}).join(',');
headers['Accept-Patch'] = Array.from(Object.entries(PATCH_CONTENT_MAP_TYPE))
.filter(([, value]) => Object.keys(resourceReq.resource.state.canPatch).includes(value))
.map(([contentType]) => contentType)
.join(',');
}

handleError(new ErrorPlainResponse('unableToSerializeResponse', {


Loading…
Cancel
Save