1212import sys
1313import threading
1414from urllib .parse import urlparse , quote as urlencode , unquote as urldecode
15-
15+ from pathlib import Path
1616import requests
1717
1818import bottle
2424 route ,
2525 static_file ,
2626 mako_template as template ,
27+ abort
2728)
2829
2930from mako .lookup import TemplateLookup
3637
3738try :
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
6667class 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