Julien Riou
d2d1503779
- Add ETC to the list of supported coins. A new `coin` setting can be configured to avoid conflict with `eth`. Mind the lowercase. By default, flexassitant will try to deduce the coin from the miner's address (with eth by default, not etc). (#5) - Add `test` (true/false) to `notifications` section to test notifications with random values fetched from the Flexpool API - Fix typo in the configuration example (#6) BREAKING CHANGE: `notification-templates` configuration settings have been renamed to `notifications`, with sections to configure balance, payment, block and offline workers notifications, with `template` and `test` settings. Signed-off-by: Julien Riou <julien@riou.xyz>
62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// WeisToETHDivider to divide Weis to ETH
|
|
const WeisToETHDivider = 1000000000000000000
|
|
|
|
// MojoToXCHDivider to divide Mojo to XCH
|
|
const MojoToXCHDivider = 1000000000000
|
|
|
|
// ConvertCurrency divides the smallest unit of the currency to the currency itself
|
|
// Example: for "eth", convert from Weis to ETH
|
|
func ConvertCurrency(coin string, value float64) (float64, error) {
|
|
switch coin {
|
|
case "etc":
|
|
return ConvertWeis(value), nil
|
|
case "eth":
|
|
return ConvertWeis(value), nil
|
|
case "xch":
|
|
return ConvertMojo(value), nil
|
|
default:
|
|
return 0, fmt.Errorf("Coin %s not supported", coin)
|
|
}
|
|
}
|
|
|
|
// ConvertWeis converts the value from Weis to ETH
|
|
func ConvertWeis(value float64) float64 {
|
|
return value / WeisToETHDivider
|
|
}
|
|
|
|
// ConvertMojo converts the value from Mojo to XCH
|
|
func ConvertMojo(value float64) float64 {
|
|
return value / MojoToXCHDivider
|
|
}
|
|
|
|
// FormatBlockURL returns the URL on the respective blockchain explorer given the coin and the block hash
|
|
func FormatBlockURL(coin string, hash string) (string, error) {
|
|
switch coin {
|
|
case "etc":
|
|
return fmt.Sprintf("https://etcblockexplorer.com/block/%s", hash), nil
|
|
case "eth":
|
|
return fmt.Sprintf("https://etherscan.io/block/%s", hash), nil
|
|
case "xch":
|
|
return fmt.Sprintf("https://www.chiaexplorer.com/blockchain/block/%s", hash), nil
|
|
}
|
|
return "", fmt.Errorf("Coin %s not supported", coin)
|
|
}
|
|
|
|
// FormatTransactionURL returns the URL on the respective blockchain explorer given the coin and the transaction hash
|
|
func FormatTransactionURL(coin string, hash string) (string, error) {
|
|
switch coin {
|
|
case "etc":
|
|
return fmt.Sprintf("https://etcblockexplorer.com/address/%s", hash), nil
|
|
case "eth":
|
|
return fmt.Sprintf("https://etherscan.io/tx/%s", hash), nil
|
|
case "xch":
|
|
return fmt.Sprintf("https://www.chiaexplorer.com/blockchain/coin/%s", hash), nil
|
|
}
|
|
return "", fmt.Errorf("Coin %s not supported", coin)
|
|
}
|