gothub/pages/user.go

75 lines
1.8 KiB
Go

package pages
import (
"fmt"
"github.com/gofiber/fiber/v2"
"codeberg.org/Odyssium/gothub/utils"
"strings"
)
type User struct {
Login string
Name string
Bio string
AvatarUrl string
Location string
Following int64
Followers int64
Link string
Company string
Type string
EwTwitter string
}
type Ratelimit struct {
Remaining int64
Limit int64
}
// HandleUser handles the user page.
func HandleUser(c *fiber.Ctx) error {
user := utils.GetRequest("https://api.github.com/users/" + c.Params("user"))
if strings.Contains(user.Get("message").String(), "rate limit") { // dont wanna get the status code so i'll just do this instead 👍
ratelimitJSON := utils.GetRequest("https://api.github.com/rate_limit")
fmt.Println(ratelimitJSON)
var ratelimitArray []Ratelimit
ratelimitArray = append(ratelimitArray, Ratelimit{
Remaining: ratelimitJSON.Get("resources.core.remaining").Int(),
Limit: ratelimitJSON.Get("resources.core.limit").Int(),
})
fmt.Println(ratelimitArray)
return c.Render("ratelimit", fiber.Map{
"Title": "GitHub API /users endpoint rate limit exceeded",
"ratelimit": ratelimitArray,
})
} else {
var userArray []User
userArray = append(userArray, User{
Login: user.Get("login").String(),
Name: user.Get("name").String(),
Bio: user.Get("bio").String(),
AvatarUrl: "/avatar/" + user.Get("id").String(),
Location: user.Get("location").String(),
Following: user.Get("following").Int(),
Followers: user.Get("followers").Int(),
Link: user.Get("blog").String(),
Company: user.Get("company").String(),
Type: user.Get("type").String(),
EwTwitter: user.Get("twitter_username").String(),
})
fmt.Println(userArray)
return c.Render("user", fiber.Map{
"user": userArray,
})
}
}