summaryrefslogtreecommitdiff
path: root/slixmpp/plugins/xep_0363/http_upload.py
diff options
context:
space:
mode:
Diffstat (limited to 'slixmpp/plugins/xep_0363/http_upload.py')
-rw-r--r--slixmpp/plugins/xep_0363/http_upload.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/slixmpp/plugins/xep_0363/http_upload.py b/slixmpp/plugins/xep_0363/http_upload.py
index bae3ee7d..c34be8ff 100644
--- a/slixmpp/plugins/xep_0363/http_upload.py
+++ b/slixmpp/plugins/xep_0363/http_upload.py
@@ -14,6 +14,8 @@ from typing import (
IO,
)
+from pathlib import Path
+
from slixmpp import JID, __version__
from slixmpp.stanza import Iq
from slixmpp.plugins import BasePlugin
@@ -99,12 +101,17 @@ class XEP_0363(BasePlugin):
:param domain: Domain to disco to find a service.
"""
+ if domain is None and self.xmpp.is_component:
+ domain = self.xmpp.server_host
+
results = await self.xmpp['xep_0030'].get_info_from_domain(
domain=domain, **iqkwargs
)
candidates = []
for info in results:
+ if not info['disco_info']:
+ continue
for identity in info['disco_info']['identities']:
if identity[0] == 'store' and identity[1] == 'file':
candidates.append(info)
@@ -113,7 +120,7 @@ class XEP_0363(BasePlugin):
if feature == Request.namespace:
return info
- def request_slot(self, jid: JID, filename: str, size: int,
+ def request_slot(self, jid: JID, filename: Path, size: int,
content_type: Optional[str] = None, *,
ifrom: Optional[JID] = None, **iqkwargs) -> Future:
"""Request an HTTP upload slot from a service.
@@ -125,12 +132,12 @@ class XEP_0363(BasePlugin):
"""
iq = self.xmpp.make_iq_get(ito=jid, ifrom=ifrom)
request = iq['http_upload_request']
- request['filename'] = filename
+ request['filename'] = str(filename)
request['size'] = str(size)
request['content-type'] = content_type or self.default_content_type
return iq.send(**iqkwargs)
- async def upload_file(self, filename: str, size: Optional[int] = None,
+ async def upload_file(self, filename: Path, size: Optional[int] = None,
content_type: Optional[str] = None, *,
input_file: Optional[IO[bytes]]=None,
domain: Optional[JID] = None,