Revert "Revert "Реализована страница 404 ошибки""

This reverts commit 22f80576bd.
This commit is contained in:
ErickSkrauch 2016-07-29 12:14:32 +03:00
parent 22f80576bd
commit 58c05533f3
3 changed files with 28 additions and 3 deletions

View File

@ -31,6 +31,8 @@ func FindRecord(username string) (SkinItem, error) {
if (decodeErr != nil) {
log.Println("Cannot decode record data")
}
} else {
log.Println("Error on request user data")
}
return record, err

View File

@ -9,7 +9,7 @@ func NotFound(w http.ResponseWriter, r *http.Request) {
json, _ := json.Marshal(map[string]string{
"status": "404",
"message": "Not Found",
"link": "http://docs.ely.by",
"link": "http://docs.ely.by/skin-system.html",
})
w.Header().Set("Content-Type", "application/json")

View File

@ -3,6 +3,7 @@ package main
import (
"log"
"runtime"
"time"
"net/http"
"github.com/gorilla/mux"
@ -12,16 +13,17 @@ import (
"elyby/minecraft-skinsystem/lib/services"
)
const redisString string = "redis:6379"
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
client, redisErr := redis.Dial("tcp", "redis:6379")
client, redisErr := redis.Dial("tcp", redisString)
if redisErr != nil {
log.Fatal("Redis unavailable")
}
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/", routes.NotFound)
router.HandleFunc("/skins/{username}", routes.Skin).Methods("GET").Name("skins")
router.HandleFunc("/cloaks/{username}", routes.Cape).Methods("GET").Name("cloaks")
router.HandleFunc("/textures/{username}", routes.Textures).Methods("GET").Name("textures")
@ -29,6 +31,8 @@ func main() {
router.HandleFunc("/minecraft.php", routes.MinecraftPHP).Methods("GET")
router.HandleFunc("/skins/", routes.SkinGET).Methods("GET")
router.HandleFunc("/cloaks/", routes.CapeGET).Methods("GET")
// 404
router.NotFoundHandler = http.HandlerFunc(routes.NotFound)
apiRouter := router.PathPrefix("/api").Subrouter()
apiRouter.HandleFunc("/user/{username}/skin", routes.SetSkin).Methods("POST")
@ -36,5 +40,24 @@ func main() {
services.Redis = client
services.Router = router
go func() {
for {
time.Sleep(5 * time.Second)
resp := services.Redis.Cmd("PING")
if (resp.Err != nil) {
log.Println("Redis not pinged. Try to reconnect")
newClient, redisErr := redis.Dial("tcp", redisString)
if (redisErr != nil) {
log.Println("Cannot reconnect to redis")
} else {
services.Redis = newClient
log.Println("Reconnected")
}
}
}
}()
log.Println("Started");
log.Fatal(http.ListenAndServe(":80", router))
}