/
realtime_purge.go
106 lines (87 loc) · 2.7 KB
/
realtime_purge.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
package realtime_purge
import (
"context"
"fmt"
"net/http"
"time"
"github.com/aziontech/azion-cli/pkg/cmd/version"
"github.com/aziontech/azion-cli/pkg/logger"
"github.com/aziontech/azion-cli/utils"
sdk "github.com/aziontech/azionapi-go-sdk/realtimepurge"
"go.uber.org/zap"
)
type Client struct {
apiClient *sdk.APIClient
}
func NewClient(c *http.Client, url string, token string) *Client {
conf := sdk.NewConfiguration()
conf.HTTPClient = c
conf.AddDefaultHeader("Authorization", "token "+token)
conf.AddDefaultHeader("Accept", "application/json;version=3")
conf.UserAgent = "Azion_CLI/" + version.BinVersion
conf.Servers = sdk.ServerConfigurations{
{URL: url},
}
conf.HTTPClient.Timeout = 30 * time.Second
return &Client{
apiClient: sdk.NewAPIClient(conf),
}
}
func (c *Client) PurgeWildcard(ctx context.Context, urlToPurge []string) error {
logger.Debug("Purge wildcard")
var purge sdk.PurgeWildcardRequest
purge.SetUrls(urlToPurge)
purge.SetMethod("delete")
request := c.apiClient.RealTimePurgeApi.PurgeWildcard(ctx).PurgeWildcardRequest(purge)
httpResp, err := c.apiClient.RealTimePurgeApi.PurgeWildcardExecute(request)
if err != nil {
logger.Debug("Error while purging wildcard", zap.Error(err))
err = utils.LogAndRewindBody(httpResp)
if err != nil {
return err
}
return utils.ErrorPerStatusCode(httpResp, err)
}
if httpResp.StatusCode != 201 {
return fmt.Errorf("%w: %s", err, httpResp.Status)
}
return nil
}
func (c *Client) PurgeUrls(ctx context.Context, urlToPurge []string) error {
logger.Debug("Purge urls")
var purge sdk.PurgeUrlRequest
purge.SetUrls(urlToPurge)
purge.SetMethod("delete")
request := c.apiClient.RealTimePurgeApi.PurgeUrl(ctx).PurgeUrlRequest(purge)
httpResp, err := c.apiClient.RealTimePurgeApi.PurgeUrlExecute(request)
if err != nil {
logger.Debug("Error while purging urls", zap.Error(err))
err = utils.LogAndRewindBody(httpResp)
if err != nil {
return err
}
return utils.ErrorPerStatusCode(httpResp, err)
}
if httpResp.StatusCode != 201 {
return fmt.Errorf("%w: %s", err, httpResp.Status)
}
return nil
}
func (c *Client) PurgeCacheKey(ctx context.Context, urlToPurge []string, layer string) error {
logger.Debug("Purge cache-key")
var purge sdk.PurgeCacheKeyRequest
purge.SetUrls(urlToPurge)
purge.SetMethod("delete")
purge.SetLayer(layer)
request := c.apiClient.RealTimePurgeApi.PurgeCacheKey(ctx).PurgeCacheKeyRequest(purge)
httpResp, err := c.apiClient.RealTimePurgeApi.PurgeCacheKeyExecute(request)
if err != nil {
logger.Debug("Error while purging cache keys", zap.Error(err))
err = utils.LogAndRewindBody(httpResp)
if err != nil {
return err
}
return utils.ErrorPerStatusCode(httpResp, err)
}
return nil
}