shared

package
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2023 License: MIT Imports: 54 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AlreadyWebPError = 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,
}
View Source
var GB = MB * 1024
View Source
var IsSvgError = errors.New("image is an svg")
View Source
var KB = 1024
View Source
var MB = KB * 1024

Functions

func BytesToGB added in v1.2.0

func BytesToGB(size int) float32

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 GetAssetBucketName added in v1.2.0

func GetAssetBucketName(userID string) string

func GetAssetFileName added in v1.2.0

func GetAssetFileName(entry *utils.FileEntry) string

func GetCache added in v1.1.5

func GetCache(r *http.Request) *cache.Cache

func GetCustomDomain

func GetCustomDomain(logger *zap.SugaredLogger, 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 GetImageForOptimization added in v1.1.5

func GetImageForOptimization(r io.Reader, mimeType string) (image.Image, error)

func GetLogger

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

func GetMimeType added in v1.2.0

func GetMimeType(fpath string) string

func GetProjectName added in v1.2.0

func GetProjectName(entry *utils.FileEntry) string

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 IsValidSubdomain added in v1.2.0

func IsValidSubdomain(subd string) bool

func IsWebOptimized added in v1.1.5

func IsWebOptimized(mimeType string) bool

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) AssetURL added in v1.2.0

func (c *ConfigSite) AssetURL(username, projectName, fpath string) string

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) 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
	Aliases     []string
	Layout      string
	Image       string
	ImageCard   string
	Favicon     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 {
	Method  string
	Regex   *regexp.Regexp
	Handler http.HandlerFunc
}

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, cache *cache.Cache) ServeFn

type SitePageData

type SitePageData struct {
	Domain      template.URL
	HomeURL     template.URL
	Email       string
	Description 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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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