1
0
Fork 0
satnogs-network/network/base/db_api.py

62 lines
2.1 KiB
Python

import requests
from django.conf import settings
db_api_url = settings.DB_API_ENDPOINT
class DBConnectionError(Exception):
pass
def transmitters_api_request(url):
if len(db_api_url) == 0:
raise DBConnectionError('Error in DB API connection. Blank DB API URL!')
try:
request = requests.get(url)
except requests.exceptions.RequestException:
raise DBConnectionError('Error in DB API connection. Please try again!')
return request.json()
def get_transmitter_by_uuid(uuid):
transmitters_url = "{}transmitters/?uuid={}".format(db_api_url, uuid)
return transmitters_api_request(transmitters_url)
def get_transmitters_by_norad_id(norad_id):
transmitters_url = "{}transmitters/?satellite__norad_cat_id={}".format(db_api_url, norad_id)
return transmitters_api_request(transmitters_url)
def get_transmitters_by_status(status):
transmitters_url = "{}transmitters/?status={}".format(db_api_url, status)
return transmitters_api_request(transmitters_url)
def get_transmitters():
transmitters_url = "{}transmitters".format(db_api_url)
return transmitters_api_request(transmitters_url)
def get_transmitters_by_uuid_list(uuid_list):
if not uuid_list:
raise ValueError('Expected a non empty list of UUIDs.')
if len(uuid_list) == 1:
transmitter = get_transmitter_by_uuid(uuid_list[0])
if not transmitter:
raise ValueError('Invalid Transmitter UUID: {0}'.format(str(uuid_list[0])))
return {transmitter[0]['uuid']: transmitter[0]}
else:
transmitters_list = get_transmitters()
transmitters = {t['uuid']: t for t in transmitters_list if t['uuid'] in uuid_list}
invalid_transmitters = [str(uuid) for uuid
in set(uuid_list).difference(set(transmitters.keys()))]
if not invalid_transmitters:
return transmitters
else:
if len(invalid_transmitters) == 1:
raise ValueError('Invalid Transmitter UUID: {0}'.format(invalid_transmitters[0]))
else:
raise ValueError('Invalid Transmitter UUIDs: {0}'.format(invalid_transmitters))