in cmd/apmtool/events.go [31:88]
func (cmd *Commands) sendEventsCommand(ctx context.Context, c *cli.Command) error {
creds, err := cmd.getCredentials(ctx, c)
if err != nil {
return err
}
var body io.Reader
filename := c.String("file")
if filename == "" {
stat, err := os.Stdin.Stat()
if err != nil {
log.Fatalf("failed to stat stdin: %s", err.Error())
}
if stat.Size() == 0 {
log.Fatal("empty -file flag and stdin, please set one.")
}
body = io.NopCloser(os.Stdin)
} else {
f, err := os.Open(filename)
if err != nil {
return fmt.Errorf("error opening file: %w", err)
}
defer f.Close()
body = f
}
urlPath := "/intake/v2/events"
if c.Bool("rumv2") {
urlPath = "/intake/v2/rum/events"
}
req, err := http.NewRequest(
http.MethodPost,
cmd.cfg.APMServerURL+urlPath+"?verbose",
body,
)
if err != nil {
return fmt.Errorf("error creating HTTP request: %w", err)
}
req.Header.Set("Content-Type", "application/x-ndjson")
switch {
case creds.SecretToken != "":
req.Header.Set("Authorization", "Bearer "+creds.SecretToken)
case creds.APIKey != "":
req.Header.Set("Authorization", "ApiKey "+creds.APIKey)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
return fmt.Errorf("error performing HTTP request: %w", err)
}
defer resp.Body.Close()
io.Copy(os.Stderr, resp.Body)
if resp.StatusCode != http.StatusAccepted {
return fmt.Errorf("error sending events; server responded with %q", resp.Status)
}
return nil
}