func ProcessNotificationRequest(configFile *config.ConfigFile, errorChannel chan error, completionChannel chan bool, notificationChannel string, notificationFlow string, notification gotelemetry.Notification) { errorChannel <- gotelemetry.NewLogError("Notification mode is on.") apiToken, err := configFile.APIToken() if err != nil { errorChannel <- err completionChannel <- true return } credentials, err := gotelemetry.NewCredentials(apiToken) if err != nil { errorChannel <- err completionChannel <- true return } credentials.SetDebugChannel(errorChannel) if len(notificationChannel) > 0 { channel := gotelemetry.NewChannel(notificationChannel) err = channel.SendNotification(credentials, notification) } else if len(notificationFlow) > 0 { err = gotelemetry.SendFlowChannelNotification(credentials, notificationFlow, notification) } else { err = gotelemetry.NewError(http.StatusBadRequest, "Either channel or flow is required") } if err != nil { errorChannel <- err } else { errorChannel <- gotelemetry.NewLogError("Notification sent successfully.") } completionChannel <- true }
func ProcessPipeRequest(configFile *config.ConfigFile, errorChannel chan error, completionChannel chan bool, data []byte) { errorChannel <- gotelemetry.NewLogError("Piped mode is on.") errorChannel <- gotelemetry.NewDebugError("Input data is %s", strings.Replace(string(data), "\n", "\\n", -1)) submissionType := gotelemetry.BatchTypePATCH if config.CLIConfig.UseJSONPatch { errorChannel <- gotelemetry.NewDebugError("Will perform a JSON-Patch operation") submissionType = gotelemetry.BatchTypeJSONPATCH } else if config.CLIConfig.UsePOST { errorChannel <- gotelemetry.NewDebugError("Will perform a POST operation") submissionType = gotelemetry.BatchTypePOST } else { errorChannel <- gotelemetry.NewDebugError("Will perform a Rails-style HTTP PATCH operation") } apiToken, err := configFile.APIToken() if err != nil { errorChannel <- err completionChannel <- true return } credentials, err := gotelemetry.NewCredentials(apiToken, configFile.APIURL()) if err != nil { errorChannel <- err completionChannel <- true return } credentials.SetDebugChannel(errorChannel) updates := map[string]interface{}{} err = json.Unmarshal(data, &updates) if err != nil { errorChannel <- err completionChannel <- true return } b := gotelemetry.Batch{} for tag, update := range updates { b.SetData(tag, update) } err = b.Publish(credentials, configFile.ChannelTag(), submissionType) if err != nil { errorChannel <- err } errorChannel <- gotelemetry.NewLogError("Processing complete. Exiting.") completionChannel <- true }