Browse Source

Custom document and payload for webhooks and algolia.

pull/421/head
Sebastian 7 years ago
parent
commit
a5f4b99cb7
  1. 5
      extensions/Squidex.Extensions/Actions/Algolia/AlgoliaAction.cs
  2. 25
      extensions/Squidex.Extensions/Actions/Algolia/AlgoliaActionHandler.cs
  3. 5
      extensions/Squidex.Extensions/Actions/Webhook/WebhookAction.cs
  4. 12
      extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs
  5. 4
      src/Squidex/app/theme/_common.scss

5
extensions/Squidex.Extensions/Actions/Algolia/AlgoliaAction.cs

@ -36,5 +36,10 @@ namespace Squidex.Extensions.Actions.Algolia
[DataType(DataType.Text)]
[Formattable]
public string IndexName { get; set; }
[Display(Name = "Document", Description = "The optional custom document.")]
[DataType(DataType.MultilineText)]
[Formattable]
public string Document { get; set; }
}
}

25
extensions/Squidex.Extensions/Actions/Algolia/AlgoliaActionHandler.cs

@ -56,9 +56,28 @@ namespace Squidex.Extensions.Actions.Algolia
{
ruleDescription = $"Add entry to Algolia index: {action.IndexName}";
var json = ToJson(contentEvent);
ruleJob.Content = JObject.Parse(json);
JObject json;
try
{
string jsonString;
if (!string.IsNullOrEmpty(action.Document))
{
jsonString = Format(action.Document, @event)?.Trim();
}
else
{
jsonString = ToJson(contentEvent);
}
json = JObject.Parse(jsonString);
}
catch
{
json = new JObject(new JProperty("error", "Invalid JSON"));
}
ruleJob.Content = json;
ruleJob.Content["objectID"] = contentId;
}

5
extensions/Squidex.Extensions/Actions/Webhook/WebhookAction.cs

@ -29,5 +29,10 @@ namespace Squidex.Extensions.Actions.Webhook
[Display(Name = "Shared Secret", Description = "The shared secret that is used to calculate the signature.")]
[DataType(DataType.Text)]
public string SharedSecret { get; set; }
[Display(Name = "Payload", Description = "The optional custom request payload.")]
[DataType(DataType.MultilineText)]
[Formattable]
public string Payload { get; set; }
}
}

12
extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs

@ -31,7 +31,17 @@ namespace Squidex.Extensions.Actions.Webhook
protected override (string Description, WebhookJob Data) CreateJob(EnrichedEvent @event, WebhookAction action)
{
var requestBody = ToEnvelopeJson(@event);
string requestBody;
if (!string.IsNullOrEmpty(action.Payload))
{
requestBody = Format(action.Payload, @event);
}
else
{
requestBody = ToEnvelopeJson(@event);
}
var requestUrl = Format(action.Url, @event);
var ruleDescription = $"Send event to webhook '{requestUrl}'";

4
src/Squidex/app/theme/_common.scss

@ -114,6 +114,10 @@ body {
}
}
.dropdown-item {
cursor: pointer;
}
//
// Landing page with loading spinner.
//

Loading…
Cancel
Save