add some basic framework for the featurereport
This commit is contained in:
@ -1,11 +1,13 @@
|
||||
import os
|
||||
import mimetypes
|
||||
import json
|
||||
from datetime import datetime
|
||||
from owrx.websocket import WebSocketConnection
|
||||
from owrx.config import PropertyManager
|
||||
from owrx.source import ClientRegistry
|
||||
from owrx.connection import WebSocketMessageHandler
|
||||
from owrx.version import openwebrx_version
|
||||
from owrx.feature import FeatureDetector
|
||||
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -26,12 +28,7 @@ class Controller(object):
|
||||
if (type(content) == str):
|
||||
content = content.encode()
|
||||
self.handler.wfile.write(content)
|
||||
def render_template(self, template, **variables):
|
||||
f = open('htdocs/' + template)
|
||||
data = f.read()
|
||||
f.close()
|
||||
|
||||
self.send_response(data)
|
||||
|
||||
class StatusController(Controller):
|
||||
def handle_request(self):
|
||||
@ -77,12 +74,21 @@ class AssetsController(Controller):
|
||||
|
||||
class IndexController(AssetsController):
|
||||
def handle_request(self):
|
||||
self.serve_file("index.html", content_type = "text/html")
|
||||
self.serve_file("index.html")
|
||||
|
||||
class MapController(AssetsController):
|
||||
def handle_request(self):
|
||||
#TODO check if we have a google maps api key first?
|
||||
self.serve_file("map.html", content_type = "text/html")
|
||||
self.serve_file("map.html")
|
||||
|
||||
class FeatureController(AssetsController):
|
||||
def handle_request(self):
|
||||
self.serve_file("features.html")
|
||||
|
||||
class ApiController(Controller):
|
||||
def handle_request(self):
|
||||
data = json.dumps(FeatureDetector().feature_report())
|
||||
self.send_response(data, content_type = "application/json")
|
||||
|
||||
class WebSocketController(Controller):
|
||||
def handle_request(self):
|
||||
|
@ -26,6 +26,11 @@ class FeatureDetector(object):
|
||||
def feature_availability(self):
|
||||
return {name: self.is_available(name) for name in FeatureDetector.features}
|
||||
|
||||
def feature_report(self):
|
||||
def feature_details(name):
|
||||
return self.get_requirements(name)
|
||||
return {name: feature_details(name) for name in FeatureDetector.features}
|
||||
|
||||
def is_available(self, feature):
|
||||
return self.has_requirements(self.get_requirements(feature))
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
from owrx.controllers import StatusController, IndexController, AssetsController, WebSocketController, MapController
|
||||
from owrx.controllers import StatusController, IndexController, AssetsController, WebSocketController, MapController, FeatureController, ApiController
|
||||
from http.server import BaseHTTPRequestHandler
|
||||
import re
|
||||
|
||||
@ -21,7 +21,9 @@ class Router(object):
|
||||
{"regex": "(/favicon.ico)", "controller": AssetsController},
|
||||
# backwards compatibility for the sdr.hu portal
|
||||
{"regex": "/(gfx/openwebrx-avatar.png)", "controller": AssetsController},
|
||||
{"route": "/map", "controller": MapController}
|
||||
{"route": "/map", "controller": MapController},
|
||||
{"route": "/features", "controller": FeatureController},
|
||||
{"route": "/api/features", "controller": ApiController}
|
||||
]
|
||||
def find_controller(self, path):
|
||||
for m in Router.mappings:
|
||||
|
Reference in New Issue
Block a user