-
Notifications
You must be signed in to change notification settings - Fork 69
/
akamai_bot_category.go
59 lines (49 loc) · 1.76 KB
/
akamai_bot_category.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
package botman
import (
"context"
"fmt"
"net/http"
)
type (
// The AkamaiBotCategory interface supports retrieving akamai bot categories
AkamaiBotCategory interface {
// GetAkamaiBotCategoryList https://techdocs.akamai.com/bot-manager/reference/get-akamai-bot-categories
GetAkamaiBotCategoryList(ctx context.Context, params GetAkamaiBotCategoryListRequest) (*GetAkamaiBotCategoryListResponse, error)
}
// GetAkamaiBotCategoryListRequest is used to retrieve the akamai bot category actions for a policy.
GetAkamaiBotCategoryListRequest struct {
CategoryName string
}
// GetAkamaiBotCategoryListResponse is returned from a call to GetAkamaiBotCategoryList.
GetAkamaiBotCategoryListResponse struct {
Categories []map[string]interface{} `json:"categories"`
}
)
func (b *botman) GetAkamaiBotCategoryList(ctx context.Context, params GetAkamaiBotCategoryListRequest) (*GetAkamaiBotCategoryListResponse, error) {
logger := b.Log(ctx)
logger.Debug("GetAkamaiBotCategoryList")
uri := "/appsec/v1/akamai-bot-categories"
req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return nil, fmt.Errorf("failed to create GetAkamaiBotCategoryList request: %w", err)
}
var result GetAkamaiBotCategoryListResponse
resp, err := b.Exec(req, &result)
if err != nil {
return nil, fmt.Errorf("GetAkamaiBotCategoryList request failed: %w", err)
}
if resp.StatusCode != http.StatusOK {
return nil, b.Error(resp)
}
var filteredResult GetAkamaiBotCategoryListResponse
if params.CategoryName != "" {
for _, val := range result.Categories {
if val["categoryName"].(string) == params.CategoryName {
filteredResult.Categories = append(filteredResult.Categories, val)
}
}
} else {
filteredResult = result
}
return &filteredResult, nil
}