base

package module
v0.11.2 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2020 License: Apache-2.0 Imports: 11 Imported by: 0

README

moov-io/base

GoDoc Build Status Coverage Status Go Report Card Apbasee 2 licensed

Package github.com/moov-io/base implements core libraries used in multiple Moov projects. Refer to each projects documentation for more details.

Project Status

Note: This project is under active development and is not production ready, but we would appreciate feedback and contributions!

Getting Started

You can either clone down the code (git clone git@github.com:moov-io/base.git) or grab the modules into your cache (go get -u github.com/moov-io/base).

Getting Help

channel info
Project Documentation Our project documentation available online.
Google Group moov-users The Moov users Google group is for contributors other people contributing to the Moov project. You can join them without a google account by sending an email to moov-users+subscribe@googlegroups.com. After receiving the join-request message, you can simply reply to that to confirm the subscription.
Twitter @moov_io You can follow Moov.IO's Twitter feed to get updates on our project(s). You can also tweet us questions or just share blogs or stories.
GitHub Issue If you are able to reproduce a problem please open a GitHub Issue under the specific project that caused the error.
moov-io slack Join our slack channel to have an interactive discussion about the development of the project.

Supported and Tested Platforms

  • 64-bit Linux (Ubuntu, Debian), macOS, and Windows
  • Rasberry Pi

Note: 32-bit platforms have known issues and is not supported.

Contributing

Yes please! Please review our Contributing guide and Code of Conduct to get started!

Note: This project uses Go Modules, which requires Go 1.11 or higher, but we ship the vendor directory in our repository.

License

Apbasee License 2.0 See LICENSE for details.

Documentation

Overview

Package base implements core libraries used in multiple Moov projects. Refer to each projects documentation for more details.

Index

Constants

View Source
const (
	// ISO8601Format represents an ISO 8601 format with timezone
	ISO8601Format = "2006-01-02T15:04:05Z07:00"
)

Variables

This section is empty.

Functions

func Has

func Has(list error, err error) bool

Has takes in a (potential) list of errors, and an error to check for. If any of the errors in the list have the same type as the error to check, it returns true. If the "list" isn't actually a list (typically because it is nil), or no errors in the list match the other error it returns false. So it can be used as an easy way to check for a particular kind of error.

func ID

func ID() string

ID creates a new random string for Moov systems. Do not assume anything about these ID's other than they are non-empty strings.

func Match

func Match(errA, errB error) bool

Match takes in two errors and compares them, returning true if they match and false if they don't The matching is done by basic equality for simple errors (i.e. defined by errors.New) and by type for other errors. If errA is wrapped with an error supporting the UnwrappableError interface it will also unwrap it and then recursively compare the unwrapped error with errB.

Types

type ErrorList

type ErrorList []error

ErrorList represents an array of errors which is also an error itself.

func (*ErrorList) Add

func (e *ErrorList) Add(err error)

Add appends err onto the ErrorList. Errors are kept in append order.

func (ErrorList) Empty

func (e ErrorList) Empty() bool

Empty no errors to return

func (ErrorList) Err

func (e ErrorList) Err() error

Err returns the first error (or nil).

func (ErrorList) Error

func (e ErrorList) Error() string

Error implements the error interface

func (ErrorList) MarshalJSON

func (e ErrorList) MarshalJSON() ([]byte, error)

MarshalJSON marshals error list

func (ErrorList) Print

func (e ErrorList) Print(w io.Writer)

Print formats the ErrorList into a string written to w. If ErrorList contains multiple errors those after the first are indented.

type ParseError

type ParseError struct {
	Line   int    // Line number where the error occurred
	Record string // Name of the record type being parsed
	Err    error  // The actual error
}

ParseError is returned for parsing reader errors. The first line is 1.

func (ParseError) Error

func (e ParseError) Error() string

func (ParseError) Unwrap

func (e ParseError) Unwrap() error

Unwrap implements the UnwrappableError interface for ParseError

type Time

type Time struct {
	time.Time
	// contains filtered or unexported fields
}

Time is an time.Time struct that encodes and decodes in ISO 8601.

ISO 8601 is usable by a large array of libraries whereas RFC 3339 support isn't often part of language standard libraries.

Time also assists in calculating processing days that meet the US Federal Reserve Banks processing days.

For holidays falling on Saturday, Federal Reserve Banks and Branches will be open the preceding Friday. For holidays falling on Sunday, all Federal Reserve Banks and Branches will be closed the following Monday. ACH and FedWire payments are not processed on weekends or the following US holidays.

Holiday Schedule: https://www.frbservices.org/holidayschedules/

All logic is based on ET(Eastern) time as defined by the Federal Reserve https://www.frbservices.org/operations/fedwire/fedwire_hours.html

func NewTime

func NewTime(t time.Time) Time

NewTime wraps a time.Time value in Moov's base.Time struct. If you need the underlying time.Time value call .Time:

The time zone will be changed to DefaultLocation.

now := Now() fmt.Println(start.Sub(now.Time))

func Now

func Now() Time

Now returns a Time object with the current clock time set. By default, America/New_York will be the chosen time zone.

func (Time) AddBankingDay

func (t Time) AddBankingDay(d int) Time

AddBankingDay takes an integer for the number of valid banking days to add and returns a Time

func (Time) Equal

func (t Time) Equal(other Time) bool

Equal compares two Time values. Time values are considered equal if they both truncate to the same year/month/day and hour/minute/second.

func (Time) IsBankingDay

func (t Time) IsBankingDay() bool

IsBankingDay checks the rules around holidays (i.e. weekends) to determine if the given day is a banking day.

func (Time) IsWeekend

func (t Time) IsWeekend() bool

IsWeekend reports whether the given date falls on a weekend.

func (Time) MarshalJSON

func (t Time) MarshalJSON() ([]byte, error)

MarshalJSON returns JSON for the given Time

func (*Time) UnmarshalJSON

func (t *Time) UnmarshalJSON(data []byte) error

UnmarshalJSON unpacks a JSON string to populate a Time instance

type UnwrappableError

type UnwrappableError interface {
	Error() string
	Unwrap() error
}

UnwrappableError is an interface for errors that wrap another error with some extra context The interface allows these errors to get automatically unwrapped by the Match function

Directories

Path Synopsis
Package admin implements an http.Server which can be used for operations and monitoring tools.
Package admin implements an http.Server which can be used for operations and monitoring tools.
Package http implements a core suite of HTTP functions for use inside Moov.
Package http implements a core suite of HTTP functions for use inside Moov.
bind
Package bind returns well known HTTP local bind addresses for Moov services.
Package bind returns well known HTTP local bind addresses for Moov services.
lru
Package lru is a simple inmemory Recorder implementation.
Package lru is a simple inmemory Recorder implementation.

Jump to

Keyboard shortcuts

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