-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplace.go
58 lines (47 loc) · 1.37 KB
/
place.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
package yahb
import "errors"
var (
ErrInvalidPlaceNoID = errors.New("yahb: ID missing")
ErrInvalidNoPlaceId = errors.New("yahb: placement ID missing")
)
// easyjson:json
type Place struct {
ID string `json:"id"` // уникальный идентификатор Яндекса для рекламного места - должеа вернуться в ответе
PlacementId string `json:"placementId,omitempty"` // идентификатор рекламного в терминах монетизатора
CodeType BidCodeType `json:"codeType,omitempty"`
Sizes [][]int `json:"sizes,omitempty"` // Массив размеров, которые указал пользователь [ширина,высота]
}
// Size - size in uniq format
func (place *Place) Size() []Size {
if len(place.Sizes) == 0 {
return nil
}
var sizes []Size
for _, s := range place.Sizes {
sizes = append(sizes, Size{
Width: s[0],
Height: s[1],
})
}
return sizes
}
// Validate attributes
func (place *Place) Validate() error {
if place.ID == "" {
return ErrInvalidPlaceNoID
}
if place.PlacementId == "" {
return ErrInvalidNoPlaceId
}
if len(place.Sizes) != 0 {
for _, s := range place.Sizes {
if err := (&Size{
Width: s[0],
Height: s[1],
}).Validate(); err != nil {
return err
}
}
}
return nil
}