mirror of
https://github.com/hanzo-fi/payments.git
synced 2026-10-30 20:31:20 +00:00
* Move all public connectors to ce/plugins * Update tooling to account for new go modules under ce * Ensure we test all CE plugins in CI * Move Dummypay to ce/plugins for simplicity's sake in the generation scripts * Use versioned pkg/domain in plugins * Ensure that renovate updates all CE plugins in a single PR when pkg/domain tags are pushed to github * Ensure Justfile commands work over all CE plugins * Copy ce plugin go.mods in dev.Dockerfile * Only add a go.mod for new plugins if they are ce * Ensure generated generic client structs are named correctly for submodule * Add coverprofile for each ce plugin * Add set -e for Justfile for loops over plugins * Infer go version from flake.nix in connector template tool
47 lines
869 B
Go
47 lines
869 B
Go
package client
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type moneycorpErrors struct {
|
|
Errors []*moneycorpError `json:"errors"`
|
|
}
|
|
|
|
func (mes *moneycorpErrors) Error() error {
|
|
return toError(0, *mes).Error()
|
|
}
|
|
|
|
type moneycorpError struct {
|
|
Status int `json:"status"`
|
|
Code string `json:"code"`
|
|
Title string `json:"title"`
|
|
Detail string `json:"detail"`
|
|
}
|
|
|
|
func (me *moneycorpError) Error() error {
|
|
var err error
|
|
if me.Detail == "" {
|
|
err = fmt.Errorf("unexpected status code: %d", me.Status)
|
|
} else {
|
|
err = fmt.Errorf("%d: %s", me.Status, me.Detail)
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func toError(statusCode int, ces moneycorpErrors) *moneycorpError {
|
|
if len(ces.Errors) == 0 {
|
|
return &moneycorpError{
|
|
Status: statusCode,
|
|
}
|
|
}
|
|
|
|
return &moneycorpError{
|
|
Status: ces.Errors[0].Status,
|
|
Code: ces.Errors[0].Code,
|
|
Title: ces.Errors[0].Title,
|
|
Detail: ces.Errors[0].Detail,
|
|
}
|
|
}
|