diff options
| author | lost+skunk <[email protected]> | 2024-09-04 20:22:58 +0300 |
|---|---|---|
| committer | lost+skunk <[email protected]> | 2024-09-04 20:22:58 +0300 |
| commit | c39399403e031a8c1ad53969770e4261d2c9e7aa (patch) | |
| tree | ecac0ca1c9f095803abec42962d5aa31107676f1 /app | |
| parent | 5a8a0987a2db22de6b9dd184bf40a3e2d16c5bbf (diff) | |
| download | skunky-art-c39399403e031a8c1ad53969770e4261d2c9e7aa.tar.gz skunky-art-c39399403e031a8c1ad53969770e4261d2c9e7aa.tar.bz2 skunky-art-c39399403e031a8c1ad53969770e4261d2c9e7aa.zip | |
отображение ошибок
Diffstat (limited to 'app')
| -rw-r--r-- | app/api.go | 6 | ||||
| -rw-r--r-- | app/cache.go | 1 | ||||
| -rw-r--r-- | app/config.go | 2 | ||||
| -rw-r--r-- | app/parsers.go | 6 | ||||
| -rw-r--r-- | app/router.go | 8 | ||||
| -rw-r--r-- | app/util.go | 15 | ||||
| -rw-r--r-- | app/wrapper.go | 59 |
7 files changed, 69 insertions, 28 deletions
@@ -58,8 +58,12 @@ func (a API) Random() { a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500) } - s, err := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') + s, err, daErr := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') try(err) + if daErr.RAW != nil { + continue + } + deviation := &s.Results[rand.Intn(len(s.Results))] if deviation.NSFW && !CFG.Nsfw { diff --git a/app/cache.go b/app/cache.go index cbf2432..975fa0a 100644 --- a/app/cache.go +++ b/app/cache.go @@ -127,6 +127,7 @@ func InitCacheSystem() { try(os.RemoveAll(fileName)) } } + if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize { try(os.RemoveAll(fileName)) } diff --git a/app/config.go b/app/config.go index eff9ee8..745d2f4 100644 --- a/app/config.go +++ b/app/config.go @@ -89,7 +89,7 @@ func ExecuteConfig() { lifetimeParsed = duration * int64(num) } - CFG.Cache.MaxSize /= 1024 ^ 2 + CFG.Cache.MaxSize *= 1024 ^ 2 go InitCacheSystem() } devianter.UserAgent = CFG.UserAgent diff --git a/app/parsers.go b/app/parsers.go index 3a318be..b7f15fd 100644 --- a/app/parsers.go +++ b/app/parsers.go @@ -9,7 +9,11 @@ import ( "golang.org/x/net/html" ) -func (s skunkyart) ParseComments(c devianter.Comments) string { +func (s skunkyart) ParseComments(c devianter.Comments, daError devianter.Error) string { + if daError.RAW != nil { + return "Failed to fetch comments :(" + } + var cmmts strings.Builder replied := make(map[int]string) diff --git a/app/router.go b/app/router.go index 2625374..32488cb 100644 --- a/app/router.go +++ b/app/router.go @@ -64,13 +64,13 @@ func Router() { var skunky = skunkyart{Version: Release.Version} + skunky.Args = r.URL.Query() arg := skunky.Args.Get p, _ := strconv.Atoi(arg("p")) skunky.Endpoint = path[1] skunky.API.main = &skunky skunky.Writer = w - skunky.Args = r.URL.Query() skunky.BasePath = CFG.URI skunky.QueryRaw = arg("q") skunky.Query = u.QueryEscape(skunky.QueryRaw) @@ -128,9 +128,9 @@ func Router() { skunky.API.Error("Not Found", 404) } - // 404 - default: - skunky.ReturnHTTPError(404) + // 404 + default: + skunky.ReturnHTTPError(404) } } diff --git a/app/util.go b/app/util.go index c992466..c698090 100644 --- a/app/util.go +++ b/app/util.go @@ -139,6 +139,19 @@ func UrlBuilder(strs ...string) string { return str.String() } +func (s skunkyart) Error(dAerr devianter.Error) { + s.Writer.WriteHeader(502) + + var msg strings.Builder + msg.WriteString(`<html><link rel="stylesheet" href="`) + msg.WriteString(UrlBuilder("stylesheet")) + msg.WriteString(`" /><h3>DeviantArt error — '`) + msg.WriteString(dAerr.Error) + msg.WriteString("'</h3></html>") + + wr(s.Writer, msg.String()) +} + func (s skunkyart) ReturnHTTPError(status int) { s.Writer.WriteHeader(status) @@ -203,7 +216,7 @@ func ParseMedia(media devianter.Media, thumb ...int) string { } return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", filename) } - return mediaUrl + return "" } func ConvertDeviantArtUrlToSkunkyArt(url string) (output string) { diff --git a/app/wrapper.go b/app/wrapper.go index a3d251b..a2e0fa4 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -18,10 +18,15 @@ func (s skunkyart) GRUser() { } var g devianter.Group + var daError devianter.Error g.Name = s.Query var err error - s.Templates.GroupUser.GR, err = g.Get() + s.Templates.GroupUser.GR, err, daError = g.Get() try(err) + if daError.RAW != nil { + s.Error(daError) + return + } group := &s.Templates.GroupUser @@ -63,12 +68,7 @@ func (s skunkyart) GRUser() { group.About.Interests += interest.String() } } - group.About.Comments = s.ParseComments(devianter.GetComments( - strconv.Itoa(group.GR.Gruser.ID), - "", - s.Page, - 4, - )) + group.About.Comments = s.ParseComments(devianter.GetComments(strconv.Itoa(group.GR.Gruser.ID),"",s.Page,4)) case "cover_deviation": group.About.BGMeta = x.ModuleData.CoverDeviation.Deviation @@ -98,12 +98,17 @@ func (s skunkyart) GRUser() { } if s.Type == 'f' { - content = g.Favourites(s.Page, all, folderid) + content, daError = g.Favourites(s.Page, all, folderid) } else { - content, err = g.Gallery(s.Page, folderid) + content, err, daError = g.Gallery(s.Page, folderid) try(err) } + if daError.RAW != nil { + s.Error(daError) + return + } + if folderid > 0 || (s.Type == 'f' && all) { group.Gallery.List = s.DeviationList(content.Content.Results, true, DeviationList{ More: content.Content.HasMore, @@ -172,19 +177,26 @@ func (s skunkyart) Deviation(author, postname string) { return } + var err devianter.Error post := &s.Templates.Deviation id := id_search[len(id_search)-1] - post.Post = devianter.GetDeviation(id, author) + post.Post, err = devianter.GetDeviation(id, author) + if err.RAW != nil { + s.Error(err) + return + } + + if post.Post.Comments.Total <= 50 { + post.Post.Comments.Cursor = "" + } if post.Post.Deviation.TextContent.Excerpt != "" { post.Post.Description = ParseDescription(post.Post.Deviation.TextContent) } else { post.Post.Description = ParseDescription(post.Post.Deviation.Extended.DescriptionText) } - // время публикации - post.StringTime = post.Post.Deviation.PublishedTime.UTC().String() - post.Post.IMG = ParseMedia(post.Post.Deviation.Media) + for _, x := range post.Post.Deviation.Extended.RelatedContent { if len(x.Deviations) != 0 { post.Related += s.DeviationList(x.Deviations, false) @@ -203,17 +215,19 @@ func (s skunkyart) Deviation(author, postname string) { post.Tags += tag.String() } - if post.Post.Comments.Total <= 50 { - post.Post.Comments.Cursor = "" - } - post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1)) + post.StringTime = post.Post.Deviation.PublishedTime.UTC().String() + post.Post.IMG = ParseMedia(post.Post.Deviation.Media) s.ExecuteTemplate("deviantion.htm", "html", &s) } func (s skunkyart) DD() { - dd := devianter.GetDailyDeviations(s.Page) + dd, err := devianter.GetDailyDeviations(s.Page) + if err.RAW != nil { + s.Error(err) + return + } var strips strings.Builder for _, x := range dd.Strips { strips.WriteString(`<h3 class="`) @@ -243,12 +257,13 @@ func (s skunkyart) Search() { } var err error + var daError devianter.Error ss := &s.Templates.Search switch s.Type { case 'a', 't': - ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type) + ss.Content, err, daError = devianter.PerformSearch(s.Query, s.Page, s.Type) case 'g', 'f': - ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type, s.Args.Get("usr")) + ss.Content, err, daError = devianter.PerformSearch(s.Query, s.Page, s.Type, s.Args.Get("usr")) case 'r': // скраппер, поскольку девиантартовцы зажопили гостевое API для поиска групп var ( usernames = make(map[int]string) @@ -297,6 +312,10 @@ func (s skunkyart) Search() { return } try(err) + if daError.RAW != nil { + s.Error(daError) + return + } if s.Type != 'r' { ss.List = s.DeviationList(ss.Content.Results, false, DeviationList{ |
