in logsapi/subscribe.go [85:126]
func (lc *Client) subscribe(types []SubscriptionType, extensionID, uri string) error {
data, err := json.Marshal(&SubscribeRequest{
SchemaVersion: SchemaVersionLatest,
LogTypes: types,
BufferingCfg: BufferingCfg{
MaxItems: 10000,
MaxBytes: 1024 * 1024,
TimeoutMS: 100,
},
Destination: Destination{
Protocol: "HTTP",
URI: uri,
HTTPMethod: http.MethodPost,
Encoding: "JSON",
},
})
if err != nil {
return fmt.Errorf("failed to marshal SubscribeRequest: %w", err)
}
url := lc.logsAPIBaseURL + "/2020-08-15/logs"
resp, err := lc.sendRequest(url, data, extensionID)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusAccepted {
return errors.New("logs API is not supported in this environment")
}
if resp.StatusCode != http.StatusOK {
body, err := io.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("%s failed: %d[%s]", url, resp.StatusCode, resp.Status)
}
return fmt.Errorf("%s failed: %d[%s] %s", url, resp.StatusCode, resp.Status, string(body))
}
return nil
}