gosanitize

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Dec 3, 2018 License: GPL-3.0 Imports: 6 Imported by: 29

README

go-sanitize

Implements a simple library of sanitation methods for data transformation. This package was inspired by processing and protecting incoming user generated content while ensuring the data will be in the correct format. This project follows Go best practices and you can view the standards and specifications at the end of this readme.

MIT Code Size Report Issues Release GoDoc Donate

Installation

go-sanitize requires a supported release of Go.

$ go get -u github.com/mrz1836/go-sanitize
Go Docs

You can view the generated documentation here.

Go Tests & Examples

All built-in unit tests and examples are passing using Go v1.11.2

$ cd ~/../go-sanitize
$ go test ./... -v
Go Benchmarks

Run the generic Go benchmarks:

$ cd ~/../go-sanitize
$ go test -bench=.
Adheres to effective go standards

View the effective go standards.

Adheres to go-lint specifications

The package golint differs from gofmt. The package gofmt formats Go source code, whereas golint prints out style mistakes. The package golint differs from vet. The package vet is concerned with correctness, whereas golint is concerned with coding style. The package golint is in use at Google, and it seeks to match the accepted style of the open source Go project.

How to install golint:

$ go get -u golang.org/x/lint/golint
$ cd ~/../go-sanitize
$ golint
Adheres to go-vet specifications

Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string. Vet uses heuristics that do not guarantee all reports are genuine problems, but it can find errors not caught by the compilers.

How to run vet

$ cd ~/../go-sanitize
$ go vet -v
Example Code in Action

The testable example methods are located in the main test file. Also view the unit tests and benchmarks to see the other implementations.

package main

import (
	"fmt"
	"github.com/mrz1836/go-sanitize"
)

func main() {

	//Execute and print
	fmt.Println("Result:", gosanitize.IPAddress(" 192.168.0.1 "))

	// Output: 192.168.0.1
}

Documentation

Overview

Package gosanitize implements a simple library of various sanitation methods for data transformation.

If you have any suggestions or comments, please feel free to open an issue on this project's GitHub page.

Author: MrZ

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Alpha

func Alpha(original string, spaces bool) string

Alpha returns only alpha characters. Set the parameter spaces to true if you want to allow space characters. Valid characters are a-z and A-Z.

View examples: sanitize_test.go
Example (NoSpaces)

ExampleAlpha_noSpaces example using Alpha() and no spaces flag

fmt.Println(Alpha("Example String!", false))
Output:

ExampleString
Example (WithSpaces)

ExampleAlpha_withSpaces example using Alpha with spaces flag

fmt.Println(Alpha("Example String!", true))
Output:

Example String

func AlphaNumeric

func AlphaNumeric(original string, spaces bool) string

AlphaNumeric returns only alphanumeric characters. Set the parameter spaces to true if you want to allow space characters. Valid characters are a-z, A-Z and 0-9.

View examples: sanitize_test.go
Example (NoSpaces)

ExampleAlphaNumeric_noSpaces example using AlphaNumeric() with no spaces

fmt.Println(AlphaNumeric("Example String 2!", false))
Output:

ExampleString2
Example (WithSpaces)

ExampleAlphaNumeric_withSpaces example using AlphaNumeric() with spaces

fmt.Println(AlphaNumeric("Example String 2!", true))
Output:

Example String 2

func Custom

func Custom(original string, regExp string) string

Custom uses a custom regex string and returns the sanitized result. This is used for any additional regex that this package does not contain.

View examples: sanitize_test.go
Example (Alpha)

ExampleCustom_alpha example using Custom() using an alpha regex

fmt.Println(Custom("Example String 2!", `[^a-zA-Z]`))
Output:

ExampleString
Example (Numeric)

ExampleCustom_numeric example using Custom() using a numeric regex

fmt.Println(Custom("Example String 2!", `[^0-9]`))
Output:

2

func Decimal

func Decimal(original string) string

Decimal returns sanitized decimal/float values in either positive or negative.

View examples: sanitize_test.go
Example (Negative)

ExampleDecimal_negative example using Decimal() for a negative number

fmt.Println(Decimal("$ -99.99!"))
Output:

-99.99
Example (Positive)

ExampleDecimal_positive example using Decimal() for a positive number

fmt.Println(Decimal("$ 99.99!"))
Output:

99.99

func Domain

func Domain(original string, preserveCase bool, removeWww bool) (string, error)

Domain returns a proper hostname / domain name. Preserve case is to flag keeping the case versus forcing to lowercase. Use the removeWww flag to strip the www sub-domain. This method returns an error if parse critically fails.

View examples: sanitize_test.go
Example

ExampleDomain example using Domain()

fmt.Println(Domain("https://www.Example.COM/?param=value", false, false))
Output:

www.example.com <nil>
Example (PreserveCase)

ExampleDomain_preserveCase example using Domain() and preserving the case

fmt.Println(Domain("https://www.Example.COM/?param=value", true, false))
Output:

www.Example.COM <nil>
Example (RemoveWww)

ExampleDomain_removeWww example using Domain() and removing the www sub-domain

fmt.Println(Domain("https://www.Example.COM/?param=value", false, true))
Output:

example.com <nil>

func Email

func Email(original string, preserveCase bool) string

Email returns a sanitized email address string. Email addresses are forced to lowercase and removes any mail-to prefixes.

View examples: sanitize_test.go
Example

ExampleEmail example using Email()

fmt.Println(Email("mailto:Person@Example.COM", false))
Output:

person@example.com
Example (PreserveCase)

ExampleEmail_preserveCase example using Email() and preserving the case

fmt.Println(Email("mailto:Person@Example.COM", true))
Output:

Person@Example.COM

func FirstToUpper

func FirstToUpper(original string) string

FirstToUpper overwrites the first letter as an uppercase letter and preserves the rest of the string.

View examples: sanitize_test.go
Example

ExampleFirstToUpper example using FirstToUpper()

fmt.Println(FirstToUpper("this works"))
Output:

This works

func FormalName

func FormalName(original string) string

FormalName returns a formal name or surname (for First, Middle and Last)

View examples: sanitize_test.go
Example

ExampleFormalName example using FormalName()

fmt.Println(FormalName("John McDonald Jr.!"))
Output:

John McDonald Jr.

func HTML

func HTML(original string) string

HTML returns a string without any <HTML> tags.

View examples: sanitize_test.go
Example

ExampleHTML example using HTML()

fmt.Println(HTML("<body>This Works?</body>"))
Output:

This Works?

func IPAddress

func IPAddress(original string) string

IPAddress returns an ip address for both ipv4 and ipv6 formats.

View examples: sanitize_test.go
Example (Ipv4)

ExampleIPAddress_ipv4 example using IPAddress() for IPV4 address

fmt.Println(IPAddress(" 192.168.0.1 "))
Output:

192.168.0.1
Example (Ipv6)

ExampleIPAddress_ipv6 example using IPAddress() for IPV6 address

fmt.Println(IPAddress(" 2602:305:bceb:1bd0:44ef:fedb:4f8f:da4f "))
Output:

2602:305:bceb:1bd0:44ef:fedb:4f8f:da4f

func Numeric

func Numeric(original string) string

Numeric returns numbers only.

View examples: sanitize_test.go
Example

ExampleNumeric example using Numeric()

fmt.Println(Numeric("This:123 + 90!"))
Output:

12390

func PathName

func PathName(original string) string

PathName returns a formatted path compliant name.

View examples: sanitize_test.go
Example

ExampleNumeric example using PathName()

fmt.Println(PathName("/This-Works_Now-123/!"))
Output:

This-Works_Now-123

func Punctuation

func Punctuation(original string) string

Punctuation returns a string with basic punctuation preserved.

View examples: sanitize_test.go
Example

ExamplePunctuation example using Punctuation()

fmt.Println(Punctuation(`[@"Does" 'this' work?@] this too`))
Output:

"Does" 'this' work? this too

func Scripts

func Scripts(original string) string

Scripts removes all scripts, iframes and embeds tags from string.

View examples: sanitize_test.go
Example

ExampleScripts example using Scripts()

fmt.Println(Scripts(`Does<script>This</script>Work?`))
Output:

DoesWork?

func SingleLine

func SingleLine(original string) string

SingleLine returns a single line string, removes all carriage returns.

View examples: sanitize_test.go
Example

ExampleSingleLine example using SingleLine()

fmt.Println(SingleLine(`Does
This
Work?`))
Output:

Does This Work?

func Time

func Time(original string) string

Time returns just the time part of the string.

View examples: sanitize_test.go
Example

ExampleTime example using Time()

fmt.Println(Time(`Time 01:02:03!`))
Output:

01:02:03

func URI

func URI(original string) string

URI returns allowed URI characters only.

View examples: sanitize_test.go
Example

ExampleURI example using URI()

fmt.Println(URI("/This/Works?^No&this"))
Output:

/This/Works?No&this

func URL

func URL(original string) string

URL returns a formatted url friendly string.

View examples: sanitize_test.go
Example

ExampleURL example using URL()

fmt.Println(URL("https://Example.com/This/Works?^No&this"))
Output:

https://Example.com/This/Works?No&this

func XML

func XML(original string) string

XML returns a string without any <XML> tags - alias of HTML.

View examples: sanitize_test.go
Example

ExampleXML example using XML()

fmt.Println(XML("<xml>This?</xml>"))
Output:

This?

func XSS

func XSS(original string) string

XSS removes known XSS attack strings or script strings.

View examples: sanitize_test.go
Example

ExampleXSS example using XSS()

fmt.Println(XSS("<script>This?</script>"))
Output:

>This?</

Types

This section is empty.

Jump to

Keyboard shortcuts

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