Skip to content

Commit

Permalink
add covalent api service code and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Dennayz committed Mar 20, 2024
1 parent 2ee560d commit 9ae991b
Show file tree
Hide file tree
Showing 31 changed files with 12,478 additions and 13 deletions.
65 changes: 53 additions & 12 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,21 +1,62 @@
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
#
# Binaries for programs and plugins
# Binaries and objects #
#######################
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out
*.o
*.a
*.obj
*.swp
*.lock
*.DS_Store
*.vscode
# Compiled Object files, Static and Dynamic libs (Shared Objects) #
*.o
*.a
*.so

# Folders to ignore #
#####################
/vendor/
/node_modules/

# Dependency directories (remove the line below if you're using Go modules) #
/Godeps/

# Output of the Go coverage tool #
coverage.txt

# External tool configuration files #
.idea/
*.swp
*.swo
*.tmp
*.swp
*.swo
.vscode/

# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 #
.glide/

# Go build directory #
bin/

# Go Module files #
go.sum
go.mod

# Log files #
*.log

# Microsoft Office temporary files #
~$*

# Dependency directories (remove the comment below to include it)
# vendor/
# JetBrains IDEs #
.idea/

# Go workspace file
go.work
# Vscode #
.vscode/
358 changes: 357 additions & 1 deletion README.md

Large diffs are not rendered by default.

225 changes: 225 additions & 0 deletions chains/chains.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
package chains

type Chain string

const (
BtcMainnet Chain = "btc-mainnet"
EthMainnet Chain = "eth-mainnet"
MaticMainnet Chain = "matic-mainnet"
BscMainnet Chain = "bsc-mainnet"
AvalancheMainnet Chain = "avalanche-mainnet"
OptimismMainnet Chain = "optimism-mainnet"
FantomMainnet Chain = "fantom-mainnet"
MoonbeamMainnet Chain = "moonbeam-mainnet"
MoonbeamMoonriver Chain = "moonbeam-moonriver"
RskMainnet Chain = "rsk-mainnet"
ArbitrumMainnet Chain = "arbitrum-mainnet"
PalmMainnet Chain = "palm-mainnet"
KlaytnMainnet Chain = "klaytn-mainnet"
HecoMainnet Chain = "heco-mainnet"
NervosGodwokenMainnet Chain = "nervos-godwoken-mainnet"
AxieMainnet Chain = "axie-mainnet"
EvmosMainnet Chain = "evmos-mainnet"
AstarMainnet Chain = "astar-mainnet"
IotexMainnet Chain = "iotex-mainnet"
HarmonyMainnet Chain = "harmony-mainnet"
CronosMainnet Chain = "cronos-mainnet"
AuroraMainnet Chain = "aurora-mainnet"
EmeraldParatimeMainnet Chain = "emerald-paratime-mainnet"
BobaMainnet Chain = "boba-mainnet"
EthGoerli Chain = "eth-goerli"
MaticMumbai Chain = "matic-mumbai"
AvalancheTestnet Chain = "avalanche-testnet"
BscTestnet Chain = "bsc-testnet"
MoonbeamMoonbaseAlpha Chain = "moonbeam-moonbase-alpha"
RskTestnet Chain = "rsk-testnet"
ArbitrumGoerli Chain = "arbitrum-goerli"
FantomTestnet Chain = "fantom-testnet"
PalmTestnet Chain = "palm-testnet"
HecoTestnet Chain = "heco-testnet"
NervosGodwokenTestnet Chain = "nervos-godwoken-testnet"
EvmosTestnet Chain = "evmos-testnet"
IotexTestnet Chain = "iotex-testnet"
HarmonyTestnet Chain = "harmony-testnet"
AuroraTestnet Chain = "aurora-testnet"
ScrollL2Testnet Chain = "scroll-l2-testnet"
ScrollSepoliaTestnet Chain = "scroll-sepolia-testnet"
CovalentInternalNetworkV1 Chain = "covalent-internal-network-v1"
DefiKingdomsMainnet Chain = "defi-kingdoms-mainnet"
SwimmerMainnet Chain = "swimmer-mainnet"
BobaAvalancheMainnet Chain = "boba-avalanche-mainnet"
BobaBobabeamMainnet Chain = "boba-bobabeam-mainnet"
BobaBnbMainnet Chain = "boba-bnb-mainnet"
BobaRinkebyTestnet Chain = "boba-rinkeby-testnet"
BobaBobabaseTestnet Chain = "boba-bobabase-testnet"
BobaBnbTestnet Chain = "boba-bnb-testnet"
BobaAvalancheTestnet Chain = "boba-avalanche-testnet"
KlaytnTestnet Chain = "klaytn-testnet"
GatherMainnet Chain = "gather-mainnet"
GatherTestnet Chain = "gather-testnet"
SkaleCalypso Chain = "skale-calypso"
SkaleMainnet Chain = "skale-mainnet"
SkaleRazor Chain = "skale-razor"
AvalancheDexalotMainnet Chain = "avalanche-dexalot-mainnet"
SkaleOmnus Chain = "skale-omnus"
AvalancheDexalotTestnet Chain = "avalanche-dexalot-testnet"
AstarShibuya Chain = "astar-shibuya"
CronosTestnet Chain = "cronos-testnet"
DefiKingdomsTestnet Chain = "defi-kingdoms-testnet"
MetisMainnet Chain = "metis-mainnet"
MetisStardust Chain = "metis-stardust"
MilkomedaA1Mainnet Chain = "milkomeda-a1-mainnet"
MilkomedaA1Devnet Chain = "milkomeda-a1-devnet"
MilkomedaC1Mainnet Chain = "milkomeda-c1-mainnet"
MilkomedaC1Devnet Chain = "milkomeda-c1-devnet"
SwimmerTestnet Chain = "swimmer-testnet"
SolanaMainnet Chain = "solana-mainnet"
SkaleEuropa Chain = "skale-europa"
MeterMainnet Chain = "meter-mainnet"
MeterTestnet Chain = "meter-testnet"
SkaleExorde Chain = "skale-exorde"
BobaGoerli Chain = "boba-goerli"
NeonTestnet Chain = "neon-testnet"
SkaleStagingUum Chain = "skale-staging-uum"
SkaleStagingLcc Chain = "skale-staging-lcc"
ArbitrumNovaMainnet Chain = "arbitrum-nova-mainnet"
CantoMainnet Chain = "canto-mainnet"
BittorrentMainnet Chain = "bittorrent-mainnet"
BittorrentTestnet Chain = "bittorrent-testnet"
FlarenetworksFlareMainnet Chain = "flarenetworks-flare-mainnet"
FlarenetworksFlareTestnet Chain = "flarenetworks-flare-testnet"
FlarenetworksCanaryMainnet Chain = "flarenetworks-canary-mainnet"
FlarenetworksCanaryTestnet Chain = "flarenetworks-canary-testnet"
KccMainnet Chain = "kcc-mainnet"
KccTestnet Chain = "kcc-testnet"
PolygonZkevmTestnet Chain = "polygon-zkevm-testnet"
LineaTestnet Chain = "linea-testnet"
BaseTestnet Chain = "base-testnet"
MantleTestnet Chain = "mantle-testnet"
ScrollAlphaTestnet Chain = "scroll-alpha-testnet"
OasysMainnet Chain = "oasys-mainnet"
OasysTestnet Chain = "oasys-testnet"
FindoraMainnet Chain = "findora-mainnet"
FindoraForgeTestnet Chain = "findora-forge-testnet"
SxMainnet Chain = "sx-mainnet"
OasisSapphireMainnet Chain = "oasis-sapphire-mainnet"
OasisSapphireTestnet Chain = "oasis-sapphire-testnet"
OptimismGoerli Chain = "optimism-goerli"
PolygonZkevmMainnet Chain = "polygon-zkevm-mainnet"
HorizenYumaTestnet Chain = "horizen-yuma-testnet"
ClvParachain Chain = "clv-parachain"
EnergiMainnet Chain = "energi-mainnet"
EnergiTestnet Chain = "energi-testnet"
HorizenGobiTestnet Chain = "horizen-gobi-testnet"
EthSepolia Chain = "eth-sepolia"
SkaleNebula Chain = "skale-nebula"
SkaleBattleground Chain = "skale-battleground"
AvalancheMeldTestnet Chain = "avalanche-meld-testnet"
GunzillaTestnet Chain = "gunzilla-testnet"
UltronMainnet Chain = "ultron-mainnet"
UltronTestnet Chain = "ultron-testnet"
ZoraMainnet Chain = "zora-mainnet"
ZoraGoerliTestnet Chain = "zora-goerli-testnet"
NeonMainnet Chain = "neon-mainnet"
AvalancheShrapnelMainnet Chain = "avalanche-shrapnel-mainnet"
BaseMainnet Chain = "base-mainnet"
MantleMainnet Chain = "mantle-mainnet"
AvalancheLocoLegendsMainnet Chain = "avalanche-loco-legends-mainnet"
LineaMainnet Chain = "linea-mainnet"
HorizenEonMainnet Chain = "horizen-eon-mainnet"
AvalancheNumbers Chain = "avalanche-numbers"
AvalancheDos Chain = "avalanche-dos"
AvalancheStepNetwork Chain = "avalanche-step-network"
AvalancheXplus Chain = "avalanche-xplus"
AvalancheXanachain Chain = "avalanche-xanachain"
AvalancheMeldMainnet Chain = "avalanche-meld-mainnet"
OpsidePublicZkevm Chain = "opside-public-zkevm"
OpsideLawChain Chain = "opside-law-chain"
AvalancheShrapnelTestnet Chain = "avalanche-shrapnel-testnet"
AvalancheLocoLegendsTestnet Chain = "avalanche-loco-legends-testnet"
OpsideCbZkevm Chain = "opside-cb-zkevm"
OpsidePreAlphaTestnet Chain = "opside-pre-alpha-testnet"
OpsideEra7 Chain = "opside-era7"
OpsideXthrill Chain = "opside-xthrill"
ZksyncMainnet Chain = "zksync-mainnet"
MetisTestnet Chain = "metis-testnet"
ZksyncTestnet Chain = "zksync-testnet"
AvalancheBlitzTestnet Chain = "avalanche-blitz-testnet"
AvalancheDChainTestnet Chain = "avalanche-d-chain-testnet"
AvalancheGreenDotTestnet Chain = "avalanche-green-dot-testnet"
AvalancheMintaraTestnet Chain = "avalanche-mintara-testnet"
AvalancheBeamTestnet Chain = "avalanche-beam-testnet"
BnbMetaApesMainnet Chain = "bnb-meta-apes-mainnet"
BnbAntimatterMainnet Chain = "bnb-antimatter-mainnet"
BnbAntimatterTestnet Chain = "bnb-antimatter-testnet"
BnbOpbnbTestnet Chain = "bnb-opbnb-testnet"
OpsideDebox Chain = "opside-debox"
OpsideJackbot Chain = "opside-jackbot"
OpsideOdxZkevmTestnet Chain = "opside-odx-zkevm-testnet"
OpsideReadonContentTestnet Chain = "opside-readon-content-testnet"
OpsideRelation Chain = "opside-relation"
OpsideSoquestZkevm Chain = "opside-soquest-zkevm"
OpsideVip3 Chain = "opside-vip3"
OpsideZkmeta Chain = "opside-zkmeta"
AvalanchePulsarTestnet Chain = "avalanche-pulsar-testnet"
AvalancheUptn Chain = "avalanche-uptn"
BnbFncyMainnet Chain = "bnb-fncy-mainnet"
ZetachainTestnet Chain = "zetachain-testnet"
KintoTestnet Chain = "kinto-testnet"
ModeTestnet Chain = "mode-testnet"
LootMainnet Chain = "loot-mainnet"
BnbFncyTestnet Chain = "bnb-fncy-testnet"
MantaTestnet Chain = "manta-testnet"
PgnMainnet Chain = "pgn-mainnet"
PgnTestnet Chain = "pgn-testnet"
GnosisMainnet Chain = "gnosis-mainnet"
GnosisTestnet Chain = "gnosis-testnet"
RolluxMainnet Chain = "rollux-mainnet"
RolluxTestnet Chain = "rollux-testnet"
TaikoJolnirTestnet Chain = "taiko-jolnir-testnet"
OptimismSepolia Chain = "optimism-sepolia"
BnbOpbnbMainnet Chain = "bnb-opbnb-mainnet"
TelosMainnet Chain = "telos-mainnet"
TelosTestnet Chain = "telos-testnet"
AvalancheHubbleExchangeTestnet Chain = "avalanche-hubble-exchange-testnet"
AvalancheMihoTestnet Chain = "avalanche-miho-testnet"
AvalancheBulletinTestnet Chain = "avalanche-bulletin-testnet"
AvalancheKiwiTestnet Chain = "avalanche-kiwi-testnet"
AvalancheHeroTestnet Chain = "avalanche-hero-testnet"
AvalancheAvacloudTestnet Chain = "avalanche-avacloud-testnet"
AvalancheThirdwebTestnet Chain = "avalanche-thirdweb-testnet"
AvalancheMondrianTestnet Chain = "avalanche-mondrian-testnet"
AvalancheConduitTestnet Chain = "avalanche-conduit-testnet"
AvalancheNmacTestnet Chain = "avalanche-nmac-testnet"
AvalancheOrderlyTestnet Chain = "avalanche-orderly-testnet"
AvalancheAmplifyTestnet Chain = "avalanche-amplify-testnet"
AvalancheMiraiTestnet Chain = "avalanche-mirai-testnet"
AvalancheWagmiTestnet Chain = "avalanche-wagmi-testnet"
AvalanchePlaya3ullTestnet Chain = "avalanche-playa3ull-testnet"
AvalancheBeamMainnet Chain = "avalanche-beam-mainnet"
ScrollMainnet Chain = "scroll-mainnet"
EthHolesky Chain = "eth-holesky"
TomochainMainnet Chain = "tomochain-mainnet"
TomochainTestnet Chain = "tomochain-testnet"
AvalancheJono11Testnet Chain = "avalanche-jono11-testnet"
BaseSepoliaTestnet Chain = "base-sepolia-testnet"
XaiTestnet Chain = "xai-testnet"
ArbitrumSepolia Chain = "arbitrum-sepolia"
LumozPublicZksyncV2 Chain = "lumoz-public-zksync-v2"
LumozDecibling Chain = "lumoz-decibling"
LumozStarkSport Chain = "lumoz-stark-sport"
AvalancheLt0Testnet Chain = "avalanche-lt0-testnet"
AvalancheLt1Testnet Chain = "avalanche-lt1-testnet"
AvalancheLt2Testnet Chain = "avalanche-lt2-testnet"
AvalancheLt3Testnet Chain = "avalanche-lt3-testnet"
AvalancheLt4Testnet Chain = "avalanche-lt4-testnet"
AvalancheLt5Testnet Chain = "avalanche-lt5-testnet"
SyndrTestnet Chain = "syndr-testnet"
CrossfiEvmTestnet Chain = "crossfi-evm-testnet"
CeloMainnet Chain = "celo-mainnet"
TaikoKatlaTestnet Chain = "taiko-katla-testnet"
MovementMevmTestnet Chain = "movement-mevm-testnet"
ZoraSepoliaTestnet Chain = "zora-sepolia-testnet"
MerlinMainnet Chain = "merlin-mainnet"
MerlinTestnet Chain = "merlin-testnet"
)
65 changes: 65 additions & 0 deletions covalentclient/covalent_client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package covalentclient

import (
"github.com/covalenthq/covalent-api-sdk-go/services"
"github.com/covalenthq/covalent-api-sdk-go/utils"
)

type CovalentClientSettings struct {
// Toggle to analyze the execution of each api request.
Debug *bool `json:"debug,omitempty"`
// The number of concurrent requests allowed.
ThreadCount *int `json:"thread_count,omitempty"`
}

type CovalentClientType struct {
SecurityService services.SecurityService
BalanceService services.BalanceService
BaseService services.BaseService
NftService services.NftService
PricingService services.PricingService
TransactionService services.TransactionService
XykService services.XykService
Debug bool
ThreadCount int
}

var defaultDebug bool = false
var defaultThreadCount int = 3

func CovalentClient(apiKey string, settings ...CovalentClientSettings) *CovalentClientType {
client := &CovalentClientType{}
validator := utils.NewApiKeyValidator(apiKey)
isValidKey := validator.IsValidApiKey()

if len(settings) == 0 {
client.Debug = defaultDebug
client.ThreadCount = defaultThreadCount
} else {
// Settings were provided, apply them
setting := settings[0] // Assuming only one settings struct is passed

if setting.Debug == nil {
client.Debug = defaultDebug
} else {
client.Debug = *setting.Debug
}

if setting.ThreadCount == nil {
client.ThreadCount = defaultThreadCount
} else {
client.ThreadCount = *setting.ThreadCount
}
}

client.SecurityService = services.NewSecurityServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)
client.BalanceService = services.NewBalanceServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)
client.BaseService = services.NewBaseServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)
client.NftService = services.NewNftServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)
client.PricingService = services.NewPricingServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)
client.TransactionService = services.NewTransactionServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)
client.XykService = services.NewXykServiceImpl(apiKey, client.Debug, client.ThreadCount, isValidKey)

return client

}
Loading

0 comments on commit 9ae991b

Please sign in to comment.