Compare commits

..

1 Commits

Author SHA1 Message Date
Michal Tuszowski f3f07bc921 file share: route the bot's client through config + shared auth
file_search_functions was the only bot-side service client that hardcoded the
musician's LAN address and sent no auth header. Both musician endpoints it
calls (/get_share_list, /get_share_links) run _authorize_request(), so the
whole file-share feature 401'd on any deployment that set CONJURER_API_KEY -
which the deployment guides instruct you to do - and the hardcoded IP made a
musician on another host (the Proxmox/docker split) unreachable regardless.

Use FILE_SERVICE_ADDRESS + service_headers() like music_functions does, add
the two endpoint paths to constants alongside the existing ones, and set an
explicit timeout so a wedged musician can't hang the calling cog.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 22:02:27 +02:00
2 changed files with 38 additions and 4 deletions
+2
View File
@@ -82,6 +82,8 @@ MUZYKA_MOJEGO_LUDU_PLAJLISTA = 30
GET_MP3 = "/mp3"
SEND_MP3 = "/update_mp3"
GET_PLAYLIST = "/get_music"
GET_SHARE_LIST = "/get_share_list"
GET_SHARE_LINKS = "/get_share_links"
ADD_TO_PRIO_PLAYLIST = "/add_to_priority"
CREATE_PRIO_PLAYLIST = "/create_priority_playlist"
+36 -4
View File
@@ -1,7 +1,29 @@
"""Bot-side client for the musician's share-list / share-link endpoints.
This module used to hardcode the musician's LAN address and send no auth
header, which broke the file-share feature in two ways:
* the musician's ``/get_share_list`` and ``/get_share_links`` both call
``_authorize_request()``, so every request 401'd on any deployment that set
``CONJURER_API_KEY`` — which the deployment guides tell you to do; and
* the hardcoded IP ignored ``CONJURER_FILE_SERVICE``, so a musician running on
another host (the Proxmox/docker split) was unreachable.
It now follows the same convention as the other service clients
(``music_functions``): address from ``constants``, shared auth headers, and an
explicit timeout so a wedged musician can't hang the bot.
"""
import requests
# Base URL for Flask service
BASE_URL = 'http://192.168.1.15:5000'
from constants import (
FILE_SERVICE_ADDRESS,
GET_SHARE_LINKS,
GET_SHARE_LIST,
service_headers,
)
SERVICE_HEADERS = service_headers()
REQUEST_TIMEOUT = 60
def find_matches(entries, keywords):
@@ -12,7 +34,12 @@ def find_matches(entries, keywords):
Returns: list of file paths
"""
payload = {'entries': entries, 'keywords': keywords}
response = requests.post(f"{BASE_URL}/get_share_list", json=payload)
response = requests.post(
f"{FILE_SERVICE_ADDRESS}{GET_SHARE_LIST}",
json=payload,
headers=SERVICE_HEADERS,
timeout=REQUEST_TIMEOUT,
)
response.raise_for_status()
data = response.json()
return data.get('files', [])
@@ -25,7 +52,12 @@ def publish(file_paths):
Returns: list of published URLs
"""
payload = {'file_paths': file_paths}
response = requests.post(f"{BASE_URL}/get_share_links", json=payload)
response = requests.post(
f"{FILE_SERVICE_ADDRESS}{GET_SHARE_LINKS}",
json=payload,
headers=SERVICE_HEADERS,
timeout=REQUEST_TIMEOUT,
)
response.raise_for_status()
data = response.json()
return data.get('links', [])