49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
from requests import get
|
|
from flask import render_template_string
|
|
|
|
|
|
class Platform:
|
|
def __init__(self, data_source, data_source_args):
|
|
self.data_source = data_source
|
|
self.name = data_source["name"]
|
|
|
|
# parse the user's options from the config entries
|
|
for source_arg in data_source_args:
|
|
if source_arg.get("key") == "resource":
|
|
self.resource = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "method":
|
|
self.method = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "payload":
|
|
self.payload = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "authentication":
|
|
self.authentication = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "username":
|
|
self.username = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "password":
|
|
self.password = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "value_template":
|
|
self.value_template = source_arg.get("value")
|
|
|
|
if source_arg.get("key") == "data_template":
|
|
self.data_template = source_arg.get("value")
|
|
|
|
# set defaults for omitted options
|
|
if not hasattr(self, "method"):
|
|
self.method = "GET"
|
|
|
|
def process(self):
|
|
if self.method.upper() == "GET":
|
|
try:
|
|
value = get(self.resource).json()
|
|
except Exception as e:
|
|
value = f"{e}"
|
|
value_template = render_template_string(self.value_template, value=value)
|
|
data_template = render_template_string(self.data_template, value=value_template)
|
|
return data_template
|