11
"go.avito.ru/DO/moira"
15
Event moira.NotificationEvent `json:"event"`
16
TriggerData moira.TriggerData `json:"trigger_data"`
20
Done bool `json:"done"`
23
Event *moira.NotificationEvent `json:"event"`
24
TriggerData *moira.TriggerData `json:"trigger_data"`
25
Error interface{} `json:"error"`
31
httpClient *http.Client
34
func NewClient(URL string) Client {
38
httpClient: &http.Client{
39
Timeout: 1 * time.Second,
44
func (client Client) SendRequest(request Request) (taskID string, err error) {
45
encodedRequest, err := json.Marshal(request)
50
req, err := http.NewRequest("PUT", client.URL+"/request", bytes.NewBuffer(encodedRequest))
54
resp, err := client.httpClient.Do(req)
59
responseBytes, err := ioutil.ReadAll(resp.Body)
64
var responseData Response
65
err = json.Unmarshal(responseBytes, &responseData)
70
if responseData.ID == "" {
71
return "", fmt.Errorf("empty ID returned")
74
return responseData.ID, nil
77
func (client Client) CheckProgress(taskID string) (Response, error) {
78
req, err := http.NewRequest("GET", client.URL+"/request/"+taskID, nil)
80
return Response{}, err
83
resp, err := client.httpClient.Do(req)
85
return Response{}, err
88
responseBytes, err := ioutil.ReadAll(resp.Body)
90
return Response{}, err
94
err = json.Unmarshal(responseBytes, &response)
96
return Response{}, err
102
func (client Client) ApplyFallbacks(event *moira.NotificationEvent, triggerData *moira.TriggerData, saturation []moira.Saturation) {
103
// add a tag indicating that saturation failed
104
const SaturationFailedTag = "fan-saturation-failed"
105
var shouldAddTag = true
106
for _, tag := range triggerData.Tags {
107
if tag == SaturationFailedTag {
113
triggerData.Tags = append(triggerData.Tags, SaturationFailedTag)