goutil

package module
v2.0.3 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2022 License: MIT Imports: 21 Imported by: 0

README

Go Util

donation link

A simple utility package for golang.

This module simply adds a variety of useful functions in an easy to use way.

Installation


  go get github.com/AspieSoft/goutil

Usage


import (
  "github.com/AspieSoft/goutil"
)

func main(){
  goutil.JoinPath("root", "file") // a safer way to join 2 file paths without backtracking

  goutil.Contains([]any, any) // checks if an array contains a value

  // simple AES-CFB Encryption
  encrypted := goutil.Encrypt("my message", "password")
  goutil.Decrypt(encrypted, "password")

  // simple gzip compression for strings
  compressed := goutil.Compress("my long string")
  goutil.Decompress(compressed)

  // watch a directory recursively
  goutil.WatchDir("my/folder", &goutil.Watcher{
    FileChange: func(path string, op string){
      // do something when a file changes
      path // the file path the change happened to
      op // the change operation
    },

    DirAdd: func(path string, op string){
      // do something when a directory is added
      // return false to prevent that directory from being watched
      return true
    },

    Remove: func(path string, op string){
      // do something when a file or directory is removed
      // return false to prevent that directory from no longer being watched
      return true
    },

    Any: func(path string, op string){
      // do something every time something happenes
    },
  })
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var VarType map[string]reflect.Type

Functions

func CleanArray

func CleanArray(data []interface{}) []interface{}

CleanArray runs CleanStr on an []interface{} CleanStr: Sanitizes a string to valid UTF-8

func CleanByte

func CleanByte(b []byte) []byte

CleanByte will sanitizes a []byte to valid UTF-8

func CleanJSON

func CleanJSON(val interface{}) interface{}

CleanJSON runs CleanStr on a complex json object recursively CleanStr: Sanitizes a string to valid UTF-8

func CleanMap

func CleanMap(data map[string]interface{}) map[string]interface{}

CleanMap runs CleanStr on a map[string]interface{} CleanStr: Sanitizes a string to valid UTF-8

func CleanStr

func CleanStr(str string) string

CleanStr will sanitizes a string to valid UTF-8

func Compress

func Compress(msg string) (string, error)

Compress is Gzip compression for a string

func Contains

func Contains[T any](search []T, value T) bool

Contains returns true if an array contains a value

func ContainsMap

func ContainsMap[T Hashable, J any](search map[T]J, value J) bool

ContainsMap returns true if a map contains a value

func ContainsMapKey

func ContainsMapKey[T Hashable, J any](search map[T]J, key T) bool

ContainsMapKey returns true if a map contains a key

func DecodeJSON

func DecodeJSON(data io.Reader) (map[string]interface{}, error)

DecodeJSON is useful for decoding a JSON output from the body of an http request example: goutil.DecodeJSON(r.Body)

func Decompress

func Decompress(str string) (string, error)

Decompress is Gzip decompression for a string

func Decrypt

func Decrypt(text string, key string) ([]byte, error)

Decrypt is AES-CFB Decryption for a string

func DecryptLocal added in v2.0.1

func DecryptLocal(ciphertext string, key string) ([]byte, error)

DecryptLocal is a Non Standard AES-CFB Decryption method Purposely incompatible with other libraries and programing languages This was made by accident, and this bug is now a feature Notice: This Feature Is Experimental

func DeepCopyJson

func DeepCopyJson(data map[string]interface{}) (map[string]interface{}, error)

DeepCopyJson will stringify and parse json to create a deep copy and escape pointers

func Encrypt

func Encrypt(text string, key string) (string, error)

Encrypt is AES-CFB Encryption for a string

func EncryptLocal added in v2.0.1

func EncryptLocal(text []byte, key string) (string, error)

EncryptLocal is a Non Standard AES-CFB Encryption method Purposely incompatible with other libraries and programing languages This was made by accident, and this bug is now a feature Notice: This Feature Is Experimental

func EscapeHTML

func EscapeHTML(html []byte) []byte

EscapeHTML replaces HTML characters with html entities Also prevents & from results

func EscapeHTMLArgs

func EscapeHTMLArgs(html []byte) []byte

EscapeHTMLArgs escapes quotes and backslashes for use within HTML quotes

func FormatMemoryUsage

func FormatMemoryUsage(b uint64) float64

FormatMemoryUsage converts bytes to megabytes

func GetFileFromParent

func GetFileFromParent(root string, start string, search string) (string, bool)

GetFileFromParent checks if the parent (or sub parent) directory of a file contains a specific file or folder root: the highest grandparent to check before quitting start: the lowest level to start searching from (if a directory is passed, it will not be included in your search) search: what file you want to search fro

func GetLinuxInstaller

func GetLinuxInstaller(man []string) string

GetLinuxInstaller attempt to find out what package manager a linux distro is using or has available

func HasLinuxPkg

func HasLinuxPkg(pkg []string) bool

HasLinuxPkg attempt to check if a linux package is installed

func IndexOf added in v2.0.1

func IndexOf[T any](search []T, value T) (int, error)

IndexOf returns the index of a value in an array returns -1 and an error if the value is not found

func IndexOfMap added in v2.0.1

func IndexOfMap[T Hashable, J any](search map[T]J, value J) (T, error)

IndexOfMap returns the index of a value in a map returns an error if the value is not found

func InstallLinuxPkg

func InstallLinuxPkg(pkg []string, man ...string)

InstallLinuxPkg attempts to install a linux package this method will also resolve the sudo command and ask for a user password if needed this method will not attempt to run an install, if it finds the package is already installed

func IsZeroOfUnderlyingType

func IsZeroOfUnderlyingType(x interface{}) bool

IsZeroOfUnderlyingType can be used to determine if an interface{} in null or empty

func JoinPath

func JoinPath(path ...string) (string, error)

JoinPath joins multiple file types with safety from backtracking

func ParseJson

func ParseJson(b []byte) (map[string]interface{}, error)

ParseJson converts a json string into a map of strings

func StringifyJSON

func StringifyJSON(data interface{}, ind ...int) ([]byte, error)

StringifyJSON converts a map or array to a JSON string

func ToByteArray

func ToByteArray(res interface{}) []byte

ToByteArray converts multiple types to a []byte accepts: string, []byte, byte, int32, int, int64, float64, float32

func ToInt

func ToInt(res interface{}) int

ToInt converts multiple types to an int accepts: int, int32, int64, float64, float32, string, []byte, byte

func ToString

func ToString(res interface{}) string

ToString converts multiple types to a string accepts: string, []byte, byte, int32, int, int64, float64, float32

func TrimRepeats added in v2.0.2

func TrimRepeats(b []byte, chars []byte) []byte

TrimRepeats trims repeating adjacent characters and reduces them to one character b: byte array to trim chars: list of bytes to trim repeats of

func WatchDir

func WatchDir(root string, cb *Watcher)

WatchDir watches the files in a directory and its subdirectories for changes

Types

type Hashable

type Hashable interface {
	int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | string | complex64 | complex128
}

type Watcher

type Watcher struct {
	FileChange func(path string, op string)
	DirAdd     func(path string, op string) (addWatcher bool)
	Remove     func(path string, op string) (removeWatcher bool)
	Any        func(path string, op string)
}

A watcher instance for the WatchDir function

Jump to

Keyboard shortcuts

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