. */ namespace FireflyIII\Api\V1\Requests\Webhook; use FireflyIII\Rules\IsBoolean; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; /** * Class UpdateRequest */ class UpdateRequest extends FormRequest { use ChecksLogin, ConvertsDataTypes; /** * @return array */ public function getData(): array { $triggers = array_flip(config('firefly.webhooks.triggers')); $responses = array_flip(config('firefly.webhooks.responses')); $deliveries = array_flip(config('firefly.webhooks.deliveries')); return [ 'active' => $this->boolean('active'), 'trigger' => $triggers[$this->string('trigger')] ?? 0, 'response' => $responses[$this->string('response')] ?? 0, 'delivery' => $deliveries[$this->string('delivery')] ?? 0, 'url' => $this->string('url'), ]; } /** * Rules for this request. * * @return array */ public function rules(): array { $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'); return [ 'active' => [new IsBoolean], 'trigger' => sprintf('required|in:%s', $triggers), 'response' => sprintf('required|in:%s', $responses), 'delivery' => sprintf('required|in:%s', $deliveries), 'url' => ['required', 'url', 'starts_with:https://', sprintf('uniqueExistingWebhook:%d', $webhook->id)], ]; } }