func()

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
}