Skip to content

Commit

Permalink
Adding trim-border operation. WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
dooman87 committed Dec 19, 2023
1 parent 3438afa commit 78e608d
Show file tree
Hide file tree
Showing 3 changed files with 233 additions and 180 deletions.
38 changes: 30 additions & 8 deletions img/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,13 @@ const (
LOWER
)

type OptimiseConfig struct {
// TrimBorder is a flag whether we need to remove border or not
TrimBorder bool
}

type ResizeConfig struct {
OptimiseConfig
// Size is a size of output images in the format WxH.
Size string
}
Expand Down Expand Up @@ -147,8 +153,7 @@ func (r *Service) OptimiseUrl(resp http.ResponseWriter, req *http.Request) {
}

func (r *Service) ResizeUrl(resp http.ResponseWriter, req *http.Request) {

size := getQueryParam(req.URL, "size")
size, _ := getQueryParam(req.URL, "size")
if len(size) == 0 {
http.Error(resp, "size param is required", http.StatusBadRequest)
return
Expand All @@ -165,7 +170,7 @@ func (r *Service) ResizeUrl(resp http.ResponseWriter, req *http.Request) {
}

func (r *Service) FitToSizeUrl(resp http.ResponseWriter, req *http.Request) {
size := getQueryParam(req.URL, "size")
size, _ := getQueryParam(req.URL, "size")
if len(size) == 0 {
http.Error(resp, "size param is required", http.StatusBadRequest)
return
Expand Down Expand Up @@ -244,11 +249,11 @@ func addHeaders(resp http.ResponseWriter, image *Image) {
resp.Header().Add("Cache-Control", fmt.Sprintf("public, max-age=%d", CacheTTL))
}

func getQueryParam(url *url.URL, name string) string {
func getQueryParam(url *url.URL, name string) (string, bool) {
if len(url.Query()[name]) == 1 {
return url.Query()[name][0]
return url.Query()[name][0], true
}
return ""
return "", url.Query().Has(name)
}

func getImgUrl(req *http.Request) string {
Expand Down Expand Up @@ -296,7 +301,7 @@ func (r *Service) transformUrl(resp http.ResponseWriter, req *http.Request, tran
}

var dppx float64 = 0
dppxParam := getQueryParam(req.URL, "dppx")
dppxParam, _ := getQueryParam(req.URL, "dppx")
if len(dppxParam) != 0 {
var err error
dppx, err = strconv.ParseFloat(dppxParam, 32)
Expand All @@ -308,13 +313,30 @@ func (r *Service) transformUrl(resp http.ResponseWriter, req *http.Request, tran

var saveDataParam = ""
if SaveDataEnabled {
saveDataParam = getQueryParam(req.URL, "save-data")
saveDataParam, _ = getQueryParam(req.URL, "save-data")
if len(saveDataParam) > 0 && saveDataParam != "off" && saveDataParam != "hide" {
http.Error(resp, "save-data query param must be one of 'off', 'hide'", http.StatusBadRequest)
return
}
}

var trimBorder = false
trimBorderParamValue, trimBorderParamExist := getQueryParam(req.URL, "trim-border")
if trimBorderParamExist {
if len(trimBorderParamValue) == 0 {
trimBorder = true
} else {
var err error
trimBorder, err = strconv.ParseBool(trimBorderParamValue)
if err != nil {
http.Error(resp, "can't parse trim-border param", http.StatusBadRequest)
}
}
}
if c, ok := config.(*OptimiseConfig); ok {
c.TrimBorder = trimBorder
}

saveDataHeader := req.Header.Get("Save-Data")

Log.Printf("[%s]: Transforming image %s using config %+v\n", req.URL.String(), imgUrl, config)
Expand Down
Loading

0 comments on commit 78e608d

Please sign in to comment.