Commit Graph

312 Commits

Author SHA1 Message Date
asonix ad1837f9dd VERY BROKEN: start replacing parts of pict-rs 2023-07-12 22:12:21 -05:00
asonix 58d9765594 WIP: Rework format detection and conversions
- Add a bunch of types & methods that aren't used yet. The idea is
  creating the output from the known input parameters is pure, and works
  for any uploaded media
- Introduce a new kind of media "animation" which is neither an image
  nor a video. It is likely that animations can be processed properly at
  the /image/process.{ext} endpoint with a little massaging

TODO:
- Integrate this into exiftool, ffmpeg, magick commands
- Detect apng with ffmpeg (imagemagick treats it as a still png unless it's given a
    hint)
- Infallible conversion from Details to OutputFile - this might be
  impossible given that we don't currently store more than a mime type
  and a frame count to give any sort of indication of real type
- Try not to break API
2023-07-11 23:11:25 -05:00
asonix 691bca286c Make object storage timeouts configurable 2023-07-11 13:01:58 -05:00
asonix f5c39f9be5 Typo, error formatting 2023-07-10 17:15:43 -05:00
asonix 4be2eb67d1 Increase object storage signature expiry to 15 seconds 2023-07-10 16:28:51 -05:00
asonix 9004ecaadf Better classify process related errors 2023-07-10 15:29:41 -05:00
asonix e10cb1401d Bump version 2023-07-09 15:16:04 -05:00
asonix 7dadbcf3ed Replace UnsupportedFormat error with more helpful errors 2023-07-09 15:07:49 -05:00
asonix 1694f49436 Use json for ffmpeg, imagemagick details parsing 2023-07-09 14:50:58 -05:00
asonix 686be1d93b Turn export_path into flag for sled 2023-07-08 19:56:26 -05:00
asonix 7768d4e58e Add database exports
This should help admins running pict-rs on traditional filesystems to
keep valid backups of pict-rs' sled repo
2023-07-08 17:36:01 -05:00
asonix 4680f9c3aa Instrument repo and store build methods 2023-07-08 10:42:03 -05:00
asonix d51c348a3f Run health checks on old and new stores before migrating 2023-07-07 14:05:13 -05:00
asonix 3ccb8ecd8c Validate alias represents real file before setting not found 2023-07-07 13:33:27 -05:00
asonix 9e7376d411 Remove is_missing error, make Identifier and DeleteToken return Option on fetch 2023-07-07 13:17:26 -05:00
asonix 7274538b70 Try adding store healthcheck 2023-07-07 12:05:42 -05:00
asonix c150903980 Expand store differentiation 2023-07-07 11:19:39 -05:00
asonix 75be876d3c Differentiate missing files in old vs new store for migration 2023-07-07 11:03:10 -05:00
asonix 508dd4340b Fix panic when migrating < 100 files, improve resumed migration messaging 2023-07-06 16:06:37 -05:00
asonix 3487cb0e30 Add ability to set 404 image
Fix imagemagick blur arguments
2023-07-05 19:07:03 -05:00
asonix e7e4876908 Explicitly handle cases of invalid aliases 2023-07-05 16:46:44 -05:00
asonix 23e67b9697 Enhance migration handling of missing identifiers
Queue a cleanup task for hashes that don't have original file identifiers
Be more specific about what field is missing when a field is missing
2023-07-05 09:52:19 -05:00
asonix 2274dfecb4 Fix io-uring - read_to_end was polling Stream mapped through StreamReader after completion 2023-07-05 00:35:07 -05:00
asonix c8e84b8914 Greatly improve error information during migration 2023-07-02 21:07:15 -05:00
asonix e6f17cbac6 Log on successful migration 2023-06-29 11:45:06 -05:00
asonix 01d3610f46 Add basic progress indication for store migration 2023-06-29 11:39:47 -05:00
asonix 0d1df5ebc2 Avoid failed identifier cleanup on failed duplicate upload 2023-06-23 11:43:15 -05:00
asonix 7ba2fc9b26 Fix duplicate uploads potentially purging existing uploads on failure 2023-06-23 11:39:43 -05:00
asonix 58f0c328d9 Fix typo in error message 2023-06-23 11:20:55 -05:00
asonix a1d48cbb42 Share client between object store and request extractor
Add config to limit connection pool size
2023-06-23 11:20:20 -05:00
asonix 071d788349 Include original error in object storage sendrequest error 2023-06-21 17:07:14 -05:00
asonix a3ff072350 Remove unused cache duration parameter 2023-06-21 17:05:53 -05:00
asonix 6d2aef8cc0 Add jpegxl and avif support 2023-06-21 17:05:35 -05:00
asonix 554d852e68 Create unique errors for Repo and Store, separate from UploadError
Add .is_not_found() for Store errors, wire up Object and File storage to properly set NotFound
Allow skipping files that are not found during store migration
2023-06-20 15:59:08 -05:00
asonix 1214b51ad7 Make use of FilesystemDefaults when constructing migrate commands 2023-06-19 15:04:36 -05:00
asonix a3a986638d Improve gif handling.
- Allow a fast-path exif cleaning if we'd re-encode a gif to a gif
- Use single-frame palettes to better map transparency from frame to frame

Unrelated:
- decrease ffmpeg logging when creating thumbnails
2023-06-19 14:25:31 -05:00
asonix 22e526fd2a Allow type underscore (probably in instrument) 2023-06-01 17:33:43 -05:00
asonix cc314c37a6 Use libopus for ffmpeg 2023-03-09 21:29:56 -06:00
asonix dc27200a35 Add transparency to gifs, rustfmt 2023-02-25 14:31:57 -06:00
asonix 97ba4e806b Clippy 2023-02-25 13:01:55 -06:00
asonix 9a2f846cd1 Detect input transparency for gif/webm 2023-02-25 12:59:47 -06:00
asonix 281ac43dff Remove cache functionality 2023-02-25 11:34:48 -06:00
asonix 123488f617 clippy 2023-02-12 23:18:27 -06:00
asonix 788b87eceb Remove obsolute pre-0.3 migrate check 2023-02-12 23:13:47 -06:00
asonix 138499d47f Use transpose in a couple places 2023-02-05 20:50:59 -06:00
asonix cc75d2d882 Clippy 2023-02-04 17:54:56 -06:00
asonix 4cc810d372 Add control over gif frame count 2023-02-04 17:52:23 -06:00
asonix 88ca9793e8 s/vrames/frames:v 2023-02-04 17:47:03 -06:00
asonix 40f57be0c7 Allow uploading small gifs 2023-02-04 17:32:36 -06:00
asonix 0aa3f574a5 Clippy 2023-01-29 11:57:59 -06:00