Skip to content
This repository was archived by the owner on Aug 25, 2023. It is now read-only.

Commit 380c942

Browse files
sviandeahmdrz
authored andcommitted
FeddTag: add func for fetching next feedTag page (#264)
* FeddTag: add func for fetching next feedTag page * Feed tags: make name private
1 parent 098119b commit 380c942

File tree

1 file changed

+64
-13
lines changed

1 file changed

+64
-13
lines changed

feeds.go

+64-13
Original file line numberDiff line numberDiff line change
@@ -73,25 +73,20 @@ func (feed *Feed) Tags(tag string) (*FeedTag, error) {
7373
if err != nil {
7474
return nil, err
7575
}
76-
for i := range res.RankedItems {
77-
res.RankedItems[i].media = &FeedMedia{
78-
inst: insta,
79-
NextID: res.RankedItems[i].ID,
80-
}
81-
}
82-
83-
for i := range res.Images {
84-
res.Images[i].media = &FeedMedia{
85-
inst: insta,
86-
NextID: res.Images[i].ID,
87-
}
88-
}
76+
res.name = tag
77+
res.inst = feed.inst
78+
res.setValues()
8979

9080
return res, nil
9181
}
9282

9383
// FeedTag is the struct that fits the structure returned by instagram on TagSearch.
9484
type FeedTag struct {
85+
inst *Instagram
86+
err error
87+
88+
name string
89+
9590
RankedItems []Item `json:"ranked_items"`
9691
Images []Item `json:"items"`
9792
NumResults int `json:"num_results"`
@@ -101,3 +96,59 @@ type FeedTag struct {
10196
Story StoryMedia `json:"story"`
10297
Status string `json:"status"`
10398
}
99+
100+
func (ft *FeedTag) setValues() {
101+
for i := range ft.RankedItems {
102+
ft.RankedItems[i].media = &FeedMedia{
103+
inst: ft.inst,
104+
NextID: ft.RankedItems[i].ID,
105+
}
106+
}
107+
108+
for i := range ft.Images {
109+
ft.Images[i].media = &FeedMedia{
110+
inst: ft.inst,
111+
NextID: ft.Images[i].ID,
112+
}
113+
}
114+
}
115+
116+
// Next paginates over hashtag feed.
117+
func (ft *FeedTag) Next() bool {
118+
if ft.err != nil {
119+
return false
120+
}
121+
122+
insta := ft.inst
123+
name := ft.name
124+
body, err := insta.sendRequest(
125+
&reqOptions{
126+
Query: map[string]string{
127+
"max_id": ft.NextID,
128+
"rank_token": insta.rankToken,
129+
},
130+
Endpoint: fmt.Sprintf(urlFeedTag, name),
131+
},
132+
)
133+
if err == nil {
134+
newFT := FeedTag{}
135+
err = json.Unmarshal(body, &newFT)
136+
if err == nil {
137+
*ft = newFT
138+
ft.inst = insta
139+
ft.name = name
140+
if !ft.MoreAvailable {
141+
ft.err = ErrNoMore
142+
}
143+
ft.setValues()
144+
return true
145+
}
146+
}
147+
ft.err = err
148+
return false
149+
}
150+
151+
//Error returns hashtag error
152+
func (ft *FeedTag) Error() error {
153+
return ft.err
154+
}

0 commit comments

Comments
 (0)