forked from jshiffer/matterbridge
86 lines
2.1 KiB
Go
86 lines
2.1 KiB
Go
package slack
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
)
|
|
|
|
type (
|
|
WorkflowStepCompletedRequest struct {
|
|
WorkflowStepExecuteID string `json:"workflow_step_execute_id"`
|
|
Outputs map[string]string `json:"outputs"`
|
|
}
|
|
|
|
WorkflowStepFailedRequest struct {
|
|
WorkflowStepExecuteID string `json:"workflow_step_execute_id"`
|
|
Error struct {
|
|
Message string `json:"message"`
|
|
} `json:"error"`
|
|
}
|
|
)
|
|
|
|
type WorkflowStepCompletedRequestOption func(opt *WorkflowStepCompletedRequest) error
|
|
|
|
func WorkflowStepCompletedRequestOptionOutput(outputs map[string]string) WorkflowStepCompletedRequestOption {
|
|
return func(opt *WorkflowStepCompletedRequest) error {
|
|
if len(outputs) > 0 {
|
|
opt.Outputs = outputs
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WorkflowStepCompleted indicates step is completed
|
|
func (api *Client) WorkflowStepCompleted(workflowStepExecuteID string, options ...WorkflowStepCompletedRequestOption) error {
|
|
// More information: https://api.slack.com/methods/workflows.stepCompleted
|
|
r := &WorkflowStepCompletedRequest{
|
|
WorkflowStepExecuteID: workflowStepExecuteID,
|
|
}
|
|
for _, option := range options {
|
|
option(r)
|
|
}
|
|
|
|
endpoint := api.endpoint + "workflows.stepCompleted"
|
|
jsonData, err := json.Marshal(r)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
response := &SlackResponse{}
|
|
if err := postJSON(context.Background(), api.httpclient, endpoint, api.token, jsonData, response, api); err != nil {
|
|
return err
|
|
}
|
|
|
|
if !response.Ok {
|
|
return response.Err()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// WorkflowStepFailed indicates step is failed
|
|
func (api *Client) WorkflowStepFailed(workflowStepExecuteID string, errorMessage string) error {
|
|
// More information: https://api.slack.com/methods/workflows.stepFailed
|
|
r := WorkflowStepFailedRequest{
|
|
WorkflowStepExecuteID: workflowStepExecuteID,
|
|
}
|
|
r.Error.Message = errorMessage
|
|
|
|
endpoint := api.endpoint + "workflows.stepFailed"
|
|
jsonData, err := json.Marshal(r)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
response := &SlackResponse{}
|
|
if err := postJSON(context.Background(), api.httpclient, endpoint, api.token, jsonData, response, api); err != nil {
|
|
return err
|
|
}
|
|
|
|
if !response.Ok {
|
|
return response.Err()
|
|
}
|
|
|
|
return nil
|
|
}
|