Skip to content

Commit 0a51101

Browse files
authored
Merge pull request #41 from justwatch/fix/correctPageBackedEndpoint
fixes
2 parents a1e5905 + 2b5de4f commit 0a51101

File tree

1 file changed

+9
-31
lines changed

1 file changed

+9
-31
lines changed

marketing/v22/page.go

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package v22
33
import (
44
"context"
55
"fmt"
6-
"slices"
76

87
"github.com/justwatch/facebook-marketing-api-golang-sdk/fb"
98
)
@@ -29,28 +28,21 @@ func (ps *PageService) SetPageAccessToken(ctx context.Context, pageID string) (c
2928
}
3029

3130
// GetPageBackedInstagramAccounts returns the instagram actor associated with a facebook page.
32-
func (ps *PageService) GetPageBackedInstagramAccounts(ctx context.Context, pageID string) (*InstagramUser, error) {
31+
func (ps *PageService) GetInstagramBusinessAccount(ctx context.Context, pageID string) (*InstagramUser, error) {
3332
ctx, err := ps.SetPageAccessToken(ctx, pageID)
3433
if err != nil {
3534
return nil, err
3635
}
3736

3837
fpiga := struct {
39-
// Entity in the GraphAPI: IGUser.
40-
ConnectedPageBackedInstagramAccount struct {
41-
Data []InstagramUser `json:"data"`
42-
} `json:"instagram_accounts"`
38+
InstagramBusinessAccount InstagramUser `json:"instagram_business_account"`
4339
}{}
44-
err = ps.c.GetJSON(ctx, fb.NewRoute(Version, "/%s", pageID).Fields("instagram_accounts{id,username}").String(), &fpiga)
40+
err = ps.c.GetJSON(ctx, fb.NewRoute(Version, "/%s", pageID).Fields("instagram_business_account{id,username}").String(), &fpiga)
4541
if err != nil {
4642
return nil, err
4743
}
4844

49-
if len(fpiga.ConnectedPageBackedInstagramAccount.Data) != 1 {
50-
return nil, fmt.Errorf("could not get consistent page_backed_instagram_accounts data for facebook page with external id %s", pageID)
51-
}
52-
53-
res := fpiga.ConnectedPageBackedInstagramAccount.Data[0]
45+
res := fpiga.InstagramBusinessAccount
5446
if res.ID == "" {
5547
return nil, fmt.Errorf("could not get page_backed_instagram_accounts ID for facebook page with external id %s", pageID)
5648
}
@@ -97,31 +89,17 @@ func (ps *PageService) GetInstagramUsers(ctx context.Context, businessID string)
9789
return res, nil
9890
}
9991

100-
func (aas *PageService) ListIGUsers(ctx context.Context) ([]IGUser, error) {
101-
res := []IGUser{}
102-
rb := fb.NewRoute(Version, "/me/accounts").Limit(1000).Fields("id", "name", "instagram_business_account", "connected_instagram_account")
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...)
10395
err := aas.c.GetList(ctx, rb.String(), &res)
10496
if err != nil {
10597
return nil, err
10698
}
107-
res = slices.DeleteFunc(res, func(i IGUser) bool {
108-
return i.InstagramBusinessAccount.ID == "" && i.ConnectedInstagramAccount.ID == ""
109-
})
11099

111100
return res, nil
112101
}
113102

114-
type IGUser struct {
115-
Name string `json:"name"`
116-
InstagramBusinessAccount struct {
117-
ID string `json:"id"`
118-
} `json:"instagram_business_account"`
119-
ConnectedInstagramAccount struct {
120-
ID string `json:"id"`
121-
} `json:"connected_instagram_account"`
122-
ID string `json:"id"`
123-
}
124-
125103
// Get returns a single page.
126104
func (ps *PageService) Get(ctx context.Context, id string) (*Page, error) {
127105
res := &Page{}
@@ -138,7 +116,7 @@ func (ps *PageService) Get(ctx context.Context, id string) (*Page, error) {
138116
return res, nil
139117
}
140118

141-
// GetInstagramUser returns a single instagram actor.
119+
// GetInstagramUser returns a single instagram user.
142120
func (ps *PageService) GetInstagramUser(ctx context.Context, id string) (*InstagramUser, error) {
143121
res := &InstagramUser{}
144122
route := fb.NewRoute(Version, "/%s", id).Fields(instagramUserFields...)
@@ -161,7 +139,7 @@ type Page struct {
161139
GlobalBrandPageName string `json:"global_brand_page_name"`
162140
}
163141

164-
// InstagramUser represents an instagram actor.
142+
// InstagramActor represents an instagram actor.
165143
type InstagramUser struct {
166144
ID string `json:"id"`
167145
Username string `json:"username"`

0 commit comments

Comments
 (0)