if any transformation is requested, first apply any additional
transformation necessary to correct for the EXIF orientation tag, since
it is stripped from the resulting image.
Fixes#63
values between 0 and 1 have the same behavior as the size option - it is
treated as a percentage of the original image size. Negative values for
cx and cy are calculated from the bottom and right edges of the image.
- take simple http.Header values as input, rather than http.Response
- allow multiple headers to be copied to be specified. If no headers
specified, then copy all.
no specific features I'm looking to add, just keeping thing up to date.
Unit tests and my manual testing seems like everything is still working
as expected.
For now, the options are "jpeg" and "png". Gif is a little harder to
support because of the way we use the image/gif package to handle
animated gifs. I have also have trouble imagining someone wanting to use
gif over png. But if the need really exists, we can address it when it
comes up.
Fixes#89
this includes an exact copy of the TimeoutHandler func and supporting
types from net/http, modified only to handle minor issues for imported
types.
Ref: #75
Adds a -timeout flag for specifying the timeout. Currently, this
returns a 503 response on timeout, though it should really be a 504,
since imageproxy is acting as a gateway.
Ref: #75
If imageproxy runs behind an http.ServeMux or certain web servers, the
double slash in the remote URL will get collapsed down to a single
slash. (e.g. http://example.com/ becomes http:/example.com/). This
is now handled by imageproxy directly.
Ref #65
this has actually always been failing to transform the image, but wasn't
being caught by our tests because we are currently only checking the
response code.
This pointer was only needed to pass along the scaleUp option. In order
to prevent someone from specifying the scaleUp option on an individual
request against the owner's wishes, we didn't encode or decode that
field on the Options struct. Instead, we stored the value on the Proxy
object and then set it on the Options struct inside the
TransformingTransport. This worked, but I never really liked binding
those two together.
Instead, we now treat scaleUp as a normal Option field, encoding and
decoding it with all the others. The primary difference is that the
initial value from the request URL will always be overwritten with
whatever is set in Proxy.ScaleUp. This decouples the
TransformingTransport from the Proxy, but prevents the option from being
set in the request URL.
Modifies #37
this flag was never actually doing what I thought it was in the first
place.
Also fix up a few instances of cacheDir still be used in config files
fixes#45