75 lines
1.8 KiB
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,
|
|
})
|
|
}
|
|
}
|