2 * Idea is to serve the files from the file system, so no need to setup apache etc...
3 * This should work for the static content like css / javascript etc.. but
4 * will cause issues with 'dynamic' xhr files (eg. the php stuff)
6 * the idea is nicked from geary.
10 public class FakeServer : Object
14 public FakeServer(Webkit.WebView wkview)
22 this.view.resource_request_starting.connect(on_resource_request_starting);
23 this.view.navigation_policy_decision_requested.connect(on_navigation_policy_decision_requested);
24 this.view.new_window_policy_decision_requested.connect(on_navigation_policy_decision_requested);
27 this.view.get_context().register_uri_scheme("xhttp", ( request) => {
28 // request is URISchemeRequest
32 private bool on_navigation_policy_decision_requested(
33 WebKit.WebFrame frame,
34 WebKit.NetworkRequest request,
35 WebKit.WebNavigationAction navigation_action,
36 WebKit.WebPolicyDecision policy_decision
38 policy_decision.ignore();
40 // not sure if we should allow navigations...
44 private void on_resource_request_starting(
45 WebKit.WebFrame web_frame,
46 WebKit.WebResource web_resource,
47 WebKit.NetworkRequest request,
48 WebKit.NetworkResponse? response) {
49 if (response != null) {
50 // A request that was previously approved resulted in a redirect.
54 string? uri = request.get_uri();
58 if (Regex.match_simple ("\.php", uri)) {
62 request.set_uri("x"+ uri);
65 public void serve(Webkit.URISchemeRequest request)
67 // request is URISchemeRequest
71 var file = File.new_for_path ("/home/alan/gitlive/" + request.path);
72 var stream = file.read();
73 var info = file.query_info(
75 FileQueryInfoFlags.NONE
78 request.finish (InputStream stream, info.get_size(), info.get_content_type());