0
Fork 0
mirror of https://github.com/willnorris/imageproxy.git synced 2024-12-16 21:56:43 -05:00

collapse data and transform packages into proxy

This commit is contained in:
Will Norris 2013-12-26 12:33:22 -08:00
parent d8aa853b3d
commit fc8552e6b4
4 changed files with 19 additions and 26 deletions

View file

@ -13,7 +13,7 @@
// limitations under the License.
// Package data provides common shared data structures for imageproxy.
package data
package proxy
import (
"fmt"

View file

@ -27,8 +27,6 @@ import (
"github.com/golang/glog"
"github.com/gregjones/httpcache"
"github.com/willnorris/imageproxy/data"
"github.com/willnorris/imageproxy/transform"
)
// URLError reports a malformed URL error.
@ -42,9 +40,9 @@ func (e URLError) Error() string {
}
// NewRequest parses an http.Request into an image request.
func NewRequest(r *http.Request) (*data.Request, error) {
func NewRequest(r *http.Request) (*Request, error) {
var err error
req := new(data.Request)
req := new(Request)
path := r.URL.Path[1:] // strip leading slash
req.URL, err = url.Parse(path)
@ -60,7 +58,7 @@ func NewRequest(r *http.Request) (*data.Request, error) {
return nil, URLError{fmt.Sprintf("unable to parse remote URL: %v", err), r.URL}
}
req.Options = data.ParseOptions(parts[0])
req.Options = ParseOptions(parts[0])
}
if !req.URL.IsAbs() {
@ -142,7 +140,7 @@ func (p *Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
b, _ := transform.Transform(image.Bytes, req.Options)
b, _ := Transform(image.Bytes, req.Options)
image.Bytes = b
w.Header().Add("Content-Length", strconv.Itoa(len(image.Bytes)))
@ -150,7 +148,7 @@ func (p *Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write(image.Bytes)
}
func (p *Proxy) fetchRemoteImage(u string) (*data.Image, error) {
func (p *Proxy) fetchRemoteImage(u string) (*Image, error) {
resp, err := p.Client.Get(u)
if err != nil {
return nil, err
@ -166,7 +164,7 @@ func (p *Proxy) fetchRemoteImage(u string) (*data.Image, error) {
return nil, err
}
return &data.Image{
return &Image{
URL: u,
Expires: parseExpires(resp),
Etag: resp.Header.Get("Etag"),

View file

@ -18,17 +18,13 @@ import (
"net/http"
"reflect"
"testing"
"github.com/willnorris/imageproxy/data"
)
var emptyOptions = new(data.Options)
func TestNewRequest(t *testing.T) {
tests := []struct {
URL string
RemoteURL string
Options *data.Options
Options *Options
ExpectError bool
}{
// invalid URLs
@ -52,7 +48,7 @@ func TestNewRequest(t *testing.T) {
},
{
"http://localhost/1xs/http://example.com/",
"http://example.com/", &data.Options{Width: 1}, false,
"http://example.com/", &Options{Width: 1}, false,
},
// valid URLs
@ -84,27 +80,27 @@ func TestNewRequest(t *testing.T) {
},
{
"http://localhost/1x/http://example.com/",
"http://example.com/", &data.Options{1, 0, false, 0, false, false}, false,
"http://example.com/", &Options{1, 0, false, 0, false, false}, false,
},
{
"http://localhost/x1/http://example.com/",
"http://example.com/", &data.Options{0, 1, false, 0, false, false}, false,
"http://example.com/", &Options{0, 1, false, 0, false, false}, false,
},
{
"http://localhost/1x2/http://example.com/",
"http://example.com/", &data.Options{1, 2, false, 0, false, false}, false,
"http://example.com/", &Options{1, 2, false, 0, false, false}, false,
},
{
"http://localhost/0.1x0.2/http://example.com/",
"http://example.com/", &data.Options{0.1, 0.2, false, 0, false, false}, false,
"http://example.com/", &Options{0.1, 0.2, false, 0, false, false}, false,
},
{
"http://localhost/,fit/http://example.com/",
"http://example.com/", &data.Options{0, 0, true, 0, false, false}, false,
"http://example.com/", &Options{0, 0, true, 0, false, false}, false,
},
{
"http://localhost/1x2,fit,r=90,fv,fh/http://example.com/",
"http://example.com/", &data.Options{1, 2, true, 90, true, true}, false,
"http://localhost/1x2,fit,r90,fv,fh/http://example.com/",
"http://example.com/", &Options{1, 2, true, 90, true, true}, false,
},
}

View file

@ -13,7 +13,7 @@
// limitations under the License.
// Package transform handles image transformation such as resizing.
package transform
package proxy
import (
"bytes"
@ -24,13 +24,12 @@ import (
"reflect"
"github.com/disintegration/imaging"
"github.com/willnorris/imageproxy/data"
)
var emptyOptions = new(data.Options)
var emptyOptions = new(Options)
// Transform the provided image.
func Transform(img []byte, opt *data.Options) ([]byte, error) {
func Transform(img []byte, opt *Options) ([]byte, error) {
if opt == nil || reflect.DeepEqual(opt, emptyOptions) {
// bail if no transformation was requested
return img, nil