mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-17 23:16:52 +00:00
* docs: Create new CODING_GUIDELINES doc Rids excess contribution instructions from other packages Adds AGENTS.md file for the AI overlords Rids unused templates Updates ADD_NEW_EXCHANGE.md with minor fixes * docs: Fix linter issues and minor adjustments based on Copilot feedback * docs: Update coding guidelines for API parameters and testing practices * docs: Remove redundant GoDoc references Adds copilot-instructions.md * docs: Update CODING_GUIDELINES with export recommendations and test commentary * docs: Fix formatting inconsistencies in ADD_NEW_EXCHANGE.md links * docs: Update struct naming conventions for request and response types * docs: Improve clarity and consistency in ADD_NEW_EXCHANGE.md and CODING_GUIDELINES.md * refactor: Simplify error handling in QueryOrder method
100 lines
3.3 KiB
Markdown
100 lines
3.3 KiB
Markdown
# GoCryptoTrader package Validate
|
|
|
|
<img src="/common/gctlogo.png?raw=true" width="350px" height="350px" hspace="70">
|
|
|
|
|
|
[](https://github.com/thrasher-corp/gocryptotrader/actions/workflows/tests.yml)
|
|
[](https://github.com/thrasher-corp/gocryptotrader/blob/master/LICENSE)
|
|
[](https://godoc.org/github.com/thrasher-corp/gocryptotrader/exchanges/validate)
|
|
[](https://codecov.io/gh/thrasher-corp/gocryptotrader)
|
|
[](https://goreportcard.com/report/github.com/thrasher-corp/gocryptotrader)
|
|
|
|
|
|
This validate 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 our [GoCryptoTrader Kanban board](https://github.com/orgs/thrasher-corp/projects/3).
|
|
|
|
Join our slack to discuss all things related to GoCryptoTrader! [GoCryptoTrader Slack](https://join.slack.com/t/gocryptotrader/shared_invite/zt-38z8abs3l-gH8AAOk8XND6DP5NfCiG_g)
|
|
|
|
## Current Features for validate
|
|
|
|
+ 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
|
|
}
|
|
|
|
```
|
|
|
|
## Donations
|
|
|
|
<img src="https://github.com/thrasher-corp/gocryptotrader/blob/master/web/src/assets/donate.png?raw=true" hspace="70">
|
|
|
|
If this framework helped you in any way, or you would like to support the developers working on it, please donate Bitcoin to:
|
|
|
|
***bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc***
|