@@ -409,25 +409,61 @@ def setup_webhook_for_instance(arr_url: str, arr_api_key: str, bot_url: str, arr
409409 result ["message" ] = f"Connection successful. Webhook URL: { webhook_url } "
410410 return result
411411
412- # Check if webhook already exists
413- existing = get_existing_webhook (
412+ # Check if webhook already exists with the same URL
413+ existing_by_url = get_existing_webhook (
414414 arr_url , arr_api_key , webhook_url , arr_type )
415- if existing :
416- result ["success" ] = True
417- result ["message" ] = f"Connection successful. Webhook already exists."
418- result ["webhook_created" ] = False
415+ if existing_by_url :
416+ # Update existing webhook to ensure it's configured correctly
417+ update_result = update_webhook (
418+ arr_url , arr_api_key , existing_by_url .get ('id' ), webhook_url , arr_type , name
419+ )
420+ if update_result ["success" ]:
421+ result ["success" ] = True
422+ result ["message" ] = "Connection successful. Webhook already exists and was updated."
423+ result ["webhook_created" ] = False
424+ result ["webhook_updated" ] = True
425+ else :
426+ result ["success" ] = True
427+ result ["message" ] = f"Connection successful. Webhook exists but update failed: { update_result ['message' ]} "
428+ result ["webhook_created" ] = False
429+ result ["webhook_updated" ] = False
419430 return result
420431
421- # Create webhook
422- webhook_result = create_webhook (
423- arr_url , arr_api_key , webhook_url , arr_type , name )
424- result ["webhook_created" ] = webhook_result ["success" ]
425-
426- if webhook_result ["success" ]:
427- result ["success" ] = True
428- result ["message" ] = f"Connection successful and webhook created."
432+ # Check if a webhook with the same name exists (but different URL)
433+ webhook_name = name or "Plexbot"
434+ existing_by_name = get_webhook_by_name (arr_url , arr_api_key , webhook_name , arr_type )
435+ if existing_by_name :
436+ # Update the existing webhook with the same name to use our URL
437+ update_result = update_webhook (
438+ arr_url , arr_api_key , existing_by_name .get ('id' ), webhook_url , arr_type , name
439+ )
440+ if update_result ["success" ]:
441+ result ["success" ] = True
442+ result ["message" ] = "Connection successful. Updated existing webhook with new URL."
443+ result ["webhook_created" ] = False
444+ result ["webhook_updated" ] = True
445+ else :
446+ # If update fails, try creating with a unique name
447+ unique_name = f"{ webhook_name } ({ arr_type .capitalize ()} )"
448+ webhook_result = create_webhook (arr_url , arr_api_key , webhook_url , arr_type , unique_name )
449+ result ["webhook_created" ] = webhook_result ["success" ]
450+ if webhook_result ["success" ]:
451+ result ["success" ] = True
452+ result ["message" ] = f"Connection successful and webhook created as '{ unique_name } '."
453+ else :
454+ result ["success" ] = False
455+ result ["message" ] = f"Connection successful but webhook creation failed: { webhook_result ['message' ]} "
429456 else :
430- result ["success" ] = False
431- result ["message" ] = f"Connection successful but webhook creation failed: { webhook_result ['message' ]} "
457+ # Create new webhook
458+ webhook_result = create_webhook (
459+ arr_url , arr_api_key , webhook_url , arr_type , name )
460+ result ["webhook_created" ] = webhook_result ["success" ]
461+
462+ if webhook_result ["success" ]:
463+ result ["success" ] = True
464+ result ["message" ] = "Connection successful and webhook created."
465+ else :
466+ result ["success" ] = False
467+ result ["message" ] = f"Connection successful but webhook creation failed: { webhook_result ['message' ]} "
432468
433469 return result
0 commit comments