61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package ifttt
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/nicholas-fedor/shoutrrr/pkg/types"
|
|
)
|
|
|
|
// ValueFieldOne represents the Value1 field in the IFTTT payload.
|
|
const (
|
|
ValueFieldOne = 1 // Represents Value1 field
|
|
ValueFieldTwo = 2 // Represents Value2 field
|
|
ValueFieldThree = 3 // Represents Value3 field
|
|
)
|
|
|
|
// jsonPayload represents the notification payload sent to the IFTTT webhook API.
|
|
type jsonPayload struct {
|
|
Value1 string `json:"value1"`
|
|
Value2 string `json:"value2"`
|
|
Value3 string `json:"value3"`
|
|
}
|
|
|
|
// createJSONToSend generates a JSON payload for the IFTTT webhook API.
|
|
func createJSONToSend(config *Config, message string, params *types.Params) ([]byte, error) {
|
|
payload := jsonPayload{
|
|
Value1: config.Value1,
|
|
Value2: config.Value2,
|
|
Value3: config.Value3,
|
|
}
|
|
|
|
if params != nil {
|
|
if value, found := (*params)["value1"]; found {
|
|
payload.Value1 = value
|
|
}
|
|
|
|
if value, found := (*params)["value2"]; found {
|
|
payload.Value2 = value
|
|
}
|
|
|
|
if value, found := (*params)["value3"]; found {
|
|
payload.Value3 = value
|
|
}
|
|
}
|
|
|
|
switch config.UseMessageAsValue {
|
|
case ValueFieldOne:
|
|
payload.Value1 = message
|
|
case ValueFieldTwo:
|
|
payload.Value2 = message
|
|
case ValueFieldThree:
|
|
payload.Value3 = message
|
|
}
|
|
|
|
jsonBytes, err := json.Marshal(payload)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("marshaling IFTTT payload to JSON: %w", err)
|
|
}
|
|
|
|
return jsonBytes, nil
|
|
}
|