Fix response decompression
This commit is contained in:
@@ -6,13 +6,14 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"io"
|
||||
"math"
|
||||
"net"
|
||||
"net/http"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// GetScoreByPlayerID GET /score/:player_id
|
||||
@@ -99,7 +100,7 @@ func getPlayerData(playerName string) (*models.TrackerDataJSON, int) {
|
||||
return nil, 0
|
||||
}
|
||||
|
||||
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
|
||||
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36")
|
||||
req.Header.Set("Accept-Encoding", "gzip, deflate, br")
|
||||
|
||||
res, err := c.Do(req)
|
||||
@@ -128,8 +129,16 @@ func getPlayerData(playerName string) (*models.TrackerDataJSON, int) {
|
||||
return nil, res.StatusCode
|
||||
}
|
||||
|
||||
encoding := res.Header.Get("Content-Encoding")
|
||||
reader, err := utils.DecompressResponseBody(encoding, res.Body)
|
||||
if err != nil {
|
||||
utils.Logger.Errorf("[SCORE] Failed to decompress response body: %s", err.Error())
|
||||
return nil, 0
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
var response models.TrackerDataJSON
|
||||
body, err := io.ReadAll(res.Body)
|
||||
body, err := io.ReadAll(reader)
|
||||
if err != nil {
|
||||
utils.Logger.Errorf("[SCORE] Failed to read response body: %s", err.Error())
|
||||
return nil, 0
|
||||
|
||||
@@ -3,6 +3,11 @@ package utils
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"io"
|
||||
|
||||
"github.com/andybalholm/brotli"
|
||||
"github.com/klauspost/compress/flate"
|
||||
"github.com/klauspost/compress/gzip"
|
||||
)
|
||||
|
||||
func GenerateActivationCode() string {
|
||||
@@ -12,3 +17,16 @@ func GenerateActivationCode() string {
|
||||
}
|
||||
return hex.EncodeToString(bytes)
|
||||
}
|
||||
|
||||
func DecompressResponseBody(encoding string, body io.Reader) (io.ReadCloser, error) {
|
||||
switch encoding {
|
||||
case "gzip":
|
||||
return gzip.NewReader(body)
|
||||
case "deflate":
|
||||
return flate.NewReader(body), nil
|
||||
case "br":
|
||||
return io.NopCloser(brotli.NewReader(body)), nil
|
||||
default:
|
||||
return io.NopCloser(body), nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user