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 geoip2.database
|
||||
from typing import NamedTuple
|
||||
from json.decoder import JSONDecodeError
|
||||
from os.path import abspath, join
|
||||
from requests.exceptions import InvalidSchema, SSLError
|
||||
from urllib.request import urlretrieve
|
||||
|
||||
|
||||
|
@ -371,3 +373,31 @@ def hashit(string):
|
|||
hashed = hashlib.md5(encoded).hexdigest()
|
||||
|
||||
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')
|
||||
scheme = 'https://' if self.config.getboolean(sonarr_section, 'ssl') else 'http://'
|
||||
verify_ssl = self.config.getboolean(sonarr_section, 'verify_ssl')
|
||||
if scheme != 'https://':
|
||||
verify_ssl = False
|
||||
queue = self.config.getboolean(sonarr_section, 'queue')
|
||||
missing_days = self.config.getint(sonarr_section, 'missing_days')
|
||||
future_days = self.config.getint(sonarr_section, 'future_days')
|
||||
|
@ -90,6 +92,8 @@ class INIParser(object):
|
|||
apikey = self.config.get(radarr_section, 'apikey')
|
||||
scheme = 'https://' if self.config.getboolean(radarr_section, 'ssl') else 'http://'
|
||||
verify_ssl = self.config.getboolean(radarr_section, 'verify_ssl')
|
||||
if scheme != 'https://':
|
||||
verify_ssl = False
|
||||
queue = self.config.getboolean(radarr_section, 'queue')
|
||||
queue_run_seconds = self.config.getint(radarr_section, 'queue_run_seconds')
|
||||
get_missing = self.config.getboolean(radarr_section, 'get_missing')
|
||||
|
@ -118,6 +122,8 @@ class INIParser(object):
|
|||
apikey = self.config.get(tautulli_section, 'apikey')
|
||||
scheme = 'https://' if self.config.getboolean(tautulli_section, 'ssl') else 'http://'
|
||||
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_run_seconds = self.config.getint(tautulli_section, 'get_activity_run_seconds')
|
||||
get_sessions = self.config.getboolean(tautulli_section, 'get_sessions')
|
||||
|
@ -144,6 +150,8 @@ class INIParser(object):
|
|||
apikey = self.config.get(ombi_section, 'apikey')
|
||||
scheme = 'https://' if self.config.getboolean(ombi_section, 'ssl') else 'http://'
|
||||
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_run_seconds = self.config.getint(ombi_section, 'request_type_run_seconds')
|
||||
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')
|
||||
scheme = 'https://' if self.config.getboolean('asa', 'ssl') else 'http://'
|
||||
verify_ssl = self.config.getboolean('asa', 'verify_ssl')
|
||||
if scheme != 'https://':
|
||||
verify_ssl = False
|
||||
db_name = self.config.get('asa', 'influx_db')
|
||||
|
||||
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 Varken.helpers import OmbiRequestCounts
|
||||
from Varken.logger import logging
|
||||
from Varken.helpers import OmbiRequestCounts, connection_handler
|
||||
|
||||
|
||||
class OmbiAPI(object):
|
||||
|
@ -19,8 +19,14 @@ class OmbiAPI(object):
|
|||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||
tv_endpoint = '/api/v1/Request/tv'
|
||||
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)
|
||||
tv_requests = len(get_tv)
|
||||
|
@ -46,7 +52,13 @@ class OmbiAPI(object):
|
|||
def get_request_counts(self):
|
||||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||
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)
|
||||
influx_payload = [
|
||||
{
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
from requests import Session
|
||||
from requests import Session, Request
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from Varken.logger import logging
|
||||
from Varken.helpers import Movie, Queue, hashit
|
||||
from Varken.helpers import Movie, Queue, hashit, connection_handler
|
||||
|
||||
|
||||
class RadarrAPI(object):
|
||||
|
@ -21,7 +21,12 @@ class RadarrAPI(object):
|
|||
influx_payload = []
|
||||
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]
|
||||
|
||||
for movie in movies:
|
||||
|
@ -60,7 +65,13 @@ class RadarrAPI(object):
|
|||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||
influx_payload = []
|
||||
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:
|
||||
movie['movie'] = Movie(**movie['movie'])
|
||||
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 Varken.logger import logging
|
||||
from Varken.helpers import TVShow, Queue, hashit
|
||||
from Varken.helpers import TVShow, Queue, hashit, connection_handler
|
||||
|
||||
|
||||
class SonarrAPI(object):
|
||||
|
@ -26,7 +26,12 @@ class SonarrAPI(object):
|
|||
influx_payload = []
|
||||
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
|
||||
tv_shows = [TVShow(**show) for show in get]
|
||||
|
||||
|
@ -69,7 +74,12 @@ class SonarrAPI(object):
|
|||
air_days = []
|
||||
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]
|
||||
|
||||
for show in tv_shows:
|
||||
|
@ -111,7 +121,12 @@ class SonarrAPI(object):
|
|||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||
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]
|
||||
|
||||
for show in download_queue:
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
from datetime import datetime, timezone
|
||||
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.helpers import TautulliStream, geo_lookup, hashit, connection_handler
|
||||
|
||||
|
||||
class TautulliAPI(object):
|
||||
|
@ -21,8 +21,14 @@ class TautulliAPI(object):
|
|||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||
params = {'cmd': 'get_activity'}
|
||||
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(
|
||||
{
|
||||
|
@ -51,8 +57,15 @@ class TautulliAPI(object):
|
|||
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
||||
params = {'cmd': 'get_activity'}
|
||||
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]
|
||||
|
||||
for session in sessions:
|
||||
|
|
Loading…
Reference in a new issue