summaryrefslogtreecommitdiff
path: root/user-group.go
blob: 1247ffe88109ae6802f60872e5aace2a4cec37f6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package devianter

import (
	"strconv"
	"strings"
)

// структура группы или пользователя
type groups struct {
	GroupAbout struct {
		FoundatedAt time `json:"foundationTs"`
		Description Text
	}
	GroupAdmins struct {
		Results []struct {
			Username string
		}
	}
}

type About struct {
	Country, Website, WebsiteLabel, Gender string
	RegDate                                int64 `json:"deviantFor"`
	Description                            Text  `json:"textContent"`

	SocialLinks []struct {
		Value string
	}
	Interests []struct {
		Label, Value string
	}
}

type users struct {
	About          About
	CoverDeviation struct {
		Deviation Deviation `json:"coverDeviation"`
	}
}

type GRuser struct {
	ErrorDescription string
	Owner            struct {
		Group    bool `json:"isGroup"`
		Username string
	}
	Gruser struct {
		ID   int `json:"gruserId"`
		Page struct {
			Modules []struct {
				Name       string
				ModuleData struct {
					groups
					users

					// группы
					Folders struct {
						Results []struct {
							FolderId int
							Name     string
						}
					}

					// галерея
					Folder struct {
						Username   string
						Pages      int `json:"totalPageCount"`
						Deviations []Deviation
					} `json:"folderDeviations"`
				}
			}
		}
	}
	Extra struct {
		Tag   string `json:"gruserTagline"`
		Stats struct {
			Deviations, Watchers, Watching, Pageviews, CommentsMade, Favourites, Friends int
			FeedComments                                                                 int `json:"commentsReceivedProfile"`
		}
	} `json:"pageExtraData"`
}

type Group struct {
	Name    string // обязательно заполнить
	Content GRuser
}

// подходит как группа, так и пользователь
func (s Group) GroupFunc() (g GRuser) {
	ujson("dauserprofile/init/about?username="+s.Name, &g)

	return
}

// гарелея пользователя или группы
func (s Group) Gallery(page int) (g Group) {
	var url strings.Builder
	url.WriteString("dauserprofile/init/gallery?username=")
	url.WriteString(s.Name)
	url.WriteString("&page=")
	url.WriteString(strconv.Itoa(page))
	url.WriteString("&deviations_limit=50&with_subfolders=false")

	ujson(url.String(), &g)
	return
}