Example #1
0
 private void FinishUriSchemeCallback(IntPtr request, IntPtr stream, long streamLength, Uri uri)
 {
     using (GLibString mimetype = MimeTypes.FindForUri(uri))
     {
         WebKit.UriScheme.FinishSchemeRequest(request, stream, streamLength, mimetype);
     }
 }
Example #2
0
        private static void FinishUriSchemeCallback(IntPtr url, IntPtr schemeTask, IntPtr data, long contentLength, Uri uri)
        {
            IntPtr response = Foundation.Call("NSURLResponse", "alloc");

            ObjC.Call(
                response,
                "initWithURL:MIMEType:expectedContentLength:textEncodingName:",
                url,
                NSString.Create(MimeTypes.FindForUri(uri)),
                new IntPtr(contentLength),
                IntPtr.Zero);

            ObjC.Call(schemeTask, "didReceiveResponse:", response);

            IntPtr nsData = Foundation.Call(
                "NSData",
                "dataWithBytesNoCopy:length:freeWhenDone:",
                data,
                new IntPtr(contentLength),
                IntPtr.Zero);

            ObjC.Call(schemeTask, "didReceiveData:", nsData);

            ObjC.Call(schemeTask, "didFinish");
        }
Example #3
0
        private async void Webview_WebResourceRequested(object?sender, CoreWebView2WebResourceRequestedEventArgs e)
        {
            using var deferral = e.GetDeferral();

            var uri           = new Uri(e.Request.Uri);
            var contentStream = await Application.ContentProvider.GetStreamAsync(uri);

            if (contentStream == null)
            {
                e.Response = webview.CoreWebView2.Environment.CreateWebResourceResponse(null, 404, "Not Found", string.Empty);
            }
            else
            {
                e.Response = webview.CoreWebView2.Environment.CreateWebResourceResponse(contentStream, 200, "OK", string.Empty);
                e.Response.Headers.AppendHeader("Content-Type", MimeTypes.FindForUri(uri));
            }
        }
Example #4
0
        private async void ListenerCallback(IAsyncResult result)
        {
            var listener = result.AsyncState as HttpListener;
            HttpListenerContext context = null;

            try
            {
                listener.BeginGetContext(ListenerCallback, listener);
                context = listener.EndGetContext(result);
            }
            catch { return; }

            try
            {
                if (context.Request.HttpMethod.ToUpper() == "GET")
                {
                    using (var stream = await contentProvider.GetStreamAsync(context.Request.Url))
                    {
                        if (stream != null)
                        {
                            context.Response.ContentType = MimeTypes.FindForUri(context.Request.Url);
                            using (var responseStream = context.Response.OutputStream)
                            {
                                await stream.CopyToAsync(responseStream);
                            }
                        }
                        else
                        {
                            context.Response.StatusCode = 404;
                        }
                    }
                }
                else
                {
                    context.Response.StatusCode = 400;
                }
            }
            catch { context.Response.StatusCode = 500; }
            finally { context.Response.Close(); }
        }
Example #5
0
 /// <inheritdoc/>
 public string GetMimeType(Uri uri) => MimeTypes.FindForUri(uri);