Update main.go

This commit is contained in:
P4vlushaaa 2025-01-23 13:11:39 +03:00 committed by GitHub
parent 4fad092e18
commit 274a94d6f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,34 +5,61 @@ import (
"net/http" "net/http"
"os" "os"
"myproject/services/api/internal/handlers"
"myproject/services/api/internal/neo"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"web3-onlyfans/services/api/internal/handlers"
"web3-onlyfans/services/api/internal/utils"
"web3-onlyfans/services/api/internal/neo"
) )
func main() { func main() {
rpcEndpoint := os.Getenv("NEO_RPC_ENDPOINT") // "http://localhost:20332" // Загружаем конфиг (примерно)
walletPath := os.Getenv("NEO_WALLET_PATH") configPath := os.Getenv("API_CONFIG_PATH")
walletPass := os.Getenv("NEO_WALLET_PASS") if configPath == "" {
configPath = "./config.yaml"
// Инициализируем клиент NEO }
neoCli, err := neo.NewNeoClient(rpcEndpoint, walletPath, walletPass) cfg, err := utils.LoadConfig(configPath)
if err != nil { if err != nil {
log.Fatalf("failed to init neo client: %v", err) log.Fatalf("failed to load config: %v", err)
} }
// Инициализируем логгер
logger := utils.NewLogger(cfg.LogLevel)
// Инициализируем NeoClient (RPC + кошелёк)
neoCli, err := neo.NewNeoClient(cfg.NeoRPC, cfg.WalletPath, cfg.WalletPass)
if err != nil {
logger.Fatalf("failed to init neo client: %v", err)
}
// Роуты
r := mux.NewRouter() r := mux.NewRouter()
// NFT endpoints
r.HandleFunc("/nft/mint", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/nft/mint", func(w http.ResponseWriter, r *http.Request) {
handlers.HandleMintNFT(w, r, neoCli) handlers.MintNFTHandler(w, r, neoCli, logger, cfg)
}).Methods("POST") }).Methods("POST")
r.HandleFunc("/nft/market-list", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/nft/properties", func(w http.ResponseWriter, r *http.Request) {
handlers.HandleListMarket(w, r, neoCli) handlers.NFTPropertiesHandler(w, r, neoCli, logger, cfg)
}).Methods("GET") }).Methods("GET")
// и т.д. // Market endpoints
r.HandleFunc("/market/list", func(w http.ResponseWriter, r *http.Request) {
handlers.MarketListHandler(w, r, neoCli, logger, cfg)
}).Methods("GET")
log.Println("Starting API on :8080") r.HandleFunc("/market/buy", func(w http.ResponseWriter, r *http.Request) {
log.Fatal(http.ListenAndServe(":8080", r)) handlers.MarketBuyHandler(w, r, neoCli, logger, cfg)
}).Methods("POST")
// Token endpoints (например, посмотреть баланс)
r.HandleFunc("/token/balance", func(w http.ResponseWriter, r *http.Request) {
handlers.TokenBalanceHandler(w, r, neoCli, logger, cfg)
}).Methods("GET")
// Запуск сервера
addr := cfg.ListenAddr
logger.Infof("API starting on %s", addr)
if err := http.ListenAndServe(addr, r); err != nil {
logger.Fatalf("server error: %v", err)
}
} }