* reworked request struct and exchange response started work on validation system
* removed import cycle until work around
* Added intial withdraw support via CLI added
* Added Crypto command to gctcli
* moved var declartion to single line
* Test updates for binance and anx
* All exchange tests have been updated test coverage added to validate
* First pass at adding withdrawl select from database
* started adding basic lru cache system
* Added basic LRU cache including Add Get Remove Contains ContainsOrAdd Clear
* wording changes on comments
* removed exported var's in strut as they are not required
* Added README
* README updates
* corrected ID on commands
* rm line :D
* merged in origin/cache
* linter fixes (gofmt)
* Added basic cache lookup to events
* swapped to mutex over rwmutex updated comments
* unexported getNewest & getOldest
* unexported getNewest & getOldest
* Updated comments and cited references in source
* updated comments
* WIP
* Migrated exchange WithdrawFiat wrapper to new struct response
* Migrated exchange WithdrawFiat wrapper to new struct response
* started work on bank management
* Added exchange level banking details back with migration to banking package
* Removed broken tests for now
* Added validation to bank accounts
* removed duplicate bank details from withdraw struct
* Test coverage increased
* gofmt
* merged upstream/master with clean up
* First pass at adding command line linking to gctcli
* added validation for crypto address, added gctcli support to retreive previous withdrawal requests
* general cleanup
* general cleanup
* reordered imports
* Increased test coverage moved to database sublogger
* Pass incorrect currency no longer return error from c.CheckBankAccountConfig
* remove TestMain() for now as other tests in this package will need to be reworked
* Happy little race car
* Reverted to upstream tests
* Added test covarege for validation method, corrected response on cli protobuf
* query clean up and removal of duplicated code
* cleaned up queries into singlem ethod increased test coverage
* Migrated international fund withdraw to new exchange response and added cache size override
* Migrated international fund withdraw to new exchange response and added cache size override
* Extended gctcli commands
* lowered default cache to 25
* small code clean up
* added get by date method
* add returned error
* cli commands cleaing return error on nil results to fix out of bounds
* merged write & read helpers into one for test coverage and increased engine/withdraw test coverage
* gofmt
* Added test coverage for valid ID
* removed unused param
* converted to use timestamp package from protobuf
* gofmt
* use built in RFC3339 timestamp
* remove setting of CreatedAt & UpdatedAt and allow ORm to take care of it
* also use ptype on byid
* code flow improvements
* remove inverse conditional check and linters run
* removed test data
* removed comment
* removed comment
* also write failures to database for auditing
* converted to use default time for start & end
* Default to time.Now() minus 30 days
* Default to time.Now() minus 30 days
* small code clean up
* fixed missing semicolon on migrations, code clean up
* updated sqlite migrations
* Added additonal check for exchange level bank account if global is not found
* case sensativity fix for currency names
* use correct compare
* test coverage fixed
* removed space
* return pointer to banking.Account
* return pointer to banking.Account
* added else check back to validate()
* Added empty string as default to migration over NULL due to retrivial of data
* Add exchange manager to engine
* Several improvements for engine and friends
1) New file.Exists func
2) gRPC TLS cert expiration date check and regeneration
3) New donation var for use across the codebase
4) Use Go log package until the logger is initialised
* Add cert tests and create dir tree if it doesn't exist for file.Write
* Link up donation address to documentation tool plus minor adjustments
* Fix remaining donation addrs
* Move non-needed reload exchange funcs
* Revert accidental config_example.json changes 🕯️
* Use go logger for logging until the logger has initiliased, otherwise no output will be seen
* Link up portfolio delay val and other fixes
* Run go mod tidy after dependabot PR
* Address nitterinos
* expose auth validator functionality for wrapper
* Add REST validation after keys set, package account types for future syncing
* Add transient error checking for initial creddemtial validation
* fix command types
* Addressed nits from glorious person
* Amalgamate body within error when not between 2xx status, added btcmarket specific auth error check
* nit fix for glorious person
* Format fix
* removed unused code
* check transient first then validate if its an exchange specific authentication error, all others will be disregarded
* Addressed glorious nits
* Addressed glorious nits
* Moved account processing to updateaccountinfo func and added in fetch account info
* Add GRPC Account streaming (NOTE: could not complete until sync item added)
* RM exchange check
* Address xtda nits
* RM comment code
* Fix linter issues
* used most recent protoc version
* lbank linter issues fixed
* Addressed nits and changed len check to range in for loops
* Fixed timeout issue
* thrasher nits addressed
* add string holdings
* drop common uuid v4 func and imported package as needed
* removed common functions regarding json marshal and unmarshal and used the json package directly. WRT unmarshal it was calling reflect and converted to string which is also checked in the JSON package so it was doing a double up, this will be a tiny gain as it was directly used in the requester package for all our outbound requests.
* add in string
* explicitly throw away return error value
* atleast return the error that websocket initialise returns
* return error when not connected
* fix comment
* Adds comments
* move package declarations
* drop append whenever we call supported
* remove unused import
* Change incorrect spelling
* fix tests
* fix go import issue
* Adds new file.Move func to address a bug with Golang/Docker volumes when using os.Rename
Also uses TempDir for tests instead of live directories and increases test coverage for file.Write
* Goimport the imports
* Make usage of file package name consistent so it no longer clashes with vars
* Remove outputFile if io.Copy fails
* 1) Update Dockerfile/docker-compose.yml
2) Remove inline strings for buy/sell/test pairs
3) Remove dangerous order submission values
4) Fix consistency with audit_events (all other spec files use
CamelCase)
5) Update web websocket endpoint
6) Fix main param set (and induce dryrun mode on specific command line
params)
* Engine QA
Link up exchange syncer to cmd params, disarm market selling bombs and fix OKEX endpoints
* Fix linter issue after merge
* Engine QA changes
Template updates
Wrapper code cleanup
Disarmed order bombs
Documentation updates
* Daily engine QA
Bitstamp improvements
Spelling mistakes
Add Coinbene exchange to support list
Protect API authenticated calls for Coinbene/LBank
* Engine QA changes
Fix exchange_wrapper_coverage tool
Add SupportsAsset to exchange interface
Fix inline string usage and add BCH withdrawal support
* Engine QA
Fix Bitstamp types
Inform user of errors when parsing time accross the codebase
Change time parsing warnings to errors (as they are)
Update markdown docs [with linter fixes]
* Engine QA changes
1) Add test for dryrunParamInteraction
2) Disarm OKCoin/OKEX bombs if someone accidently sets canManipulateRealOrders to true and runs all package tests
3) Actually check exchange setup errors for BTSE and Coinbene, plus address this in the wrapper template
4) Hardcode missing/non-retrievable contributors and bump the contributors
5) Convert numbers/strings to meaningful types in Bitstamp and OKEX
6) If WS is supported for the exchange wrapper template, preset authWebsocketSupport var
* Fix the shadow people
* Link the SyncContinuously paramerino
* Also show SyncContinuously in engine.PrintSettings
* Address nitterinos and use correct filepath for logs
* Bitstamp: Extract ALL THE APM
* Fix additional nitterinos
* Fix time parsing error for Bittrex
* Initial commit which runs through all wrapper funcs for one of each currency pair for each asset type for each exchange and then outputs it all into a JSON file
* Fixes up data holding responses to allow for good json output after completion
* Starting work for reading credentials from a config. Some variable names are more appropriate
* Keys can now be read from keys.json and applied to exchanges. Fixes naming bug for console output
* Cleans up implementation. Uses templating to output some pretty html report
* Changes config to include a bank account to customise for withdrawals. Updates template for warnings for not implemented. Updates template to include jsonified parameters that are sent to the wrapper. Jsonifies the response so you actually understand whats returned.
* Adds bank for withdrawals. Adds wallet address for crypto withdrawals
* Adds ordersubmission configuration to config. Sets command line overrides. Adds lbank to config. Adds okgroup clientid to config.
* Adds missing comma
* Adds config to gitignore
* Removes because thats not how it works...
* Revert go mod changes
* Formatting for prettiness
* Adds asset type override
* Adds verbose, exchangesToExclude, filename CL flags. Removes wg redeclaration. Creates func to check to load exchange before its loaded. Removes double variables and uses flag.Stringvar instead
* Prettifies the JSON output
* Stringifies the []byteified jsonified wrapper response in the template
* Puts types in their own EXCLUSIVE types.go. LOWERCASES COMMAND LINE ARGUMENTS. Wraps vars in var so theres less vars to look at.
* Generates wrapperconfig.json on the fly if not present. Adds missing config fields and exchanges when not present. Saves config file on finish. Fixes some formatting on output when its just a number
* micro format update
* Changes printfs to printlns. Handles config error. Comments on types. Fixes lint issue with shadow err declaration
* Fixes linting issue, removes returns after fatals, evaluates assetType, formats template
* Stringifies byte output when console output is selected. Verbose mode now includes wrapper responses in console output