shared

package
v1.1.4 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2023 License: MIT Imports: 50 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AlreadyWebP = errors.New("image is already webp")
View Source
var DigestIntervalOpts = []string{
	"10min",
	"1hour",
	"6hour",
	"12hour",
	"1day",
	"7day",
	"30day",
}
View Source
var FuncMap = template.FuncMap{
	"minus":    minus,
	"intRange": intRange,
}

Functions

func CheckHandler

func CheckHandler(w http.ResponseWriter, r *http.Request)

func CreateImgURL

func CreateImgURL(linkify Linkify) func([]byte) []byte

func CreateLogger

func CreateLogger() *zap.SugaredLogger

func CreatePageHandler

func CreatePageHandler(fname string) http.HandlerFunc

func FilenameToTitle

func FilenameToTitle(filename string, title string) string

func GetCustomDomain

func GetCustomDomain(host string, space string) string

func GetDB

func GetDB(r *http.Request) db.DB

func GetEnv

func GetEnv(key string, defaultVal string) string

func GetField

func GetField(r *http.Request, index int) string

func GetLogger

func GetLogger(r *http.Request) *zap.SugaredLogger

func GetStorage

func GetStorage(r *http.Request) storage.ObjectStorage

func GetSubdomain

func GetSubdomain(r *http.Request) string

func GetUsernameFromRequest

func GetUsernameFromRequest(r *http.Request) string

func HtmlPolicy

func HtmlPolicy() *bluemonday.Policy

func IsExtAllowed

func IsExtAllowed(filename string, allowedExt []string) bool

func IsText

func IsText(s string) bool

IsText reports whether a significant prefix of s looks like correct UTF-8; that is, if it is likely that s is human-readable text.

func IsTextFile

func IsTextFile(text string) bool

IsTextFile reports whether the file has a known extension indicating a text file, or if a significant chunk of the specified file looks like correct UTF-8; that is, if it is likely that the file contains human- readable text.

func KeyAsValue added in v1.1.0

func KeyAsValue(token *SplitToken) string

func KeyText

func KeyText(s ssh.Session) (string, error)

func NewImgsRenderer

func NewImgsRenderer(url func([]byte) []byte) renderer.NodeRenderer

func PublishAtDate added in v1.1.0

func PublishAtDate(date string) (*time.Time, error)

func RenderTemplate

func RenderTemplate(cfg *ConfigSite, templates []string) (*template.Template, error)

func SanitizeFileExt

func SanitizeFileExt(fname string) string

func ServeFile

func ServeFile(file string, contentType string) http.HandlerFunc

func Shasum

func Shasum(data []byte) string

func SplitByNewline added in v1.1.0

func SplitByNewline(text string) []string

func TimeAgo

func TimeAgo(t *time.Time) string

func ToUpper

func ToUpper(str string) string

func TokenToMetaField added in v1.1.0

func TokenToMetaField(meta *ListMetaData, token *SplitToken) error

Types

type ConfigSite

type ConfigSite struct {
	config.ConfigCms
	config.ConfigURL
	Debug                bool
	SubdomainsEnabled    bool
	CustomdomainsEnabled bool
	SendgridKey          string
}

func GetCfg

func GetCfg(r *http.Request) *ConfigSite

func (*ConfigSite) BlogURL

func (c *ConfigSite) BlogURL(username string) string

func (*ConfigSite) CssURL

func (c *ConfigSite) CssURL(username string) string

func (*ConfigSite) FullBlogURL

func (c *ConfigSite) FullBlogURL(curl *CreateURL, username string) string

func (*ConfigSite) FullPostURL

func (c *ConfigSite) FullPostURL(curl *CreateURL, username, slug string) string

func (*ConfigSite) GetSiteData

func (c *ConfigSite) GetSiteData() *SitePageData

func (*ConfigSite) HomeURL

func (c *ConfigSite) HomeURL() string

func (*ConfigSite) ImgFullURL

func (c *ConfigSite) ImgFullURL(username, slug string) string

func (*ConfigSite) ImgOrigURL

func (c *ConfigSite) ImgOrigURL(curl *CreateURL, username string, slug string) string

func (*ConfigSite) ImgPostURL

func (c *ConfigSite) ImgPostURL(curl *CreateURL, username string, slug string) string

func (*ConfigSite) ImgURL

func (c *ConfigSite) ImgURL(curl *CreateURL, username string, slug string) string

func (*ConfigSite) IsCustomdomains

func (c *ConfigSite) IsCustomdomains() bool

func (*ConfigSite) IsSubdomains

func (c *ConfigSite) IsSubdomains() bool

func (*ConfigSite) PostURL

func (c *ConfigSite) PostURL(username, slug string) string

func (*ConfigSite) RawPostURL

func (c *ConfigSite) RawPostURL(username, slug string) string

func (*ConfigSite) ReadURL

func (c *ConfigSite) ReadURL() string

func (*ConfigSite) RssBlogURL

func (c *ConfigSite) RssBlogURL(curl *CreateURL, username, tag string) string

func (*ConfigSite) StaticPath

func (c *ConfigSite) StaticPath(fname string) string

func (*ConfigSite) TagURL

func (c *ConfigSite) TagURL(curl *CreateURL, username, tag string) string

type CreateURL

type CreateURL struct {
	Subdomain       bool
	UsernameInRoute bool
	HostDomain      string
	AppDomain       string
	Username        string
	Cfg             *ConfigSite
}

func CreateURLFromRequest

func CreateURLFromRequest(cfg *ConfigSite, r *http.Request) *CreateURL

func NewCreateURL

func NewCreateURL(cfg *ConfigSite) *CreateURL

type ImgOptimizer

type ImgOptimizer struct {
	// Specify the compression factor for RGB channels between 0 and 100. The default is 75.
	// A small factor produces a smaller file with lower quality.
	// Best quality is achieved by using a value of 100.
	Quality float32
	*Ratio
	DeviceType deviceType
	Lossless   bool
}

func NewImgOptimizer

func NewImgOptimizer(logger *zap.SugaredLogger, dimes string) *ImgOptimizer

func (*ImgOptimizer) DecodeWebp

func (h *ImgOptimizer) DecodeWebp(r io.Reader) (image.Image, error)

func (*ImgOptimizer) EncodeWebp

func (h *ImgOptimizer) EncodeWebp(writer io.Writer, img image.Image) error

func (*ImgOptimizer) GetImage

func (h *ImgOptimizer) GetImage(r io.Reader, mimeType string) (image.Image, error)

func (*ImgOptimizer) Process

func (h *ImgOptimizer) Process(writer io.Writer, contents io.Reader) error

type ImgRender

type ImgRender struct {
	ghtml.Config
	ImgURL func(url []byte) []byte
}

func (*ImgRender) RegisterFuncs

func (r *ImgRender) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer)
type Link struct {
	URL  string
	Text string
}

type Linkify

type Linkify interface {
	Create(fname string) string
}

type ListItem added in v1.1.0

type ListItem struct {
	Value       string
	URL         template.URL
	Variable    string
	IsURL       bool
	IsBlock     bool
	IsText      bool
	IsHeaderOne bool
	IsHeaderTwo bool
	IsImg       bool
	IsPre       bool
	Indent      int
}

type ListMetaData added in v1.1.0

type ListMetaData struct {
	PublishAt      *time.Time
	Title          string
	Description    string
	Layout         string
	Tags           []string
	ListType       string // https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type
	DigestInterval string
	Email          string
	InlineContent  bool // allows content inlining to be disabled in feeds.sh emails
}

type ListParsedText added in v1.1.0

type ListParsedText struct {
	Items []*ListItem
	*ListMetaData
}

func ListParseText added in v1.1.0

func ListParseText(text string, linkify Linkify) *ListParsedText

type MetaData

type MetaData struct {
	PublishAt   *time.Time
	Title       string
	Description string
	Nav         []Link
	Tags        []string
	Layout      string
	Image       string
	ImageCard   string
	Hidden      bool
}

type NullLinkify added in v1.1.0

type NullLinkify struct{}

func NewNullLinkify added in v1.1.0

func NewNullLinkify() *NullLinkify

func (*NullLinkify) Create added in v1.1.0

func (n *NullLinkify) Create(s string) string

type PageData

type PageData struct {
	Site SitePageData
}

type ParsedText

type ParsedText struct {
	Html string
	*MetaData
}

func ParseText

func ParseText(text string, linkify Linkify) (*ParsedText, error)

type Ratio

type Ratio struct {
	Width  int
	Height int
}

func GetRatio

func GetRatio(dimes string) (*Ratio, error)

type Route

type Route struct {
	// contains filtered or unexported fields
}

func CreatePProfRoutes

func CreatePProfRoutes(routes []Route) []Route

func NewRoute

func NewRoute(method, pattern string, handler http.HandlerFunc) Route

type ServeFn

type ServeFn func(http.ResponseWriter, *http.Request)

func CreateServe

func CreateServe(routes []Route, subdomainRoutes []Route, cfg *ConfigSite, dbpool db.DB, st storage.ObjectStorage, logger *zap.SugaredLogger) ServeFn

type SitePageData

type SitePageData struct {
	Domain  template.URL
	HomeURL template.URL
	Email   string
}

type SplitToken added in v1.1.0

type SplitToken struct {
	Key   string
	Value string
}

func TextToSplitToken added in v1.1.0

func TextToSplitToken(text string) *SplitToken

Jump to

Keyboard shortcuts

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