Загрузка плаща вынесена в отдельный метод, реализовано отображение ссылки на плащ в запросах на текстуры

This commit is contained in:
ErickSkrauch
2016-09-22 19:32:00 +03:00
parent a9acfb954f
commit 9467911025
11 changed files with 94 additions and 26 deletions

View File

@@ -1,28 +1,26 @@
package routes
import (
"os"
"io"
"log"
"strings"
"net/http"
"github.com/gorilla/mux"
"elyby/minecraft-skinsystem/lib/tools"
"elyby/minecraft-skinsystem/lib/services"
"elyby/minecraft-skinsystem/lib/data"
)
func Cape(response http.ResponseWriter, request *http.Request) {
username := tools.ParseUsername(mux.Vars(request)["username"])
log.Println("request cape for username " + username)
file, err := os.Open(services.RootFolder + "/data/capes/" + strings.ToLower(username) + ".png")
rec, err := data.FindCapeByUsername(username)
if (err != nil) {
http.Redirect(response, request, "http://skins.minecraft.net/MinecraftCloaks/" + username + ".png", 301)
}
request.Header.Set("Content-Type", "image/png")
io.Copy(response, file)
io.Copy(response, rec.File)
}
func CapeGET(w http.ResponseWriter, r *http.Request) {

View File

@@ -15,7 +15,7 @@ const defaultHash = "default"
func Face(w http.ResponseWriter, r *http.Request) {
username := tools.ParseUsername(mux.Vars(r)["username"])
log.Println("request skin for username " + username);
rec, err := data.FindByUsername(username)
rec, err := data.FindSkinByUsername(username)
var hash string
if (err != nil || rec.SkinId == 0) {
hash = defaultHash;

View File

@@ -13,7 +13,7 @@ import (
func Skin(w http.ResponseWriter, r *http.Request) {
username := tools.ParseUsername(mux.Vars(r)["username"])
log.Println("request skin for username " + username);
rec, err := data.FindByUsername(username)
rec, err := data.FindSkinByUsername(username)
if (err != nil) {
http.Redirect(w, r, "http://skins.minecraft.net/MinecraftSkins/" + username + ".png", 301)
return

View File

@@ -9,13 +9,14 @@ import (
"elyby/minecraft-skinsystem/lib/data"
"elyby/minecraft-skinsystem/lib/tools"
"elyby/minecraft-skinsystem/lib/services"
)
func Textures(w http.ResponseWriter, r *http.Request) {
username := tools.ParseUsername(mux.Vars(r)["username"])
log.Println("request textures for username " + username)
rec, err := data.FindByUsername(username)
rec, err := data.FindSkinByUsername(username)
if (err != nil || rec.SkinId == 0) {
rec.Url = "http://skins.minecraft.net/MinecraftSkins/" + username + ".png"
rec.Hash = string(tools.BuildNonElyTexturesHash(username))
@@ -36,6 +37,24 @@ func Textures(w http.ResponseWriter, r *http.Request) {
}
}
capeRec, err := data.FindCapeByUsername(username)
if (err == nil) {
capeUrl, err := services.Router.Get("cloaks").URL("username", username)
if (err != nil) {
log.Println(err.Error())
}
var scheme string = "http://";
if (r.TLS != nil) {
scheme = "https://"
}
textures.Cape = &data.Cape{
Url: scheme + r.Host + capeUrl.String(),
Hash: capeRec.CalculateHash(),
}
}
response,_ := json.Marshal(textures)
w.Header().Set("Content-Type", "application/json")
w.Write(response)