aggregator

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: May 10, 2024 License: GPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNotEnoughResponses signals that not enough responses were fetched
	ErrNotEnoughResponses = errors.New("not enough responses to compute a valid price")
	// ErrInvalidMinNumberOfResults signals that an invalid minimum number of results value was provided
	ErrInvalidMinNumberOfResults = errors.New("invalid minimum number of results")
	// ErrInvalidNumberOfPriceFetchers signals that an invalid number of price fetchers were provided
	ErrInvalidNumberOfPriceFetchers = errors.New("invalid number of price fetchers")
	// ErrNilPriceFetcher signals that a nil price fetcher was provided
	ErrNilPriceFetcher = errors.New("nil price fetcher")
	// ErrNilPriceAggregator signals that a nil price aggregator was provided
	ErrNilPriceAggregator = errors.New("nil price aggregator")
	// ErrEmptyArgsPairsSlice signals that an empty arguments pair slice was provided
	ErrEmptyArgsPairsSlice = errors.New("empty pair arguments slice")
	// ErrNilArgsPair signals that a nil argument pair was found
	ErrNilArgsPair = errors.New("nil pair argument")
	// ErrNilPriceNotifee signals that a nil price notifee was provided
	ErrNilPriceNotifee = errors.New("nil price notifee")
	// ErrInvalidNumOfElementsToComputeMedian signals that an invalid number of elements to compute the median was provided
	ErrInvalidNumOfElementsToComputeMedian = errors.New("invalid number of elements to compute the median")
	// ErrInvalidDecimals signals that an invalid number of decimals was provided
	ErrInvalidDecimals = errors.New("invalid decimals")
	// ErrNilBaseName signals that an invalid base name was provided
	ErrNilBaseName = errors.New("nil base name")
	// ErrNilQuoteName signals that an invalid quote name was provided
	ErrNilQuoteName = errors.New("nil quote name")
	//ErrNilExchanges signals that an nil exchanges map was provided
	ErrNilExchanges = errors.New("nil exchanges map")
	// ErrInvalidAutoSendInterval signals that an invalid auto send interval value was provided
	ErrInvalidAutoSendInterval = errors.New("invalid auto send interval")
	// ErrPairNotSupported signals that the pair is not supported by the fetcher
	ErrPairNotSupported = errors.New("pair not supported")
	// ErrNilAuthClient signals that a nil auth client was provided
	ErrNilAuthClient = errors.New("nil auth client")
)

Functions

func NewGraphqlResponseGetter

func NewGraphqlResponseGetter(authClient authentication.AuthClient) (*graphqlResponseGetter, error)

NewGraphqlResponseGetter returns a new graphql response getter instance

func NewHttpResponseGetter

func NewHttpResponseGetter() (*httpResponseGetter, error)

NewHttpResponseGetter returns a new http response getter instance

func NewPriceAggregator

func NewPriceAggregator(args ArgsPriceAggregator) (*priceAggregator, error)

NewPriceAggregator creates a new priceAggregator instance

func NewPriceNotifier

func NewPriceNotifier(args ArgsPriceNotifier) (*priceNotifier, error)

NewPriceNotifier will create a new priceNotifier instance

Types

type ArgsPair

type ArgsPair struct {
	Base                      string
	Quote                     string
	PercentDifferenceToNotify uint32
	Decimals                  uint64
	Exchanges                 map[string]struct{}
}

ArgsPair is the argument DTO for a pair

type ArgsPriceAggregator

type ArgsPriceAggregator struct {
	PriceFetchers []PriceFetcher
	MinResultsNum int
}

ArgsPriceAggregator is the DTO used in the NewPriceAggregator function

type ArgsPriceChanged

type ArgsPriceChanged struct {
	Base             string
	Quote            string
	DenominatedPrice uint64
	Decimals         uint64
	Timestamp        int64
}

ArgsPriceChanged is the argument used when notifying the notifee instance

type ArgsPriceNotifier

type ArgsPriceNotifier struct {
	Pairs            []*ArgsPair
	Aggregator       PriceAggregator
	Notifee          PriceNotifee
	AutoSendInterval time.Duration
}

ArgsPriceNotifier is the argument DTO for the price notifier

type GraphqlGetter

type GraphqlGetter interface {
	Query(ctx context.Context, url string, query string, variables string) ([]byte, error)
}

GraphqlGetter is the graphql component able to execute a get operation on the provided URL

type PriceAggregator

type PriceAggregator interface {
	// contains filtered or unexported methods
}

PriceAggregator defines the behavior of a component able to query the median price of a provided pair from all the fetchers that has the pair

type PriceFetcher

type PriceFetcher interface {
	AddPair(base, quote string)
	// contains filtered or unexported methods
}

PriceFetcher defines the behavior of a component able to query the price for the provided pairs

type PriceNotifee

type PriceNotifee interface {
	PriceChanged(ctx context.Context, priceChanges []*ArgsPriceChanged) error
	IsInterfaceNil() bool
}

PriceNotifee defines the behavior of a component able to be notified over a price change

type ResponseGetter

type ResponseGetter interface {
	Get(ctx context.Context, url string, response interface{}) error
}

ResponseGetter is the component able to execute a get operation on the provided URL

Directories

Path Synopsis
api
gin

Jump to

Keyboard shortcuts

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