common

package
v0.0.0-...-095394f Latest Latest
Warning

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

Go to latest
Published: May 7, 2024 License: MIT Imports: 21 Imported by: 318

README

GoCryptoTrader package Common

Build Status Software License GoDoc Coverage Status Go Report Card

This common package is part of the GoCryptoTrader codebase.

This is still in active development

You can track ideas, planned features and what's in progress on this Trello board: https://trello.com/b/ZAhMhpOy/gocryptotrader.

Join our slack to discuss all things related to GoCryptoTrader! GoCryptoTrader Slack

Current Features for common

This package collates basic broad functions that are used throughout this codebase.
  • Coding example
import "github.com/thrasher-corp/gocryptotrader/common"

testString := "aAaAa"

upper := strings.ToUpper(testString)

// upper == "AAAAA"
Please click GoDocs chevron above to view current GoDoc information for this package

Contribution

Please feel free to submit any pull requests or suggest any desired features to be added.

When submitting a PR, please abide by our coding guidelines:

  • Code must adhere to the official Go formatting guidelines (i.e. uses gofmt).
  • Code must be documented adhering to the official Go commentary guidelines.
  • Code must adhere to our coding style.
  • Pull requests need to be based on and opened against the master branch.

Donations

If this framework helped you in any way, or you would like to support the developers working on it, please donate Bitcoin to:

bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc

Documentation

Index

Constants

View Source
const (
	// SimpleTimeFormatWithTimezone a common, but non-implemented time format in golang
	SimpleTimeFormatWithTimezone = time.DateTime + " MST"
	// GctExt is the extension for GCT Tengo script files
	GctExt = ".gct"
)
View Source
const (
	SmallLetters     = "abcdefghijklmnopqrstuvwxyz"
	CapitalLetters   = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	NumberCharacters = "0123456789"
)

Strings representing the full lower, upper case English character alphabet and base-10 numbers for generating a random string.

Variables

View Source
var (

	// ErrNotYetImplemented defines a common error across the code base that
	// alerts of a function that has not been completed or tied into main code
	ErrNotYetImplemented = errors.New("not yet implemented")
	// ErrFunctionNotSupported defines a standardised error for an unsupported
	// wrapper function by an API
	ErrFunctionNotSupported = errors.New("unsupported wrapper function")

	// ErrDateUnset is an error for start end check calculations
	ErrDateUnset = errors.New("date unset")
	// ErrStartAfterEnd is an error for start end check calculations
	ErrStartAfterEnd = errors.New("start date after end date")
	// ErrStartEqualsEnd is an error for start end check calculations
	ErrStartEqualsEnd = errors.New("start date equals end date")
	// ErrStartAfterTimeNow is an error for start end check calculations
	ErrStartAfterTimeNow = errors.New("start date is after current time")
	// ErrNilPointer defines an error for a nil pointer
	ErrNilPointer = errors.New("nil pointer")
	// ErrCannotCalculateOffline is returned when a request wishes to calculate
	// something offline, but has an online requirement
	ErrCannotCalculateOffline = errors.New("cannot calculate offline, unsupported")
	// ErrNoResponse is returned when a response has no entries/is empty
	// when one is expected
	ErrNoResponse = errors.New("no response")

	// ErrTypeAssertFailure defines an error when type assertion fails
	ErrTypeAssertFailure = errors.New("type assert failure")
)

Vars for common.go operations

Functions

func AddPaddingOnUpperCase

func AddPaddingOnUpperCase(s string) string

AddPaddingOnUpperCase adds padding to a string when detecting an upper case letter. If there are multiple upper case items like `ThisIsHTTPExample`, it will only pad between like this `This Is HTTP Example`.

func AppendError

func AppendError(original, incoming error) error

AppendError appends an error to a list of exesting errors Either argument may be: * A vanilla error * An error implementing Unwrap() []error e.g. fmt.Errorf("%w: %w") * nil The result will be an error which may be a multiError if multipleErrors were found

func ChangePermission

func ChangePermission(directory string) error

ChangePermission lists all the directories and files in an array

func CreateDir

func CreateDir(dir string) error

CreateDir creates a directory based on the supplied parameter

func EncodeURLValues

func EncodeURLValues(urlPath string, values url.Values) string

EncodeURLValues concatenates url values onto a url string and returns a string

func ExcludeError

func ExcludeError(err, excl error) error

ExcludeError returns a new error excluding any errors matching excl For a standard error it will either return the error unchanged or nil For an error which implements Unwrap() []error it will remove any errors matching excl and return the remaining errors or nil Any non-error messages and formatting from fmt.Errorf will be lost; This function is written for conditions

func ExtractHost

func ExtractHost(address string) string

ExtractHost returns the hostname out of a string

func ExtractPort

func ExtractPort(host string) int

ExtractPort returns the port name out of a string

func GenerateRandomString

func GenerateRandomString(length uint, characters ...string) (string, error)

GenerateRandomString generates a random string provided a length and list of Character types { SmallLetters, CapitalLetters, NumberCharacters}. if no characters are provided, the function uses a NumberCharacters(string of numeric characters).

func GetDefaultDataDir

func GetDefaultDataDir(env string) string

GetDefaultDataDir returns the default data directory Windows - C:\Users\%USER%\AppData\Roaming\GoCryptoTrader Linux/Unix or OSX - $HOME/.gocryptotrader

func GetExecutablePath

func GetExecutablePath() (string, error)

GetExecutablePath returns the executables launch path

func GetTypeAssertError

func GetTypeAssertError(required string, received interface{}, fieldDescription ...string) error

GetTypeAssertError returns additional information for when an assertion failure occurs. fieldDescription is an optional way to return what the affected field was for

func GetURIPath

func GetURIPath(uri string) string

GetURIPath returns the path of a URL given a URI

func InArray

func InArray(val, array interface{}) (exists bool, index int)

InArray checks if _val_ belongs to _array_

func IsEnabled

func IsEnabled(isEnabled bool) string

IsEnabled takes in a boolean param and returns a string if it is enabled or disabled

func IsValidCryptoAddress

func IsValidCryptoAddress(address, crypto string) (bool, error)

IsValidCryptoAddress validates your cryptocurrency address string using the regexp package // Validation issues occurring because "3" is contained in litecoin and Bitcoin addresses - non-fatal

func MatchesEmailPattern

func MatchesEmailPattern(value string) bool

MatchesEmailPattern ensures that the string is an email address by regexp check

func NewHTTPClientWithTimeout

func NewHTTPClientWithTimeout(t time.Duration) *http.Client

NewHTTPClientWithTimeout initialises a new HTTP client and its underlying transport IdleConnTimeout with the specified timeout duration

func SendHTTPRequest

func SendHTTPRequest(ctx context.Context, method, urlPath string, headers map[string]string, body io.Reader, verbose bool) ([]byte, error)

SendHTTPRequest sends a request using the http package and returns the body contents

func SetHTTPClient

func SetHTTPClient(client *http.Client) error

SetHTTPClient sets a custom HTTP client.

func SetHTTPClientWithTimeout

func SetHTTPClientWithTimeout(t time.Duration) error

SetHTTPClientWithTimeout sets a new *http.Client with different timeout settings

func SetHTTPUserAgent

func SetHTTPUserAgent(agent string) error

SetHTTPUserAgent sets the user agent which will be used for all common HTTP requests.

func SplitStringSliceByLimit

func SplitStringSliceByLimit(in []string, limit uint) [][]string

SplitStringSliceByLimit splits a slice of strings into slices by input limit and returns a slice of slice of strings

func StartEndTimeCheck

func StartEndTimeCheck(start, end time.Time) error

StartEndTimeCheck provides some basic checks which occur frequently in the codebase

func StringDataCompare

func StringDataCompare(haystack []string, needle string) bool

StringDataCompare data checks the substring array with an input and returns a bool

func StringDataCompareInsensitive

func StringDataCompareInsensitive(haystack []string, needle string) bool

StringDataCompareInsensitive data checks the substring array with an input and returns a bool irrespective of lower or upper case strings

func StringDataContains

func StringDataContains(haystack []string, needle string) bool

StringDataContains checks the substring array with an input and returns a bool

func StringDataContainsInsensitive

func StringDataContainsInsensitive(haystack []string, needle string) bool

StringDataContainsInsensitive checks the substring array with an input and returns a bool irrespective of lower or upper case strings

func StringSliceDifference

func StringSliceDifference(slice1, slice2 []string) []string

StringSliceDifference concatenates slices together based on its index and returns an individual string array

func YesOrNo

func YesOrNo(input string) bool

YesOrNo returns a boolean variable to check if input is "y" or "yes"

Types

type ErrorCollector

type ErrorCollector struct {
	C  chan error
	Wg sync.WaitGroup
}

ErrorCollector allows collecting a stream of errors from concurrent go routines Users should call e.Wg.Done and send errors to e.C

func CollectErrors

func CollectErrors(n int) *ErrorCollector

CollectErrors returns an ErrorCollector with WaitGroup and Channel buffer set to n

func (*ErrorCollector) Collect

func (e *ErrorCollector) Collect() (errs error)

Collect runs waits for e.Wg to be Done, closes the error channel, and return a error collection

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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