utils

package
v0.0.0-...-ea7b840 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DerefStr

func DerefStr(s *string, fallback string) string

DerefStr dereferences a pointer to a string and returns the value or a fallback if the pointer is nil.

func DownloadFile

func DownloadFile(url, filename string, opts DownloadOptions) string

DownloadFile downloads a file from URL to a local temp directory. Returns the local file path or empty string on error.

func DownloadFileSimple

func DownloadFileSimple(url, filename string) string

DownloadFileSimple is a simplified version of DownloadFile without options

func DownloadToFile

func DownloadToFile(ctx context.Context, client *http.Client, req *http.Request, maxBytes int64) (string, error)

DownloadToFile streams an HTTP response body to a temporary file in small chunks (~32KB), keeping peak memory usage constant regardless of file size.

Parameters:

  • ctx: context for cancellation/timeout
  • client: HTTP client to use (caller controls timeouts, transport, etc.)
  • req: fully prepared *http.Request (method, URL, headers, etc.)
  • maxBytes: maximum bytes to download; 0 means no limit

Returns the path to the temporary file. The caller is responsible for removing it when done (defer os.Remove(path)).

On any error the temp file is cleaned up automatically.

func ExtractZipFile

func ExtractZipFile(zipPath string, targetDir string) error

ExtractZipFile extracts a ZIP archive from disk to targetDir. It reads entries one at a time from disk, keeping memory usage minimal.

Security: rejects path traversal attempts and symlinks.

func IsAudioFile

func IsAudioFile(filename, contentType string) bool

IsAudioFile checks if a file is an audio file based on its filename extension and content type.

func SanitizeFilename

func SanitizeFilename(filename string) string

SanitizeFilename removes potentially dangerous characters from a filename and returns a safe version for local filesystem storage.

func SplitMessage

func SplitMessage(content string, maxLen int) []string

SplitMessage splits long messages into chunks, preserving code block integrity. The function reserves a buffer (10% of maxLen, min 50) to leave room for closing code blocks, but may extend to maxLen when needed. Call SplitMessage with the full text content and the maximum allowed length of a single message; it returns a slice of message chunks that each respect maxLen and avoid splitting fenced code blocks.

func Truncate

func Truncate(s string, maxLen int) string

Truncate returns a truncated version of s with at most maxLen runes. Handles multi-byte Unicode characters properly. If the string is truncated, "..." is appended to indicate truncation.

func ValidateSkillIdentifier

func ValidateSkillIdentifier(identifier string) error

ValidateSkillIdentifier validates that the given skill identifier (slug or registry name) is non-empty and does not contain path separators ("/", "\\") or ".." for security.

Types

type DownloadOptions

type DownloadOptions struct {
	Timeout      time.Duration
	ExtraHeaders map[string]string
	LoggerPrefix string
}

DownloadOptions holds optional parameters for downloading files

Jump to

Keyboard shortcuts

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