This repository has been archived by the owner on Feb 5, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbrand_ads.go
108 lines (87 loc) · 1.99 KB
/
brand_ads.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package fbintegration
import (
"fmt"
"math"
)
type (
// BrandAds comment pending
BrandAds struct {
FBAdAccountID string
Ads []Ad
BrandID int64
BrandName string
}
)
// NewBrandAds comment pending
func NewBrandAds(adAccountID string, brandID int64, brandName string) BrandAds {
var ads []Ad
return BrandAds{
adAccountID,
ads,
brandID,
brandName,
}
}
// GenerateParams comment pending
func (ba *BrandAds) GenerateParams(adAccountID string, updatedSince int64) Params {
endpoint := fmt.Sprintf("/act_%s/ads", adAccountID)
params := map[string]interface{}{
"date_preset": "lifetime",
"limit": 40,
"fields": "fields=id,creative{id, object_id},adset",
"updated_since": updatedSince,
}
return NewParams(endpoint, params)
}
// Add comment pending
func (ba *BrandAds) Add(ad Ad) {
ba.Ads = append(ba.Ads, ad)
}
// GenerateSlices comment pending
func (ba *BrandAds) GenerateSlices(size int) []AdBatch {
var adBatch []AdBatch
batchAmount := int(math.Ceil(float64(len(ba.Ads)) / float64(size)))
startIndex := 0
endIndex := size
if len(ba.Ads) < size {
endIndex = len(ba.Ads)
}
for i := 0; i < batchAmount; i++ {
batch := AdBatch{ba.Ads[startIndex:endIndex]}
adBatch = append(adBatch, batch)
startIndex += size
endIndex += size
if endIndex > len(ba.Ads) {
endIndex = len(ba.Ads)
}
}
return adBatch
}
// FindByCreativeID comment pending
func (ba *BrandAds) FindByCreativeID(creativeID string) *Ad {
for i, ad := range ba.Ads {
if ad.Creative.ID == creativeID {
return &ba.Ads[i]
}
}
return nil
}
// FindByPostID comment pending
func (ba *BrandAds) FindByPostID(postID string) *Ad {
for i, ad := range ba.Ads {
if ad.Creative.PostID == postID {
return &ba.Ads[i]
}
}
return nil
}
// FindByObjectID comment pending
func (ba *BrandAds) FindByObjectID(objectID string) []*Ad {
var ads []*Ad
for i, ad := range ba.Ads {
if ad.Creative.ObjectID() == objectID {
ads = append(ads, &ba.Ads[i])
}
}
return ads
}