make the user page mostly work when api is disabled

このコミットが含まれているのは:
Arya Kiran 2023-02-08 15:56:40 +05:30
コミット 4e3bb59c41
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 842D12BDA50DF120
2個のファイルの変更87行の追加92行の削除

ファイルの表示

@ -2,7 +2,6 @@ package pages
import (
"codeberg.org/gothub/gothub/utils"
"fmt"
"github.com/carlmjohnson/requests"
"github.com/gocolly/colly"
"github.com/gofiber/fiber/v2"
@ -38,6 +37,10 @@ type Ratelimit struct {
// HandleUser handles the user page.
func HandleUser(c *fiber.Ctx) error {
// Declare Array used for displaying data
var userArray []User
// API
user := utils.GetRequest("https://api.github.com/users/" + c.Params("user"))
if user.Get("message").String() == "Not Found" {
return c.Status(404).Render("error", fiber.Map{
@ -46,7 +49,7 @@ func HandleUser(c *fiber.Ctx) error {
}
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)
log.Println(ratelimitJSON)
var ratelimitArray []Ratelimit
ratelimitArray = append(ratelimitArray, Ratelimit{
@ -54,15 +57,30 @@ func HandleUser(c *fiber.Ctx) error {
Limit: ratelimitJSON.Get("resources.core.limit").Int(),
})
fmt.Println(ratelimitArray)
log.Println(ratelimitArray)
return c.Render("ratelimit", fiber.Map{
"Title": "GitHub API /users endpoint rate limit exceeded",
"ratelimit": ratelimitArray,
})
} else {
var userArray []User
var link string
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
err := requests.
@ -79,32 +97,13 @@ func HandleUser(c *fiber.Ctx) error {
log.Println(err)
}
}
mightBeUnsafe := markdown.ToHTML([]byte(readmee), nil, nil)
// Trust Nobody
// Sanitize the user README incase there is any weird shit in it
readmeOutput := UGCPolicy().SanitizeBytes(mightBeUnsafe)
var link string
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")
}
}
// scraping
var OrgOrUser string
Scrape := User{
Link: link,
Type: user.Get("type").String(),
//Link: link,
EwTwitter: user.Get("twitter_username").String(),
Readme: string(readmeOutput),
}
@ -112,7 +111,7 @@ func HandleUser(c *fiber.Ctx) error {
sc1 := colly.NewCollector(colly.AllowedDomains("github.com"))
sc1.OnHTML("div[itemtype]", func(e *colly.HTMLElement) {
OrgOrUser = e.Attr("itemtype")
Scrape.Type = e.Attr("itemtype")
})
sc1.Visit("https://github.com/" + c.Params("user") + "/")
@ -120,7 +119,7 @@ func HandleUser(c *fiber.Ctx) error {
colly.AllowedDomains("github.com"),
)
if OrgOrUser == "http://schema.org/Person" {
if Scrape.Type == "http://schema.org/Person" {
// Bio
sc.OnHTML("div[data-bio-text]", func(e *colly.HTMLElement) {
Scrape.Bio = e.Attr("data-bio-text")
@ -156,14 +155,10 @@ func HandleUser(c *fiber.Ctx) error {
sc.Visit("https://github.com/" + c.Params("user") + "/")
userArray = append(userArray, Scrape)
fmt.Println(userArray)
return c.Render("user", fiber.Map{
"Title": "User " + c.Params("user"),
"user": userArray,
})
}
}
// copied from bluemonday's GitHub repostiory, with some adaptations

ファイルの表示

@ -12,7 +12,7 @@
<h1 class="user-profile-h1">{{.Name}}</h1>
{{ end }}
<h2>{{.Login}}</h2>
{{ if eq .Type "User" }}
{{ if eq .Type "http://schema.org/Person" }}
<p><b>{{.Followers}}</b> followers - <b>{{.Following}}</b> following</p>
{{ else }}
<p><b>{{.Followers}}</b> followers</p>