imagorpath

package
v0.8.28 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2022 License: Apache-2.0 Imports: 10 Imported by: 1

README

imagorpath

Parse and generate Imagor endpoint using Go struct

import "github.com/cshum/imagor/imagorpath"

...

func Test(t *testing.T) {
	params := imagorpath.Params{
		Image:    "raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png",
		FitIn:    true,
		Width:    500,
		Height:   400,
		PaddingTop: 20,
		PaddingBottom: 20,
		Filters: imagorpath.Filters{
			{
				Name: "fill",
				Args: "white",
			},
		},
	}

	// generate signed Imagor endpoint from Params struct with secret
	path := imagorpath.Generate(params, imagorpath.NewDefaultSigner("mysecret"))

	assert.Equal(t, path, "OyGJyvfYJw8xNkYDmXU-4NPA2U0=/fit-in/500x400/0x20/filters:fill(white)/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png")

	assert.Equal(t,
		// parse Params struct from signed Imagor endpoint
		imagorpath.Parse(path),

		// Params include endpoint attributes with path and signed hash
		imagorpath.Params{
			Path:     "fit-in/500x400/0x20/filters:fill(white)/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png",
			Hash:     "OyGJyvfYJw8xNkYDmXU-4NPA2U0=",
			Image:    "raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png",
			FitIn:    true,
			Width:    500,
			Height:   400,
			PaddingTop: 20,
			PaddingBottom: 20,
			Filters: imagorpath.Filters{
				{
					Name: "fill",
					Args: "white",
				},
			},
		},
	)
}

Documentation

Index

Constants

View Source
const (
	TrimByTopLeft     = "top-left"
	TrimByBottomRight = "bottom-right"
	HAlignLeft        = "left"
	HAlignRight       = "right"
	VAlignTop         = "top"
	VAlignBottom      = "bottom"
)

Variables

This section is empty.

Functions

func Generate

func Generate(p Params, signer Signer) string

Generate Imagor endpoint with signature by Params struct with signer

func GeneratePath added in v0.8.16

func GeneratePath(p Params) string

GeneratePath generate Imagor path by Params struct

func GenerateUnsafe

func GenerateUnsafe(p Params) string

GenerateUnsafe generate unsafe Imagor endpoint by Params struct

func NewHMACSigner added in v0.8.23

func NewHMACSigner(alg func() hash.Hash, truncate int, secret string) *hmacSigner

NewHMACSigner custom HMAC alg signer with secret and string length based truncate

func Normalize added in v0.5.15

func Normalize(image string, safeChars SafeChars) string

Normalize imagor path to be file path friendly, optional escapeByte func for custom SafeChars

Types

type Filter

type Filter struct {
	Name string `json:"name,omitempty"`
	Args string `json:"args,omitempty"`
}

type Filters

type Filters []Filter

type Params

type Params struct {
	Params        bool    `json:"-"`
	Path          string  `json:"path,omitempty"`
	Image         string  `json:"image,omitempty"`
	Unsafe        bool    `json:"unsafe,omitempty"`
	Hash          string  `json:"hash,omitempty"`
	Meta          bool    `json:"meta,omitempty"`
	Trim          bool    `json:"trim,omitempty"`
	TrimBy        string  `json:"trim_by,omitempty"`
	TrimTolerance int     `json:"trim_tolerance,omitempty"`
	CropLeft      float64 `json:"crop_left,omitempty"`
	CropTop       float64 `json:"crop_top,omitempty"`
	CropRight     float64 `json:"crop_right,omitempty"`
	CropBottom    float64 `json:"crop_bottom,omitempty"`
	FitIn         bool    `json:"fit_in,omitempty"`
	Stretch       bool    `json:"stretch,omitempty"`
	Width         int     `json:"width,omitempty"`
	Height        int     `json:"height,omitempty"`
	PaddingLeft   int     `json:"padding_left,omitempty"`
	PaddingTop    int     `json:"padding_top,omitempty"`
	PaddingRight  int     `json:"padding_right,omitempty"`
	PaddingBottom int     `json:"padding_bottom,omitempty"`
	HFlip         bool    `json:"h_flip,omitempty"`
	VFlip         bool    `json:"v_flip,omitempty"`
	HAlign        string  `json:"h_align,omitempty"`
	VAlign        string  `json:"v_align,omitempty"`
	Smart         bool    `json:"smart,omitempty"`
	Filters       Filters `json:"filters,omitempty"`
}

Params image endpoint parameters

func Parse

func Parse(path string) (p Params)

Parse Params struct from Imagor endpoint URI

type SafeChars added in v0.8.23

type SafeChars interface {
	ShouldEscape(c byte) bool
}

func NewSafeChars added in v0.8.23

func NewSafeChars(safechars string) SafeChars

type Signer added in v0.8.23

type Signer interface {
	Sign(path string) string
}

Signer Imagor URL signature signer

func NewDefaultSigner added in v0.8.23

func NewDefaultSigner(secret string) Signer

NewDefaultSigner default signer using SHA1 with secret

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL