added connection_handler for bad requests
This commit is contained in:
parent
8907e9c8ed
commit
7277ee14f9
6 changed files with 111 additions and 20 deletions
|
@ -4,7 +4,9 @@ import tarfile
|
||||||
import hashlib
|
import hashlib
|
||||||
import geoip2.database
|
import geoip2.database
|
||||||
from typing import NamedTuple
|
from typing import NamedTuple
|
||||||
|
from json.decoder import JSONDecodeError
|
||||||
from os.path import abspath, join
|
from os.path import abspath, join
|
||||||
|
from requests.exceptions import InvalidSchema, SSLError
|
||||||
from urllib.request import urlretrieve
|
from urllib.request import urlretrieve
|
||||||
|
|
||||||
|
|
||||||
|
@ -371,3 +373,31 @@ def hashit(string):
|
||||||
hashed = hashlib.md5(encoded).hexdigest()
|
hashed = hashlib.md5(encoded).hexdigest()
|
||||||
|
|
||||||
return hashed
|
return hashed
|
||||||
|
|
||||||
|
|
||||||
|
def connection_handler(session, request, verify):
|
||||||
|
s = session
|
||||||
|
r = request
|
||||||
|
v = verify
|
||||||
|
return_json = False
|
||||||
|
|
||||||
|
try:
|
||||||
|
get = s.send(r, verify=v)
|
||||||
|
if get.status_code == 401:
|
||||||
|
print("Your api key is incorrect for {}".format(r.url))
|
||||||
|
elif get.status_code == 404:
|
||||||
|
print("This url doesnt even resolve: {}".format(r.url))
|
||||||
|
elif get.status_code == 200:
|
||||||
|
try:
|
||||||
|
return_json = get.json()
|
||||||
|
except JSONDecodeError:
|
||||||
|
print("No JSON response... BORKED! Let us know in discord")
|
||||||
|
|
||||||
|
except InvalidSchema:
|
||||||
|
print("You added http(s):// in the config file. Don't do that.")
|
||||||
|
|
||||||
|
except SSLError as e:
|
||||||
|
print("Either your host is unreachable or you have an ssl issue.")
|
||||||
|
print("The issue was: {}".format(e))
|
||||||
|
|
||||||
|
return return_json
|
||||||
|
|
|
@ -60,6 +60,8 @@ class INIParser(object):
|
||||||
apikey = self.config.get(sonarr_section, 'apikey')
|
apikey = self.config.get(sonarr_section, 'apikey')
|
||||||
scheme = 'https://' if self.config.getboolean(sonarr_section, 'ssl') else 'http://'
|
scheme = 'https://' if self.config.getboolean(sonarr_section, 'ssl') else 'http://'
|
||||||
verify_ssl = self.config.getboolean(sonarr_section, 'verify_ssl')
|
verify_ssl = self.config.getboolean(sonarr_section, 'verify_ssl')
|
||||||
|
if scheme != 'https://':
|
||||||
|
verify_ssl = False
|
||||||
queue = self.config.getboolean(sonarr_section, 'queue')
|
queue = self.config.getboolean(sonarr_section, 'queue')
|
||||||
missing_days = self.config.getint(sonarr_section, 'missing_days')
|
missing_days = self.config.getint(sonarr_section, 'missing_days')
|
||||||
future_days = self.config.getint(sonarr_section, 'future_days')
|
future_days = self.config.getint(sonarr_section, 'future_days')
|
||||||
|
@ -90,6 +92,8 @@ class INIParser(object):
|
||||||
apikey = self.config.get(radarr_section, 'apikey')
|
apikey = self.config.get(radarr_section, 'apikey')
|
||||||
scheme = 'https://' if self.config.getboolean(radarr_section, 'ssl') else 'http://'
|
scheme = 'https://' if self.config.getboolean(radarr_section, 'ssl') else 'http://'
|
||||||
verify_ssl = self.config.getboolean(radarr_section, 'verify_ssl')
|
verify_ssl = self.config.getboolean(radarr_section, 'verify_ssl')
|
||||||
|
if scheme != 'https://':
|
||||||
|
verify_ssl = False
|
||||||
queue = self.config.getboolean(radarr_section, 'queue')
|
queue = self.config.getboolean(radarr_section, 'queue')
|
||||||
queue_run_seconds = self.config.getint(radarr_section, 'queue_run_seconds')
|
queue_run_seconds = self.config.getint(radarr_section, 'queue_run_seconds')
|
||||||
get_missing = self.config.getboolean(radarr_section, 'get_missing')
|
get_missing = self.config.getboolean(radarr_section, 'get_missing')
|
||||||
|
@ -118,6 +122,8 @@ class INIParser(object):
|
||||||
apikey = self.config.get(tautulli_section, 'apikey')
|
apikey = self.config.get(tautulli_section, 'apikey')
|
||||||
scheme = 'https://' if self.config.getboolean(tautulli_section, 'ssl') else 'http://'
|
scheme = 'https://' if self.config.getboolean(tautulli_section, 'ssl') else 'http://'
|
||||||
verify_ssl = self.config.getboolean(tautulli_section, 'verify_ssl')
|
verify_ssl = self.config.getboolean(tautulli_section, 'verify_ssl')
|
||||||
|
if scheme != 'https://':
|
||||||
|
verify_ssl = False
|
||||||
get_activity = self.config.getboolean(tautulli_section, 'get_activity')
|
get_activity = self.config.getboolean(tautulli_section, 'get_activity')
|
||||||
get_activity_run_seconds = self.config.getint(tautulli_section, 'get_activity_run_seconds')
|
get_activity_run_seconds = self.config.getint(tautulli_section, 'get_activity_run_seconds')
|
||||||
get_sessions = self.config.getboolean(tautulli_section, 'get_sessions')
|
get_sessions = self.config.getboolean(tautulli_section, 'get_sessions')
|
||||||
|
@ -144,6 +150,8 @@ class INIParser(object):
|
||||||
apikey = self.config.get(ombi_section, 'apikey')
|
apikey = self.config.get(ombi_section, 'apikey')
|
||||||
scheme = 'https://' if self.config.getboolean(ombi_section, 'ssl') else 'http://'
|
scheme = 'https://' if self.config.getboolean(ombi_section, 'ssl') else 'http://'
|
||||||
verify_ssl = self.config.getboolean(ombi_section, 'verify_ssl')
|
verify_ssl = self.config.getboolean(ombi_section, 'verify_ssl')
|
||||||
|
if scheme != 'https://':
|
||||||
|
verify_ssl = False
|
||||||
request_type_counts = self.config.getboolean(ombi_section, 'get_request_type_counts')
|
request_type_counts = self.config.getboolean(ombi_section, 'get_request_type_counts')
|
||||||
request_type_run_seconds = self.config.getint(ombi_section, 'request_type_run_seconds')
|
request_type_run_seconds = self.config.getint(ombi_section, 'request_type_run_seconds')
|
||||||
request_total_counts = self.config.getboolean(ombi_section, 'get_request_total_counts')
|
request_total_counts = self.config.getboolean(ombi_section, 'get_request_total_counts')
|
||||||
|
@ -161,6 +169,8 @@ class INIParser(object):
|
||||||
password = self.config.get('asa', 'password')
|
password = self.config.get('asa', 'password')
|
||||||
scheme = 'https://' if self.config.getboolean('asa', 'ssl') else 'http://'
|
scheme = 'https://' if self.config.getboolean('asa', 'ssl') else 'http://'
|
||||||
verify_ssl = self.config.getboolean('asa', 'verify_ssl')
|
verify_ssl = self.config.getboolean('asa', 'verify_ssl')
|
||||||
|
if scheme != 'https://':
|
||||||
|
verify_ssl = False
|
||||||
db_name = self.config.get('asa', 'influx_db')
|
db_name = self.config.get('asa', 'influx_db')
|
||||||
|
|
||||||
self.asa = (scheme + url, username, password, verify_ssl, db_name)
|
self.asa = (scheme + url, username, password, verify_ssl, db_name)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from requests import Session
|
from requests import Session, Request
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
from Varken.helpers import OmbiRequestCounts
|
|
||||||
from Varken.logger import logging
|
from Varken.logger import logging
|
||||||
|
from Varken.helpers import OmbiRequestCounts, connection_handler
|
||||||
|
|
||||||
|
|
||||||
class OmbiAPI(object):
|
class OmbiAPI(object):
|
||||||
|
@ -19,8 +19,14 @@ class OmbiAPI(object):
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
tv_endpoint = '/api/v1/Request/tv'
|
tv_endpoint = '/api/v1/Request/tv'
|
||||||
movie_endpoint = "/api/v1/Request/movie"
|
movie_endpoint = "/api/v1/Request/movie"
|
||||||
get_tv = self.session.get(self.server.url + tv_endpoint, verify=self.server.verify_ssl).json()
|
|
||||||
get_movie = self.session.get(self.server.url + movie_endpoint, verify=self.server.verify_ssl).json()
|
tv_req = self.session.prepare_request(Request('GET', self.server.url + tv_endpoint))
|
||||||
|
movie_req = self.session.prepare_request(Request('GET', self.server.url + movie_endpoint))
|
||||||
|
get_tv = connection_handler(self.session, tv_req, self.server.verify_ssl)
|
||||||
|
get_movie = connection_handler(self.session, movie_req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not all([get_tv, get_movie]):
|
||||||
|
return
|
||||||
|
|
||||||
movie_requests = len(get_movie)
|
movie_requests = len(get_movie)
|
||||||
tv_requests = len(get_tv)
|
tv_requests = len(get_tv)
|
||||||
|
@ -46,7 +52,13 @@ class OmbiAPI(object):
|
||||||
def get_request_counts(self):
|
def get_request_counts(self):
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
endpoint = '/api/v1/Request/count'
|
endpoint = '/api/v1/Request/count'
|
||||||
get = self.session.get(self.server.url + endpoint, verify=self.server.verify_ssl).json()
|
|
||||||
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint))
|
||||||
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not get:
|
||||||
|
return
|
||||||
|
|
||||||
requests = OmbiRequestCounts(**get)
|
requests = OmbiRequestCounts(**get)
|
||||||
influx_payload = [
|
influx_payload = [
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from requests import Session
|
from requests import Session, Request
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
from Varken.logger import logging
|
from Varken.logger import logging
|
||||||
from Varken.helpers import Movie, Queue, hashit
|
from Varken.helpers import Movie, Queue, hashit, connection_handler
|
||||||
|
|
||||||
|
|
||||||
class RadarrAPI(object):
|
class RadarrAPI(object):
|
||||||
|
@ -21,7 +21,12 @@ class RadarrAPI(object):
|
||||||
influx_payload = []
|
influx_payload = []
|
||||||
missing = []
|
missing = []
|
||||||
|
|
||||||
get = self.session.get(self.server.url + endpoint, verify=self.server.verify_ssl).json()
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint))
|
||||||
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not get:
|
||||||
|
return
|
||||||
|
|
||||||
movies = [Movie(**movie) for movie in get]
|
movies = [Movie(**movie) for movie in get]
|
||||||
|
|
||||||
for movie in movies:
|
for movie in movies:
|
||||||
|
@ -60,7 +65,13 @@ class RadarrAPI(object):
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
influx_payload = []
|
influx_payload = []
|
||||||
queue = []
|
queue = []
|
||||||
get = self.session.get(self.server.url + endpoint, verify=self.server.verify_ssl).json()
|
|
||||||
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint))
|
||||||
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not get:
|
||||||
|
return
|
||||||
|
|
||||||
for movie in get:
|
for movie in get:
|
||||||
movie['movie'] = Movie(**movie['movie'])
|
movie['movie'] = Movie(**movie['movie'])
|
||||||
download_queue = [Queue(**movie) for movie in get]
|
download_queue = [Queue(**movie) for movie in get]
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from requests import Session
|
from requests import Session, Request
|
||||||
from datetime import datetime, timezone, date, timedelta
|
from datetime import datetime, timezone, date, timedelta
|
||||||
|
|
||||||
from Varken.logger import logging
|
from Varken.logger import logging
|
||||||
from Varken.helpers import TVShow, Queue, hashit
|
from Varken.helpers import TVShow, Queue, hashit, connection_handler
|
||||||
|
|
||||||
|
|
||||||
class SonarrAPI(object):
|
class SonarrAPI(object):
|
||||||
|
@ -26,7 +26,12 @@ class SonarrAPI(object):
|
||||||
influx_payload = []
|
influx_payload = []
|
||||||
missing = []
|
missing = []
|
||||||
|
|
||||||
get = self.session.get(self.server.url + endpoint, params=params, verify=self.server.verify_ssl).json()
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint, params=params))
|
||||||
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not get:
|
||||||
|
return
|
||||||
|
|
||||||
# Iteratively create a list of TVShow Objects from response json
|
# Iteratively create a list of TVShow Objects from response json
|
||||||
tv_shows = [TVShow(**show) for show in get]
|
tv_shows = [TVShow(**show) for show in get]
|
||||||
|
|
||||||
|
@ -69,7 +74,12 @@ class SonarrAPI(object):
|
||||||
air_days = []
|
air_days = []
|
||||||
params = {'start': self.today, 'end': future}
|
params = {'start': self.today, 'end': future}
|
||||||
|
|
||||||
get = self.session.get(self.server.url + endpoint, params=params, verify=self.server.verify_ssl).json()
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint, params=params))
|
||||||
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not get:
|
||||||
|
return
|
||||||
|
|
||||||
tv_shows = [TVShow(**show) for show in get]
|
tv_shows = [TVShow(**show) for show in get]
|
||||||
|
|
||||||
for show in tv_shows:
|
for show in tv_shows:
|
||||||
|
@ -111,7 +121,12 @@ class SonarrAPI(object):
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
queue = []
|
queue = []
|
||||||
|
|
||||||
get = self.session.get(self.server.url + endpoint, verify=self.server.verify_ssl).json()
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint))
|
||||||
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not get:
|
||||||
|
return
|
||||||
|
|
||||||
download_queue = [Queue(**show) for show in get]
|
download_queue = [Queue(**show) for show in get]
|
||||||
|
|
||||||
for show in download_queue:
|
for show in download_queue:
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from geoip2.errors import AddressNotFoundError
|
from geoip2.errors import AddressNotFoundError
|
||||||
from requests import Session
|
from requests import Session, Request
|
||||||
|
|
||||||
from Varken.helpers import TautulliStream, geo_lookup, hashit
|
|
||||||
from Varken.logger import logging
|
from Varken.logger import logging
|
||||||
|
from Varken.helpers import TautulliStream, geo_lookup, hashit, connection_handler
|
||||||
|
|
||||||
|
|
||||||
class TautulliAPI(object):
|
class TautulliAPI(object):
|
||||||
|
@ -21,8 +21,14 @@ class TautulliAPI(object):
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
params = {'cmd': 'get_activity'}
|
params = {'cmd': 'get_activity'}
|
||||||
influx_payload = []
|
influx_payload = []
|
||||||
g = self.session.get(self.server.url + self.endpoint, params=params, verify=self.server.verify_ssl)
|
|
||||||
get = g.json()['response']['data']
|
req = self.session.prepare_request(Request('GET', self.server.url + self.endpoint, params=params))
|
||||||
|
g = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not g:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
get = g['response']['data']
|
||||||
|
|
||||||
influx_payload.append(
|
influx_payload.append(
|
||||||
{
|
{
|
||||||
|
@ -51,8 +57,15 @@ class TautulliAPI(object):
|
||||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||||
params = {'cmd': 'get_activity'}
|
params = {'cmd': 'get_activity'}
|
||||||
influx_payload = []
|
influx_payload = []
|
||||||
g = self.session.get(self.server.url + self.endpoint, params=params, verify=self.server.verify_ssl)
|
|
||||||
get = g.json()['response']['data']['sessions']
|
req = self.session.prepare_request(Request('GET', self.server.url + self.endpoint, params=params))
|
||||||
|
g = connection_handler(self.session, req, self.server.verify_ssl)
|
||||||
|
|
||||||
|
if not g:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
get = g['response']['data']['sessions']
|
||||||
|
|
||||||
sessions = [TautulliStream(**session) for session in get]
|
sessions = [TautulliStream(**session) for session in get]
|
||||||
|
|
||||||
for session in sessions:
|
for session in sessions:
|
||||||
|
|
Loading…
Reference in a new issue