mirror of
https://github.com/ditatompel/xmr-remote-nodes.git
synced 2024-12-22 19:49:25 +00:00
feat: Only return exit code 1
for specific err
Only return with status code `1` if error type is `errProber` which one of this following const: errNoEndpoint, errNoTorSocks, errNoAPIKey, and errInvalidCredentials.
This commit is contained in:
parent
aa8ecc6b61
commit
2576d53c35
1 changed files with 23 additions and 7 deletions
|
@ -22,8 +22,10 @@ import (
|
||||||
const RPCUserAgent = "ditatombot/0.0.1 (Monero RPC Monitoring; https://github.com/ditatompel/xmr-remote-nodes)"
|
const RPCUserAgent = "ditatombot/0.0.1 (Monero RPC Monitoring; https://github.com/ditatompel/xmr-remote-nodes)"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
errEnvNoEndpoint = errProber("please set SERVER_ENDPOINT in .env")
|
errNoEndpoint = errProber("no SERVER_ENDPOINT was provided")
|
||||||
errEnvNoTorSocks = errProber("please set TOR_SOCKS in .env")
|
errNoTorSocks = errProber("no TOR_SOCKS was provided")
|
||||||
|
errNoAPIKey = errProber("no API_KEY was provided")
|
||||||
|
errInvalidCredentials = errProber("invalid API_KEY credentials")
|
||||||
)
|
)
|
||||||
|
|
||||||
type errProber string
|
type errProber string
|
||||||
|
@ -63,8 +65,13 @@ var ProbeCmd = &cobra.Command{
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := prober.Run(); err != nil {
|
if err := prober.Run(); err != nil {
|
||||||
|
switch err.(type) {
|
||||||
|
case errProber:
|
||||||
slog.Error(fmt.Sprintf("[PROBE] %s", err.Error()))
|
slog.Error(fmt.Sprintf("[PROBE] %s", err.Error()))
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
default:
|
||||||
|
slog.Warn(fmt.Sprintf("[PROBE] %s", err.Error()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -99,11 +106,15 @@ func (p *proberClient) Run() error {
|
||||||
// checks if all required environment variables are set
|
// checks if all required environment variables are set
|
||||||
func (p *proberClient) validateConfig() error {
|
func (p *proberClient) validateConfig() error {
|
||||||
if p.endpoint == "" {
|
if p.endpoint == "" {
|
||||||
return errEnvNoEndpoint
|
return errNoEndpoint
|
||||||
|
}
|
||||||
|
if p.apiKey == "" {
|
||||||
|
return errNoAPIKey
|
||||||
}
|
}
|
||||||
if p.acceptTor && p.torSOCKS == "" {
|
if p.acceptTor && p.torSOCKS == "" {
|
||||||
return errEnvNoTorSocks
|
return errNoTorSocks
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +144,12 @@ func (p *proberClient) fetchJob() (monero.Node, error) {
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.StatusCode != 200 {
|
switch resp.StatusCode {
|
||||||
|
case 200:
|
||||||
|
break
|
||||||
|
case 401:
|
||||||
|
return node, errInvalidCredentials
|
||||||
|
default:
|
||||||
return node, fmt.Errorf("status code: %d", resp.StatusCode)
|
return node, fmt.Errorf("status code: %d", resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue