-
Notifications
You must be signed in to change notification settings - Fork 1
/
favs.go
91 lines (81 loc) · 1.32 KB
/
favs.go
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
package flickr
type Fav struct {
Id string
Title string
Owner string
FavedBy string
DateFaved string
Farm int
Secret string
Server string
}
type FavsRaw struct {
Photos struct {
Page int
Pages int
PerPage int
Total int
Photo []struct {
Date_Faved string
Farm int
Id string
IsFamily int
IsFriend int
IsPublic int
Owner string
Secret string
Server string
Title string
}
}
Stat string
}
type FavsRaw2 struct {
Photos struct {
Page int
Pages int
PerPage int
Photo []struct {
Date_Faved string
Farm int
Id string
IsFamily int
IsFriend int
IsPublic int
Owner string
Secret string
Server string
Title string
}
Total string
}
Stat string
}
func (client *Client) Favs (userId string) ([]Fav, error) {
response, err := client.Request("favorites.getPublicList", Params{
"user_id": userId,
})
raw := &FavsRaw{}
err = Parse(response, raw)
if err != nil {
raw := &FavsRaw2{}
err = Parse(response, raw)
}
if err != nil {
return nil, err
}
favs := []Fav{}
for _, photo := range raw.Photos.Photo {
favs = append(favs, Fav{
Id: photo.Id,
Title: photo.Title,
Owner: photo.Owner,
FavedBy: userId,
DateFaved: photo.Date_Faved,
Farm: photo.Farm,
Secret: photo.Secret,
Server: photo.Server,
})
}
return favs, nil
}