mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-04 19:53:44 +00:00
Webhooks have titles now.
This commit is contained in:
@@ -66,8 +66,6 @@ class CreateController extends Controller
|
||||
{
|
||||
$data = $request->getData();
|
||||
$webhook = $this->repository->store($data);
|
||||
|
||||
|
||||
$manager = $this->getManager();
|
||||
/** @var WebhookTransformer $transformer */
|
||||
$transformer = app(WebhookTransformer::class);
|
||||
|
@@ -68,8 +68,6 @@ class EditController extends Controller
|
||||
{
|
||||
$data = $request->getData();
|
||||
$webhook = $this->repository->update($webhook, $data);
|
||||
|
||||
|
||||
$manager = $this->getManager();
|
||||
/** @var WebhookTransformer $transformer */
|
||||
$transformer = app(WebhookTransformer::class);
|
||||
|
@@ -43,6 +43,7 @@ class CreateRequest extends FormRequest
|
||||
$deliveries = array_flip(config('firefly.webhooks.deliveries'));
|
||||
|
||||
$fields = [
|
||||
'title' => ['title', 'string'],
|
||||
'active' => ['active', 'boolean'],
|
||||
'trigger' => ['trigger', 'string'],
|
||||
'response' => ['response', 'string'],
|
||||
@@ -51,15 +52,12 @@ class CreateRequest extends FormRequest
|
||||
];
|
||||
|
||||
// this is the way.
|
||||
$return = $this->getAllData($fields);
|
||||
$return = $this->getAllData($fields);
|
||||
$return['trigger'] = $triggers[$return['trigger']] ?? 0;
|
||||
$return['response'] = $responses[$return['response']] ?? 0;
|
||||
$return['delivery'] = $deliveries[$return['delivery']] ?? 0;
|
||||
|
||||
return [
|
||||
'active' => $return['active'],
|
||||
'trigger' => $triggers[$return['trigger']] ?? 0,
|
||||
'response' => $responses[$return['response']] ?? 0,
|
||||
'delivery' => $deliveries[$return['delivery']] ?? 0,
|
||||
'url' => $return['url'],
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,6 +72,7 @@ class CreateRequest extends FormRequest
|
||||
$deliveries = implode(',', array_values(config('firefly.webhooks.deliveries')));
|
||||
|
||||
return [
|
||||
'title' => 'between:1,512',
|
||||
'active' => [new IsBoolean],
|
||||
'trigger' => sprintf('required|in:%s', $triggers),
|
||||
'response' => sprintf('required|in:%s', $responses),
|
||||
|
@@ -43,6 +43,7 @@ class UpdateRequest extends FormRequest
|
||||
$deliveries = array_flip(config('firefly.webhooks.deliveries'));
|
||||
|
||||
$fields = [
|
||||
'title' => ['title', 'string'],
|
||||
'active' => ['active', 'boolean'],
|
||||
'trigger' => ['trigger', 'string'],
|
||||
'response' => ['response', 'string'],
|
||||
@@ -51,15 +52,12 @@ class UpdateRequest extends FormRequest
|
||||
];
|
||||
|
||||
// this is the way.
|
||||
$return = $this->getAllData($fields);
|
||||
$return = $this->getAllData($fields);
|
||||
$return['trigger'] = $triggers[$return['trigger']] ?? 0;
|
||||
$return['response'] = $responses[$return['response']] ?? 0;
|
||||
$return['delivery'] = $deliveries[$return['delivery']] ?? 0;
|
||||
|
||||
return [
|
||||
'active' => $return['active'],
|
||||
'trigger' => $triggers[$return['trigger']] ?? 0,
|
||||
'response' => $responses[$return['response']] ?? 0,
|
||||
'delivery' => $deliveries[$return['delivery']] ?? 0,
|
||||
'url' => $return['url'],
|
||||
];
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,9 +70,10 @@ class UpdateRequest extends FormRequest
|
||||
$triggers = implode(',', array_values(config('firefly.webhooks.triggers')));
|
||||
$responses = implode(',', array_values(config('firefly.webhooks.responses')));
|
||||
$deliveries = implode(',', array_values(config('firefly.webhooks.deliveries')));
|
||||
$webhook = $this->route()->parameter('webhook');
|
||||
$webhook = $this->route()->parameter('webhook');
|
||||
|
||||
return [
|
||||
'title' => 'between:1,512',
|
||||
'active' => [new IsBoolean],
|
||||
'trigger' => sprintf('required|in:%s', $triggers),
|
||||
'response' => sprintf('required|in:%s', $responses),
|
||||
|
@@ -86,7 +86,7 @@ class WebhookMessageGenerator
|
||||
*/
|
||||
private function getWebhooks(): Collection
|
||||
{
|
||||
return $this->user->webhooks()->where('trigger', $this->trigger)->get(['webhooks.*']);
|
||||
return $this->user->webhooks()->where('active', 1)->where('trigger', $this->trigger)->get(['webhooks.*']);
|
||||
}
|
||||
|
||||
private function run(): void
|
||||
|
@@ -23,13 +23,15 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Handlers\Events;
|
||||
|
||||
use FireflyIII\Events\UpdatedTransactionGroup;
|
||||
use FireflyIII\Generator\Webhook\WebhookMessageGenerator;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\TransactionRules\Engine\RuleEngine;
|
||||
use FireflyIII\TransactionRules\Engine\RuleEngineInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
|
||||
/**
|
||||
@@ -112,4 +114,18 @@ class UpdatedGroupEventHandler
|
||||
$newRuleEngine->fire();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UpdatedTransactionGroup $updatedGroupEvent
|
||||
*/
|
||||
public function triggerWebhooks(UpdatedTransactionGroup $updatedGroupEvent): void
|
||||
{
|
||||
Log::debug('UpdatedGroupEventHandler:triggerWebhooks');
|
||||
$group = $updatedGroupEvent->transactionGroup;
|
||||
$user = $group->user;
|
||||
$engine = new WebhookMessageGenerator;
|
||||
$engine->setUser($user);
|
||||
$engine->setTransactionGroups(new Collection([$group]));
|
||||
$engine->setTrigger(Webhook::TRIGGER_UPDATE_TRANSACTION);
|
||||
$engine->generateMessages();
|
||||
}
|
||||
}
|
||||
|
@@ -92,7 +92,7 @@ class WebhookEventHandler
|
||||
$client = new Client;
|
||||
$logs = $message->logs ?? [];
|
||||
try {
|
||||
$res = $client->request('GET', $message->webhook->url, $options);
|
||||
$res = $client->request('POST', $message->webhook->url, $options);
|
||||
$message->sent = true;
|
||||
} catch (ClientException|Exception $e) {
|
||||
Log::error($e->getMessage());
|
||||
@@ -106,6 +106,7 @@ class WebhookEventHandler
|
||||
$message->save();
|
||||
|
||||
Log::debug(sprintf('Webhook message #%d was sent. Status code %d', $message->id, $res->getStatusCode()));
|
||||
Log::debug(sprintf('Webhook request body size: %d bytes', strlen($json)));
|
||||
Log::debug(sprintf('Response body: %s', $res->getBody()));
|
||||
}
|
||||
|
||||
|
@@ -51,6 +51,10 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookMessage whereUuid($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookMessage whereWebhookId($value)
|
||||
* @mixin \Eloquent
|
||||
* @property int $attempts
|
||||
* @property array|null $logs
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookMessage whereAttempts($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookMessage whereLogs($value)
|
||||
*/
|
||||
class WebhookMessage extends Model
|
||||
{
|
||||
|
@@ -55,7 +55,8 @@ class WebhookRepository implements WebhookRepositoryInterface
|
||||
{
|
||||
$fullData = [
|
||||
'user_id' => $this->user->id,
|
||||
'active' => $data['active'],
|
||||
'active' => $data['active'] ?? false,
|
||||
'title' => $data['title'] ?? null,
|
||||
'trigger' => $data['trigger'],
|
||||
'response' => $data['response'],
|
||||
'delivery' => $data['delivery'],
|
||||
|
@@ -53,6 +53,7 @@ class WebhookTransformer extends AbstractTransformer
|
||||
'created_at' => $webhook->created_at->toAtomString(),
|
||||
'updated_at' => $webhook->updated_at->toAtomString(),
|
||||
'active' => $webhook->active,
|
||||
'title' => $webhook->title,
|
||||
'trigger' => $this->getEnum($webhook->trigger),
|
||||
'response' => $this->getEnum($webhook->response),
|
||||
'delivery' => $this->getEnum($webhook->delivery),
|
||||
|
Reference in New Issue
Block a user