/* Copyright © 2023 Seednode */ package types import ( "errors" "fmt" "os" "strings" "unicode/utf8" ) func RegisterText() *Type { return &Type{ Css: func() string { var css strings.Builder css.WriteString(`html,body{margin:0;padding:0;height:100%;}`) css.WriteString(`a{color:inherit;display:block;height:100%;width:100%;text-decoration:none;}`) css.WriteString(`pre{margin:.5rem;}`) return css.String() }, Title: func(queryParams, fileUri, filePath, fileName, mime string) string { return fmt.Sprintf(`%s`, fileName) }, Body: func(queryParams, fileUri, filePath, fileName, mime string) string { body, err := os.ReadFile(filePath) if err != nil { body = []byte{} } return fmt.Sprintf(`
%s
`, queryParams, body) }, Extensions: []string{ `.css`, `.csv`, `.html`, `.js`, `.json`, `.md`, `.txt`, `.xml`, }, MimeTypes: []string{ `application/json`, `application/xml`, `text/css`, `text/csv`, `text/javascript`, `text/plain`, `text/plain; charset=utf-8`, }, Validate: func(path string) bool { file, err := os.Open(path) switch { case errors.Is(err, os.ErrNotExist): return false case err != nil: return false } defer file.Close() head := make([]byte, 512) file.Read(head) return utf8.Valid(head) }, } }