mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-16 15:09:57 +00:00
* Remove pointer reference * Fix portfolio withdraw tests * Add nil protection in validator method to reduce prospective panics and for future outbound checking * Updated tests * ch order var to not ref package * rm comparison * Add order ID validation check * Add exchange name validation check * Add in test details * fix tests * fix linter issues * linter issues strikes again * linter rabbit hole * Addr nitterinos * Add validation variadic interface to define sets of functionality check POC * didn't want to add an amount other than 0, didn't want to add address to exchange withdraw, didn't want to whitlist, can change if need be * add coverage * Add validation method options for exchange wrappers and abstracted validation into its own package * Add validation code for structs in exchange template generation * remove extra validation call as this is done in wrapper * fix niterinos for examplerinos * Add template to documentation tool and regenerated documentation * Addr niticles * Fix tests due to validation update * Add more validation checks for modify/submit orders * update tests * fix more tests * Add asset type to submit variable in tests and rpc call. Regen funcs. * Add field to modify struct in tests * applied field asset to cancel struct across project * fix woopsy
78 lines
1.9 KiB
Cheetah
78 lines
1.9 KiB
Cheetah
{{define "exchanges validate" -}}
|
|
{{template "header" .}}
|
|
## Current Features for {{.Name}}
|
|
|
|
+ This package allows for validation options to occur exchange side e.g.
|
|
- Checking for ID in an order cancellation struct.
|
|
- Determining the correct withdrawal bank details for a specific exchange.
|
|
|
|
+ Example Usage below:
|
|
|
|
```go
|
|
// import package
|
|
"github.com/thrasher-corp/exchanges/validate"
|
|
|
|
// define your data structure across potential exchanges
|
|
type Critical struct {
|
|
ID string
|
|
Person string
|
|
Banks string
|
|
MoneysUSD float64
|
|
}
|
|
|
|
// define validation and add a variadic param
|
|
func (supercritcalinfo *Critical) Validate(opt ...validate.Checker) error {
|
|
// define base level validation
|
|
if supercritcalinfo != nil {
|
|
// oh no this is nil, could panic program!
|
|
}
|
|
|
|
// range over potential checks coming from individual packages
|
|
var errs common.Errors
|
|
for _, o := range opt {
|
|
err := o.Check()
|
|
if err != nil {
|
|
errs = append(errs, err)
|
|
}
|
|
}
|
|
|
|
if errs != nil {
|
|
return errs
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// define an exchange or package level check that returns a validate.Checker
|
|
// interface
|
|
func (supercritcalinfo *Critical) PleaseDontSendMoneyToParents() validate.Checker {
|
|
return validate.Check(func() error {
|
|
if supercritcalinfo.Person == "Mother Dearest" ||
|
|
supercritcalinfo.Person == "Father Dearest" {
|
|
return errors.New("nope")
|
|
}
|
|
return nil
|
|
})
|
|
}
|
|
|
|
|
|
// Now in the package all you have to do is add in your options or not...
|
|
d := Critical{Person: "Mother Dearest", MoneysUSD: 1337.30}
|
|
|
|
// This should not error
|
|
err := d.Validate()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// This should error
|
|
err := d.Validate(d.PleaseDontSendMoneyToParents())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
```
|
|
|
|
### Please click GoDocs chevron above to view current GoDoc information for this package
|
|
{{template "contributions"}}
|
|
{{template "donations" .}}
|
|
{{end}} |