we dont need gh api for users anymore
このコミットが含まれているのは:
コミット
9d84a830a9
|
@ -37,63 +37,22 @@ type User struct {
|
|||
Readme string
|
||||
}
|
||||
|
||||
type Ratelimit struct {
|
||||
Remaining int64
|
||||
Limit int64
|
||||
}
|
||||
|
||||
// HandleUser handles the user page.
|
||||
func HandleUser(c *fiber.Ctx) error {
|
||||
// Declare Array used for displaying data
|
||||
var userArray []User
|
||||
|
||||
resp, err := http.Get("https://github.com/" + c.Params("user"))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if resp.StatusCode == 404 {
|
||||
// I need a better way to do this
|
||||
return c.Status(404).Render("error", fiber.Map{
|
||||
"error": "User " + c.Params("user") + " not found",
|
||||
"error": "User " + c.Params("user") + " not found",
|
||||
})
|
||||
}
|
||||
// API
|
||||
user := utils.GetRequest("https://api.github.com/users/" + c.Params("user"))
|
||||
var link string
|
||||
if user.Get("message").String() == "Not Found" {
|
||||
return c.Status(404).Render("error", fiber.Map{
|
||||
"error": "User " + c.Params("user") + " not found",
|
||||
})
|
||||
}
|
||||
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")
|
||||
log.Println(ratelimitJSON)
|
||||
var ratelimitArray []Ratelimit
|
||||
|
||||
ratelimitArray = append(ratelimitArray, Ratelimit{
|
||||
Remaining: ratelimitJSON.Get("resources.core.remaining").Int(),
|
||||
Limit: ratelimitJSON.Get("resources.core.limit").Int(),
|
||||
})
|
||||
|
||||
log.Println(ratelimitArray)
|
||||
|
||||
return c.Render("ratelimit", fiber.Map{
|
||||
"Title": "GitHub API /users endpoint rate limit exceeded",
|
||||
"ratelimit": ratelimitArray,
|
||||
})
|
||||
} else {
|
||||
|
||||
if user.Get("blog").String() == "" {
|
||||
link = ""
|
||||
} else {
|
||||
link = user.Get("blog").String()
|
||||
if strings.HasPrefix(link, "https://") {
|
||||
link = strings.TrimPrefix(link, "https://")
|
||||
} else if strings.HasPrefix(link, "http://") {
|
||||
link = strings.TrimPrefix(link, "http://")
|
||||
} else {
|
||||
log.Println("Has no prefix")
|
||||
}
|
||||
}
|
||||
}
|
||||
// User README
|
||||
var readmee string
|
||||
|
||||
|
@ -115,7 +74,7 @@ func HandleUser(c *fiber.Ctx) error {
|
|||
// Sanitize the user README incase there is any weird shit in it
|
||||
readmeOutput := utils.UGCPolicy().SanitizeBytes(mightBeUnsafe)
|
||||
|
||||
// scraping
|
||||
// Scraping
|
||||
Scrape := User{
|
||||
Readme: string(readmeOutput),
|
||||
}
|
||||
|
@ -189,17 +148,16 @@ func HandleUser(c *fiber.Ctx) error {
|
|||
sc.Visit("https://github.com/" + c.Params("user") + "/")
|
||||
// Fixing the output a bit
|
||||
Scrape.AvatarUrl = strings.TrimPrefix(Scrape.AvatarUrl, "https://avatars.githubusercontent.com/u/")
|
||||
Scrape.AvatarUrl = "/avatar/" + Scrape.AvatarUrl
|
||||
Scrape.AvatarUrl = "/avatar/" + Scrape.AvatarUrl // Avatar needs to be in /avatar so its proxied
|
||||
if Scrape.StatusEmoji != "" {
|
||||
Scrape.StatusEmoji = emoji.Parse(":" + Scrape.StatusEmoji + ":")
|
||||
Scrape.StatusEmoji = emoji.Parse(":" + Scrape.StatusEmoji + ":") // Convert the emoji code to an actual emoji
|
||||
}
|
||||
Scrape.Login = strings.TrimPrefix(Scrape.Login, "@") // Only for orgs
|
||||
// Remove HTTP(s) from user website url if it exists
|
||||
if strings.HasPrefix(Scrape.Link, "https://") {
|
||||
Scrape.Link = strings.TrimPrefix(Scrape.Link, "https://")
|
||||
} else if strings.HasPrefix(Scrape.Link, "http://") {
|
||||
Scrape.Link = strings.TrimPrefix(Scrape.Link, "http://")
|
||||
} else {
|
||||
log.Println("Has no prefix")
|
||||
}
|
||||
|
||||
// Add scrape-based info to userArray
|
||||
|
|
|
@ -3,7 +3,7 @@ package utils
|
|||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
"os"
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
|
|
読み込み中…
新しいイシューから参照