- remove FileData from the connector interface
- Rename
retentionDuration
todeleteIn
- Remove
deleteAt
as PATCH parameter - Add
deleteIn
to PATCH parameters, patches thedeleteAt
date from the time of the request
- Minor cleanup of the connector interface
- Fix reading old files in the DB without a type set
- Fix reading empty files
- Cleanup of the public PHP API
- More pagination fixes
- FileApi: fix pagination for real
- Remove unused connector interface methods
- FileApi: fix pagination
- Add getters for the external bucket ID to FileData
- Throw 403 if the given 'bucketIdentifer' parameter and the bucket identifier of file in the DB do not match for item operations.
- Allow File instead of UploadedFile in the internal API
- Add a health check for the DB connection
- Fix schema validation in case the CWD was not default server dir
- Fix contentUrl return value when data is not base64 encoded
- Centralize set up of FileData from request for POST and PATCH in BlobService
- Centralize validation of FileData for POST and PATCH in BlobService
- Add PHP backend FileApi
- Refactor/restructure/modernize code; remove duplicate code; enhance performance
- Fix 404 error when deleting/patching a file with retention duration set (includeDeleteAt param missing)
- Optimize file cleanUp to prevent the returning of theoretically infinite entries
- Adapt latest migration description
- Fix bug that lead to 500 in GET requests
- Remove
max_retention_duration
from the bucket config
- Throw 404 if item identifier is in an invalid format
- Drop support for Symfony 5 and api-platform 2
- Rename
exists_until
todelete_at
- If
delete_at
is NULL, the file will be kept indefinitely - Introduce new parameter
includeDeleteAt
for GET requests. If=1
, all files wheredelete_at
is not NULL will be returned. If not set, files wheredelete_at
is not NULL will be ignored. - Optimize SQL queries
- Fix bulk GET to always return the set page size
- Provide
propertyName
inerrorDetail
for errortype mismatch
- Make retrieval of expired but not deleted data impossible
- Fix bug that made referencing of json schemas without the extension
.jschema
impossible
- Add additional information about what went wrong in json schema validation in case of a
type mismatch
error
- Remove config key
project_dir
again
- Enable cross-referencing of json schemas in the same directory
- Add new config key
project_dir
, which should point to the root of the project
- Disable integrity check cronjob since its inefficient sql uses a lot of memory
- Optimize dbp:relay-blob:check-integrity` command to either print only the number of affected files or also the ids of the affected files
- Optimize
dbp:relay-blob:check-storage
command since it could happen that the doctrineem
loses connection to the SQL database
- Disable reporting emails for now due to potential to run out of memory if database is big
- Update core and adapt signatures of FileDataProvider and FileDataProcessor
- Fix bug that made it impossible to change the
type
in some cases in aPATCH
request
- Disable sending the reporting email to the given
notifyEmail
for now since a bug would leak information about the amount of other files getting deleted
- Fix bug which prevented the sending of the reporting emails
- Add separate config option for when a quota warning email should be sent
- Minimize the contents of the
reporting
email to prevent it from getting too big (before it had every file that will soon expire in it) - Implement the flag
disableValidation
that disables output validation for GET requests if set to=1
exists_until
is now set to NULL if should be the max retention duration, to reflect changes in the config immediately- Rename
additionalMetadata
tometadata
andadditionalType
totype
- Remove
bcs
from signature to decouple body from url - Update documentation
- Code cleanup
- Fix bug which set the value of an entry in the
blob_bucket_sizes
to 0
- Fix missing
fileHash
check for file upload inPATCH
- Remove email when the bucket quota is reached
- Json schema validator now expects path to json schema instead of the json schema itself
- Change some
GET
error codes that didnt match for the case - Implement output validation for
GET
requests to/download
- Add support for api-platform 3.3
- Port to PHPUnit 10
- Port from doctrine annotations to PHP attributes
- Improve error handling for file post, patch and delete. The database and the actual files should be consistent now.
- Take delete-bucket operation into consideration when updating the
blob_bucket_sizes
table - Better error handling if
post_max_size
is exceeded. This is now a separate error case. - Add metadata output validation for
GET
requests
- Add support for api-platform 3.2
- The content type for the patch operation is now
application/merge-patch+json
instead ofapplication/json
- Add new
blob_bucket_sizes
table that keeps track of the blob bucket sizes. This should improve performance massively for big tables. - Add cronjob that regularly checks and updates the
blob_bucket_sizes
table.
- Support newer symfony/psr-http-message-bridge
- Update to ramsey/uuid-doctrine v2.0
- Add index on
date_created
for better GET request efficiency
- Temporary hotfix: Disable bucket size check with SUM() until a better solution is implemented
- Migrate db fields
prefix
,file_name
,date_accessed
,file_size
andadditional_type
to more fitting, efficient types - Add indexes on
prefix
andinternal_bucket_id
- Remove unused
PoliciesStruct
and adapt code accordingly - Enhance some
PATCH
error messages
- Registering the
uuid_binary
type in the doctrine config is no longer required, the bundle will now handle it automatically.
- Breaking change: Change
creationTime
to ISO8601 Date instead of unix timestamp - Breaking change: Remove
exists_until
endpoint - Breaking change: Change
PUT
toPATCH
- Breaking change: Move all
POST
url parameters butcreationTime
,method
andbucketID
to body - Breaking change: Migrate db to save the uuid as BINARY instead of as VARCHAR
- Breaking change: Use UUIDv7 instead of UUIDv4
- Breaking change: Extend
DatasystemProviderServiceInterface
by one function that allows upload of base64 encoded files - Add additional changeable parameters to body of
PATCH
- Drop support for PHP 7.3
- Drop support for PHP 7.4/8.0
- Add support for Symfony 6
- Improve error handling for file not found cases
- Add validation of json schema to POST and PUT endpoints
- Add more and better tests
- Remove the need for urlencoding the additionalMetadata since it was moved to the body
- Update dbp/relay-blob-library to v0.2.0
- Breaking change: rework checksum
cs
to an url checksumucs
and a body checksumbcs
.ucs
is required in every request and works likecs
did, andbcs
builds a checksum over the json body of a request. - fix missing
fileName
bug in 'PUT' request - move cleanup interval to config, s.t. it is more easily configurable
- database: rename
last_access
column todate_accessed
- database: rework
extension
column tomime_type
to store mime types instead extensions - database: add
date_modified
,additional_type
columns - Add
justinrainbow/json-schema
to composer.json
- Implement parameter
startsWith
, which enables operations on all prefixes in one bucket starting withprefix
.
- Refactor whole blob codebase
- Improve error handling by merging similar error cases into one method
- Fix wrong http status code was provided in /{id}/download endpoint
- Enforce RFC 3986 by using rawurldecode on all url parameters. Before checksum calculation all non-alphanumeric characters have to be converted according to RFC 3986, otherwise the checksum check will fail.
- Increase
file_name
column size ofblob_files
to 1000 characters
- Breaking change:
/blob/files/{identifier}/download
action implemented which returns a binary response of the file with the given identifier - Breaking change: Rename parameter
binary
toincludeData
, since it returns base64 encoded data not binary data - Breaking change: Rename parameter
action
tomethod
and only include the used method now.CREATONE
,GETONE
,GETALL
,DELETEALL
,DELETEONE
,PUTONE
are removed and replaced byPOST
,GET
,DELETE
,PUT
. - Add docs and new errorIDS for
/blob/files/{identifier}/download
action
- Refactor all errorIDs to kebapcase and adapt documentation
- Update relay-blob-library to v0.1.5
- Add an email warning when the used bucket memory reaches a defined percentage of the quota
- Add on-purpose failing testcases for missing parameters, wrong signatures, ...
- Enhance docs
- Use
\Dbp\Relay\BlobLibrary\Helpers\SignatureTools::verify
- Use
dbp/relay-blob-library
and move some code from\Dbp\Relay\BlobBundle\Helper\DenyAccessUnlessCheckSignature
to\Dbp\Relay\BlobLibrary\Helpers\SignatureTools
- Change meaning of
binary
GET parameter- before it meant that a 302 redirect should be the answer
- now it means that the base64 encoded data gets sent in the
contentUrl
- Add more documentation
- Introduce new config options
notify_when_quota_over
andreport_when_expiry_in
- Rename config option
public_key
tokey
and remove config optionpath
- Add first version of documentation, primarly endpoint documentation
- Introduce better error handling and response codes
- Add missing openapi_context for better api frontend usability
- Add more testcases
- Move reporting interval to bucket config
- Remove unnecessary config options (config cleanup)
- Add more requires and default values in the config
- Code cleanup
- Add "binary" option to GETALL action, which returns 302 redirect links to the binary
- Introduce new config options for email reporting
- Add concrete implementation for /files/{identifier} endpoint
- A request to /files/{identifier} returns metadata of the file
- A request to /files/{identifier} with an parameter binary=1 returns a 302 redirect to the file binary download
- Code cleanup
- Retrieve link expire time from config
- GET requests are now validated by signature in url, and validUntil date
- remove signature from header
- signature now signs a sha2 checksum over the url (to shorten the signature)
- remove phpunit functions (assertNotNull)
- add signature to url, temporarily also allow signature in header
- remove echos, remove dumps
- update to api-platform 2.7