Öhm... bin jetzt endlich dazugekommen, auch auf dem pi nachzusehen. Bei mir gibts keine url_call.py
Woher stammt die denn?
//Edith: habs gefunden, shame on me...\\
[hr]
Hi,
hab jetzt die url_call.py mal so geändert, daß sie eigentlich mit und ohne user/passwort funktionieren sollte - habe hier keine möglichkeit, das im Moment auszutesten
Meiner Meinung nach Vorteil dieser Lösung: es braucht nicht extra eine eigene routine für fhem und das sollte eigentlich für jeglichen URL-Aufruf ob mit oder ohne Passwort reichen.
Ich gehe davon aus, daß ein @ in einer url nur in Kombination mit User und Passwort vorkommen kann - ich denke, das sollte eigentlich so sein, oder?
Was meint Ihr dazu?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
logger = logging.getLogger(__name__)
logger.debug("%s loaded", __name__)
from doorpi.action.base import SingleAction
import doorpi
import urllib2
def fire_command(url):
try:
if if "@" in url:
upass = url[url.find('://')+3:url.find('@')]
username = upass[:upass.find(':')]
password = upass[upass.find(':')+1:]
url = url[:url.find('://') + 3] + url[url.find('@') + 1:]
url = url.replace(" ", "%20")
p = urllib2.HTTPPasswordMgrWithDefaultRealm()
p.add_password(None, url, username, password)
handler = urllib2.HTTPBasicAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
return urllib2.urlopen(
url=url,
data=None,
timeout=1
)
except urllib2.HTTPError as exp:
logger.error('HTTPError: %s - %s' % (exp.code, exp.reason))
except urllib2.URLError as exp:
logger.error('URLError: %s' % exp.reason)
return False
def get(parameters):
parsed_parameters = doorpi.DoorPi().parse_string(parameters)
return UrlCallAction(fire_command, url=parsed_parameters)
class UrlCallAction(SingleAction):
pass
Alles anzeigen