Skip to content

Commit 9bbb2e1

Browse files
committed
Fix static_file not returning a 404 for non existent files.
Fix about:blank views not having app reference. Fix incorrect header value. Reduce log level of most messages.
1 parent 1a94ead commit 9bbb2e1

1 file changed

Lines changed: 21 additions & 19 deletions

File tree

wkapp.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import sys
1313
import threading
1414
from urllib.parse import urlparse, quote as urlencode, unquote as urldecode
15-
15+
from pathlib import Path
1616
import requests
1717

1818
import bottle
@@ -24,6 +24,7 @@
2424
route,
2525
static_file,
2626
mako_template as template,
27+
abort
2728
)
2829

2930
from mako.lookup import TemplateLookup
@@ -36,7 +37,7 @@
3637

3738
try:
3839
from .wkwebview import *
39-
except:
40+
except ImportError:
4041
from wkwebview import *
4142

4243

@@ -46,21 +47,21 @@ def init(self):
4647
self.scheme_handler = None
4748

4849
def scheme_wkapp(self, task):
49-
log.warning(f'WKAppWebView - URL Scheme - {task.url}')
50+
log.info(f'WKAppWebView - URL Scheme - {task.url}')
5051
if not self.scheme_handler is None and hasattr(self.scheme_handler,
5152
'webview_scheme_wkapp'):
5253
self.scheme_handler.webview_scheme_wkapp(self, task)
5354
else:
5455
task.failed(f'WKAppWebView - URL Scheme Unhandled')
5556

5657
def on_javascript_console_message(self, level, content):
57-
log.warning(f'WKAppWebView - JS - {level.upper()}: {content}')
58+
log.info(f'WKAppWebView - JS - {level.upper()}: {content}')
5859

5960
def webview_did_start_load(self, url):
60-
log.warning(f'WKAppWebView - Start loading {url}')
61+
log.info(f'WKAppWebView - Start loading {url}')
6162

6263
def webview_did_finish_load(self, url):
63-
log.warning(f'WKAppWebView - Finish loading {url}')
64+
log.info(f'WKAppWebView - Finish loading {url}')
6465

6566

6667
class WKAppView(ui.View):
@@ -384,9 +385,9 @@ def __init__(self, app, app_path, app_views_path, module_path,
384385
self.load_view = None
385386
self.next_view = None
386387
self.views = {}
387-
self.view = WKView()
388+
self.view = WKView(self.app)
388389
self.views[self.view.url] = self.view
389-
self.about_blank_view = WKView('about:blank')
390+
self.about_blank_view = WKView(self.app, 'about:blank')
390391
self.views[self.about_blank_view.url] = self.about_blank_view
391392

392393
def template(self, path, **kwargs):
@@ -437,15 +438,16 @@ def get_view(self, url=None, path=None, create=False):
437438
if url == 'about:blank':
438439
return self.about_blank_view
439440
if create and not path in self.views:
441+
view_template = None
440442
try:
441443
view_template = self.lookup.get_template(path)
442444
if view_template is None:
443445
raise Exception("Mako template not found.")
444-
log.warning(
446+
log.info(
445447
f'WKViewState - Template found for {path} {view_template}')
446448
except Exception as e:
447449
log.warning(
448-
f'WKViewState - No template found for path {path} {view_template}, {e}'
450+
f'WKViewState - No template found for path {path}, {e}'
449451
)
450452
if not view_template is None and hasattr(view_template.module,
451453
'view_class'):
@@ -464,18 +466,18 @@ class view_class_mixin(view_class, WKView):
464466
self.views[path] = view
465467
return view
466468
if not path is None:
467-
view = self.views[path]
469+
view = self.views.get(path)
468470
return view
469471

470472
def prepare_load_view(self, url, scheme, nav_type):
471-
log.warning(f'WKViewState - Preparing load {url}')
473+
log.info(f'WKViewState - Preparing load {url}')
472474
view = self.get_view(url=url, create=True)
473475
self.load_view = view
474476
view.event('on_prepare')
475477
return True
476478

477479
def start_load_view(self, url):
478-
log.warning(f'WKViewState - Start load {url}')
480+
log.info(f'WKViewState - Start load {url}')
479481
url, path = self.get_url_path(url=url)
480482
if self.load_url != url:
481483
raise Exception(
@@ -486,7 +488,7 @@ def start_load_view(self, url):
486488
view.event('on_loading')
487489

488490
def finish_load_view(self, url):
489-
log.warning(f'WKViewState - Finish load {url}')
491+
log.info(f'WKViewState - Finish load {url}')
490492
url, path = self.get_url_path(url)
491493
if self.next_url != url:
492494
raise Exception(
@@ -523,9 +525,7 @@ def response_headers(self):
523525
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
524526
response.add_header('Permissions-Policy', 'cross-origin-isolated=self')
525527
response.add_header('Access-Control-Allow-Origin', '*')
526-
response.add_header(
527-
'Access-Control-Allow-Headers',
528-
'"Origin, X-Requested-With, Content-Type, Accept"')
528+
response.add_header('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type, Accept')
529529
response.add_header('Access-Control-Allow-Methods', '*')
530530
response.add_header('Cross-Origin-Opener-Policy', 'same-origin')
531531
response.add_header('Cross-Origin-Embedder-Policy', 'require-corp')
@@ -640,7 +640,7 @@ def present(self,
640640
self.app_view.present(mode, **kwargs)
641641

642642
def run(self, **kwargs):
643-
log.warning(f'WKApp - Run')
643+
log.info(f'WKApp - Run')
644644
self.start_server()
645645
self.present(**kwargs)
646646

@@ -658,14 +658,16 @@ def static_file(self, filepath, root='/'):
658658
if root != self.module_static_path and not os.path.exists(
659659
os.path.join(root, filepath)):
660660
root = self.module_static_path
661+
if not Path(root).joinpath(filepath).exists():
662+
abort(404, "Not found.")
661663
return static_file(filepath, root=root)
662664

663665
def template(self, path, **kwargs):
664666
return self.views.template(path, **kwargs)
665667

666668
def get_view(self, url=None, path=None, create=False):
667669
view = self.views.get_view(url=url, path=path, create=create)
668-
log.warning(f'WKApp.get_view("{url}", "{path}", {create}) -> {view}')
670+
log.info(f'WKApp.get_view("{url}", "{path}", {create}) -> {view}')
669671
if view is None:
670672
return view
671673
values = {}

0 commit comments

Comments
 (0)