mirror of
https://github.com/willnorris/imageproxy.git
synced 2026-04-25 04:46:24 +02:00
move data structures to data package
also use io.Copy to copy fetched image to http.ResponseWriter.
This commit is contained in:
parent
11441a107a
commit
a8fb3012bd
2 changed files with 64 additions and 34 deletions
55
data/data.go
Normal file
55
data/data.go
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
// Package data provides common shared data structures for go-imageproxy.
|
||||
package data
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Transform specifies transformations that can be performed on a
|
||||
// requested image.
|
||||
type Transform struct {
|
||||
Width int `json:"width"` // requested width, in pixels
|
||||
Height int `json:"height"` // requested height, in pixels
|
||||
}
|
||||
|
||||
func (o Transform) String() string {
|
||||
return fmt.Sprintf("%dx%d", o.Width, o.Height)
|
||||
}
|
||||
|
||||
func ParseTransform(str string) (*Transform, error) {
|
||||
t := new(Transform)
|
||||
var err error
|
||||
var h, w string
|
||||
|
||||
size := strings.SplitN(str, "x", 2)
|
||||
w = size[0]
|
||||
if len(size) > 1 {
|
||||
h = size[1]
|
||||
} else {
|
||||
h = w
|
||||
}
|
||||
|
||||
if w != "" {
|
||||
t.Width, err = strconv.Atoi(w)
|
||||
if err != nil {
|
||||
return nil, errors.New("width must be an int")
|
||||
}
|
||||
}
|
||||
if h != "" {
|
||||
t.Height, err = strconv.Atoi(h)
|
||||
if err != nil {
|
||||
return nil, errors.New("height must be an int")
|
||||
}
|
||||
}
|
||||
|
||||
return t, nil
|
||||
}
|
||||
|
||||
type Request struct {
|
||||
URL *url.URL // URL of the image to proxy
|
||||
Transform *Transform // Image transformation to perform
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue