mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
feat(filters): external webhook retry on status codes (#1206)
* feat: external filter retry status codes * chore: go mod tidy * fix(database): migrations --------- Co-authored-by: ze0s <ze0s@riseup.net>
This commit is contained in:
parent
40a1a4c014
commit
2080136669
11 changed files with 330 additions and 165 deletions
|
@ -218,6 +218,10 @@ const externalFilterSchema = z.object({
|
|||
webhook_method: z.string().optional(),
|
||||
webhook_data: z.string().optional(),
|
||||
webhook_expect_status: z.number().optional(),
|
||||
webhook_retry_status: z.string().optional(),
|
||||
webhook_retry_attempts: z.number().optional(),
|
||||
webhook_retry_delay_seconds: z.number().optional(),
|
||||
webhook_retry_max_jitter_seconds: z.number().optional(),
|
||||
});
|
||||
|
||||
const indexerSchema = z.object({
|
||||
|
|
|
@ -312,12 +312,31 @@ const TypeForm = ({ external, idx }: TypeFormProps) => {
|
|||
rows={5}
|
||||
placeholder={"Request data: { \"key\": \"value\" }"}
|
||||
/>
|
||||
|
||||
<NumberField
|
||||
name={`external.${idx}.webhook_expect_status`}
|
||||
label="Expected http status"
|
||||
label="Expected http status code"
|
||||
placeholder="200"
|
||||
/>
|
||||
<TextField
|
||||
name={`external.${idx}.webhook_retry_status`}
|
||||
label="Retry http status code(s)"
|
||||
placeholder="Retry on status eg. 202, 204"
|
||||
/>
|
||||
<NumberField
|
||||
name={`external.${idx}.webhook_retry_attempts`}
|
||||
label="Maximum retry attempts"
|
||||
placeholder="10"
|
||||
/>
|
||||
<NumberField
|
||||
name={`external.${idx}.webhook_retry_delay_seconds`}
|
||||
label="Retry delay in seconds"
|
||||
placeholder="1"
|
||||
/>
|
||||
<NumberField
|
||||
name={`external.${idx}.webhook_retry_max_jitter_seconds`}
|
||||
label="Max jitter in seconds"
|
||||
placeholder="1"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
|
|
|
@ -292,6 +292,10 @@ const FilterItemDropdown = ({ filter, onToggle }: FilterItemDropdownProps) => {
|
|||
external_webhook_host: any;
|
||||
external_webhook_data: any;
|
||||
external_webhook_expect_status: any;
|
||||
external_webhook_retry_status: any;
|
||||
external_webhook_retry_attempts: any;
|
||||
external_webhook_retry_delay_seconds: any;
|
||||
external_webhook_retry_max_jitter_seconds: any;
|
||||
};
|
||||
|
||||
const completeFilter = await APIClient.filters.getByID(filter.id) as Partial<CompleteFilterType>;
|
||||
|
@ -313,6 +317,10 @@ const FilterItemDropdown = ({ filter, onToggle }: FilterItemDropdownProps) => {
|
|||
delete completeFilter.external_webhook_host;
|
||||
delete completeFilter.external_webhook_data;
|
||||
delete completeFilter.external_webhook_expect_status;
|
||||
delete completeFilter.external_webhook_retry_status;
|
||||
delete completeFilter.external_webhook_retry_attempts;
|
||||
delete completeFilter.external_webhook_retry_delay_seconds;
|
||||
delete completeFilter.external_webhook_retry_max_jitter_seconds;
|
||||
|
||||
// Remove properties with default values from the exported filter to minimize the size of the JSON string
|
||||
["enabled", "priority", "smart_episode", "resolutions", "sources", "codecs", "containers", "tags_match_logic", "except_tags_match_logic"].forEach((key) => {
|
||||
|
|
4
web/src/types/Filter.d.ts
vendored
4
web/src/types/Filter.d.ts
vendored
|
@ -130,5 +130,9 @@ interface ExternalFilter {
|
|||
webhook_data?: string,
|
||||
webhook_headers?: string;
|
||||
webhook_expect_status?: number;
|
||||
webhook_retry_status?: string,
|
||||
webhook_retry_attempts?: number;
|
||||
webhook_retry_delay_seconds?: number;
|
||||
webhook_retry_max_jitter_seconds?: number;
|
||||
filter_id?: number;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue