54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package information
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"bdgrp_go/routes"
|
|
"bdgrp_go/routes/upstream"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func init() {
|
|
path := routes.PathOf()
|
|
routes.Register(func(app *fiber.App) {
|
|
app.Get(path, application)
|
|
fmt.Println("Loaded:", path)
|
|
})
|
|
}
|
|
|
|
func application(c *fiber.Ctx) error {
|
|
server := os.Getenv("SERVER")
|
|
cachePath := filepath.Join("resp", server, "overview.binpb")
|
|
|
|
headers := map[string]string{
|
|
"User-Agent": c.Get("User-Agent"),
|
|
"Content-Type": c.Get("Content-Type"),
|
|
"Accept": c.Get("Accept"),
|
|
"Accept-Encoding": c.Get("Accept-Encoding"),
|
|
"x-clientversion": c.Get("x-clientversion"),
|
|
}
|
|
|
|
if server == "CN" {
|
|
headers["x-platformid"] = c.Get("x-platformid")
|
|
headers["x-deviceid"] = c.Get("x-deviceid")
|
|
headers["x-channelid"] = c.Get("x-channelid")
|
|
headers["x-clientplatform"] = c.Get("x-clientplatform")
|
|
}
|
|
|
|
url := fmt.Sprintf("%s/api/information/overview", upstream.BaseUrl())
|
|
data, err := upstream.Fetch(url, headers)
|
|
if err != nil {
|
|
data, err = os.ReadFile(cachePath)
|
|
if err != nil {
|
|
return c.Status(500).SendString("no cache available")
|
|
}
|
|
} else {
|
|
os.WriteFile(cachePath, data, 0644)
|
|
}
|
|
|
|
return c.Send(data)
|
|
}
|