Skip to content

Commit 1c6826d

Browse files
authored
Merge pull request #43 from justwatch/feat/adjust-deprecated-endpoints
2 parents 0a51101 + 1f458ec commit 1c6826d

File tree

1 file changed

+44
-11
lines changed

1 file changed

+44
-11
lines changed

marketing/v22/page.go

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,25 +79,58 @@ func (ps *PageService) GetOwnedPages(ctx context.Context, businessID string) ([]
7979

8080
// GetInstagramUsers returns all instagram accounts.
8181
func (ps *PageService) GetInstagramUsers(ctx context.Context, businessID string) ([]InstagramUser, error) {
82-
res := []InstagramUser{}
83-
route := fb.NewRoute(Version, "/%s/instagram_accounts", businessID).Limit(1000).Fields(instagramUserFields...)
84-
err := ps.c.GetList(ctx, route.String(), &res)
85-
if err != nil {
82+
type Page struct {
83+
ID string `json:"id"`
84+
}
85+
var pages []Page
86+
pageRoute := fb.NewRoute(Version, "/%s/accounts", businessID).Fields("id").Limit(100)
87+
if err := ps.c.GetList(ctx, pageRoute.String(), &pages); err != nil {
8688
return nil, err
8789
}
8890

89-
return res, nil
91+
var igUsers []InstagramUser
92+
for _, page := range pages {
93+
var wrapper struct {
94+
InstagramAccount *InstagramUser `json:"instagram_business_account"`
95+
}
96+
igRoute := fb.NewRoute(Version, "/%s", page.ID).Fields("instagram_business_account{id,username}")
97+
if err := ps.c.GetJSON(ctx, igRoute.String(), &wrapper); err != nil {
98+
continue
99+
}
100+
if wrapper.InstagramAccount != nil {
101+
igUsers = append(igUsers, *wrapper.InstagramAccount)
102+
}
103+
}
104+
105+
return igUsers, nil
90106
}
91107

92-
func (aas *PageService) ListIGUsers(ctx context.Context) ([]InstagramUser, error) {
93-
res := []InstagramUser{}
94-
rb := fb.NewRoute(Version, "/me/instagram_accounts").Limit(1000).Limit(1000).Fields(instagramUserFields...)
95-
err := aas.c.GetList(ctx, rb.String(), &res)
96-
if err != nil {
108+
func (ps *PageService) ListIGUsers(ctx context.Context) ([]InstagramUser, error) {
109+
type Page struct {
110+
ID string `json:"id"`
111+
}
112+
var pages []Page
113+
pageRoute := fb.NewRoute(Version, "/me/accounts").Fields("id").Limit(100)
114+
if err := ps.c.GetList(ctx, pageRoute.String(), &pages); err != nil {
97115
return nil, err
98116
}
99117

100-
return res, nil
118+
// Step 2: Get IG account from each page
119+
var igUsers []InstagramUser
120+
for _, page := range pages {
121+
var wrapper struct {
122+
InstagramAccount *InstagramUser `json:"instagram_business_account"`
123+
}
124+
igRoute := fb.NewRoute(Version, "/%s", page.ID).Fields("instagram_business_account{id,username}")
125+
if err := ps.c.GetJSON(ctx, igRoute.String(), &wrapper); err != nil {
126+
continue
127+
}
128+
if wrapper.InstagramAccount != nil {
129+
igUsers = append(igUsers, *wrapper.InstagramAccount)
130+
}
131+
}
132+
133+
return igUsers, nil
101134
}
102135

103136
// Get returns a single page.

0 commit comments

Comments
 (0)