krz/devianter
A DeviantArt guest API library for Go.
clone: git clone https://gitbay.org/krz/devianter.git
edfc25e18c4585b2deed7b7d9531cc3fcecf1d4f
verified · cmc
author: Christian Cleberg <hello@cleberg.net> · 2026-07-15T00:09:21Z
deviantion.go | 15 +++++++++------ misc.go | 7 ++++++- user-group.go | 24 ++++++++++++------------ util.go | 6 +++++- 4 files changed, 32 insertions(+), 20 deletions(-) @@ -149,12 +149,15 @@ func GetDeviation(id string, user string) (st Post, err Error) { } } - json.Unmarshal([]byte(txt), &description) - for _, a := range description.Blocks { - txt = a.Text - } - } + if err := json.Unmarshal([]byte(txt), &description); err != nil { + // Handle error appropriately + try(err) // or log/return the error + } + for _, a := range description.Blocks { + txt = a.Text + } + } st.Description = txt - + return } @@ -78,9 +78,14 @@ type Search struct { ResultsGalleryTemp []Deviation `json:"results"` } -func PerformSearch(query string, page int, scope rune, user ...string) (ss Search, err error, daError Error) { +func PerformSearch(query string, page int, scope rune, user ...string) (ss Search, daError Error, err error) { var buildurl strings.Builder + if user == nil { + err = errors.New("missing username (last argument)") + return + } + // о5 построение ссылок. switch scope { case 'a': // поиск артов по названию @@ -75,13 +75,13 @@ type Group struct { } // подходит как группа, так и пользователь -func (s Group) Get() (g GRuser, err error, daError Error) { - if s.Name == "" { - return g, errors.New("missing Name field"), daError - } - daError = ujson("dauserprofile/init/about?username="+s.Name, &g) +func (s Group) Get() (g GRuser, daError Error, err error) { + if s.Name == "" { + return g, daError, errors.New("missing Name field") + } + daError = ujson("dauserprofile/init/about?username="+s.Name, &g) - return + return } func (s Group) Favourites(page int, all bool, folderid ...int) (g Group, err Error) { @@ -110,10 +110,10 @@ func (s Group) Favourites(page int, all bool, folderid ...int) (g Group, err Err } // гарелея пользователя или группы -func (s Group) Gallery(page int, folderid ...int) (g Group, err error, daError Error) { - if s.Name == "" { - return g, errors.New("missing Name field"), daError - } +func (s Group) Gallery(page int, folderid ...int) (g Group, daError Error, err error) { + if s.Name == "" { + return g, daError, errors.New("missing Name field") + } var url strings.Builder if folderid[0] > 0 { @@ -135,8 +135,8 @@ func (s Group) Gallery(page int, folderid ...int) (g Group, err error, daError E url.WriteString("limit=50") url.WriteString("&with_subfolders=false") - daError = ujson(url.String(), &g.Content) - return + daError = ujson(url.String(), &g.Content) + return } type GroupAbout struct { @@ -94,7 +94,11 @@ func request(uri string, other ...string) reqrt { r.Err = e return r } - defer resp.Body.Close() + defer func() { + if err := resp.Body.Close(); err != nil { + try(err) + } + }() body, e := io.ReadAll(resp.Body) if e != nil {