16 Commits

Author SHA1 Message Date
DarthSim
ca18921c13 Add Content-Type: text/plain header to custom transports' error responses 2025-03-23 18:41:41 +03:00
DarthSim
bf8a39821b Add IMGPROXY_SOURCE_URL_QUERY_SEPARATOR config 2025-01-07 20:48:05 +03:00
DarthSim
c01158977c Fix treating percent-encoded symbols in s3://, gcs://, abs://, and swift:// URLs 2024-06-11 19:15:55 +03:00
Ewan Higgs
4944dfab30 Support Last-Modified response header and support If-Modified-Since request header. (#1147)
* Always return Last-Modified and support If-Modified-Since.

* IMGPROXY_USE_LAST_MODIFIED config setting.

IMGPROXY_USE_LAST_MODIFIED  (default false) when enabled will return the
Last-Modified time of the upstream image and also allow the support of
the If-Modified-Since request header (returning a 304 if the image
hasn't been modified).

If-Modified-Since allows If-None-Match to take precedence.

* Fixes based on DarthSim's feedback.

1. Don't worry about nil maps.
2. Fix a test now that we use the config.LastModifiedEnabled (and move
   it's location it he test file to a more sane place).
3. Update GCS transport code based on the refactoring of DarthSim.

In this iteration, we pull the Updated time from the GCS object attributes
and format them as a string. We then parse it in the notmodified module.
Seems a bit silly to do it this way. If we agree on the approach here,
then AWS and Azure can follow.

* Support azure, fs, s3, and swift.

* Grab the headers for If-Modified-Since and Last-Modified before parsing them.

* Add tests for last-modified for fs.

* Support Last-Modified being passed when streaming an upstream file.

* Tests for Last-Modified for GCS and Azure

* Support s3 and swift tests. Sadly fakes3 doesn't support Last-Modified

* Test against forked gofakes3
2023-05-03 21:21:46 +06:00
DarthSim
6d087712aa Remove ctxreader. It didn't solve the problem it meant to solve but it adds unneeded complexity 2023-05-01 20:50:42 +03:00
DarthSim
49e5eb063c Refactor ETag checking in transports 2023-04-10 20:01:44 +03:00
DarthSim
1403886840 Wrap custom transport bodies with a context reader 2022-10-22 17:55:06 +06:00
DarthSim
72ec0f3c68 Better Content-Type detection for FS transport 2022-10-03 15:57:19 +06:00
DarthSim
913cfb22ca Add ranged requests suport to transports 2022-09-07 18:03:12 +06:00
DarthSim
58fd025f89 Add ranged requests suport to transports 2022-09-07 18:03:12 +06:00
DarthSim
d5a62defba Set proper ContentLength for 404 responses in FS transport 2022-07-27 17:12:12 +06:00
DarthSim
7d396bf56f Respond with 404 if local file wasn't found 2022-06-08 18:28:24 +06:00
DarthSim
3a79a48d6f Tests and minor fixes for transports 2022-04-07 23:32:51 +06:00
DarthSim
7709b74a5e Bump version 2021-09-30 20:23:30 +06:00
DarthSim
57c314b1f5 Etag passthough 2021-09-29 16:23:54 +06:00
DarthSim
2ea1466d96 Global refactoring 2021-05-07 17:10:21 +06:00