Exemple #1
0
        private void OnWebResourceRequested(WebView sender, WebViewWebResourceRequestedEventArgs args)
        {
            HttpResponseMessage response = null;
            var str = args.Request.RequestUri.OriginalString;

            if (str.StartsWith(FakeHttpPrefix))
            {
                var requestString = str.Replace(FakeHttpPrefix, "");
                // e.g. =@public@vhost@g@gutenberg@html@files@61533@61533-h@[email protected]
                if (true || requestString.Contains("@images"))
                {
                    var requestedFile = EpubWizard.GetInternalFileByName(EpubBook, requestString);
                    if (requestedFile != null)
                    {
                        if (requestString.EndsWith(".css"))
                        {
                            var changed = CssFixup.FixupCss(requestedFile);
                            if (changed)
                            {
                                ;
                            }
                        }
                        if (Logger.LogAllResourceLoads)
                        {
                            Logger.Log($"MainEpubReader:OnWebResourceRequested: FOUND internal asset request {requestString}");
                        }
                        response = new HttpResponseMessage(HttpStatusCode.Ok)
                        {
                            Content = new HttpBufferContent(requestedFile.Content.AsBuffer()),
                        };
                        //response.Content.Headers.ContentType
                    }
                    else
                    {
                        Logger.Log($"MainEpubReader:OnWebResourceRequested: Can't find request {requestString}");
                    }
                }
            }
            else
            {
                // Is a link in the book. Just jump to it via external browser.
                App.Error($"Weird: HTTP is requesting {str}");
                Logger.Log($"MainEpubReader:WebResourceRequested: External URL URL={str}");
            }
            if (response == null)
            {
                response = new HttpResponseMessage(HttpStatusCode.NotFound)
                {
                    ReasonPhrase = "Cant find embedded resource",
                };
            }
            args.Response = response;
        }
Exemple #2
0
        internal async void WebResourceRequested(WebView sender, WebViewWebResourceRequestedEventArgs args)
        {
            var    request   = args.Request;
            string localPath = request.RequestUri.LocalPath;

            if (localPath.StartsWith("/kcs2/index.php"))
            {
                referer = request.RequestUri;
            }
            else if (localPath.StartsWith("/kcsapi/"))
            {
                var deferral = args.GetDeferral();
                try
                {
                    string reqStr = null;
                    if (request.Content != null)
                    {
                        using var stream = new InMemoryRandomAccessStream();
                        await request.Content.WriteToStreamAsync(stream);

                        stream.Seek(0);
                        reqStr          = new StreamReader(stream.AsStream()).ReadToEnd();
                        request.Content = new HttpStringContent(reqStr, UnicodeEncoding.Utf8, "application/x-www-form-urlencoded");
                    }
                    request.Headers.Referer = referer;
                    using (request.Content)
                        using (var response = await client.SendRequestAsync(request))
                        {
                            args.Response = response;
                            deferral.Complete();

                            Received?.Invoke(response.Headers.Date ?? DateTimeOffset.Now, new HttpMessage
                                             (
                                                 localPath.Substring(8),
                                                 reqStr.AsMemory(),
                                                 (await response.Content.ReadAsStringAsync()).AsMemory(7)
                                             ));
                        }
                }
                catch
                {
                    args.Response = new HttpResponseMessage(HttpStatusCode.BadGateway);
                    deferral.Complete();
                }
            }
        }
Exemple #3
0
        private void MyWebView_WebResourceRequested(WebView sender, WebViewWebResourceRequestedEventArgs args)
        {
            if (args.Request.Method.Method == "POST")
            {
                HttpStreamContent content = (HttpStreamContent)args.Request.Content;

                var    contentBuffer = content.ReadAsBufferAsync().GetResults();
                byte[] buffer        = contentBuffer.ToArray();

                //var readStream = inputStream.AsStreamForRead();

                //MemoryStream ms = new MemoryStream();



                //byte[] b = null;
                //using (MemoryStream mss = new MemoryStream())
                //{
                //    int count = 0;


                //        do
                //        {
                //            try
                //            {
                //                byte[] buf = new byte[1024];
                //                count = readStream.Read(buf, 0, 1024);
                //                mss.Write(buf, 0, count);
                //            }
                //            catch (Exception)
                //            {


                //            }

                //        } while (readStream.CanRead && count > 0);



                //}
            }
        }
Exemple #4
0
        private void WebView_WebResourceRequested(object sender, WebViewWebResourceRequestedEventArgs e)
        {
            var reqesutUri = e.Request.RequestUri;

            using (var defferral = e.GetDeferral())
            {
                try
                {
                    var stream = PageViewModel.ResolveWebResourceRequest(reqesutUri);
                    if (stream != null)
                    {
                        e.Response         = new Windows.Web.Http.HttpResponseMessage(statusCode: Windows.Web.Http.HttpStatusCode.Ok);
                        e.Response.Content = new HttpStreamContent(stream.AsInputStream());
                    }
                }
                finally
                {
                    defferral.Complete();
                }
            }
        }
 Deferral IWebViewWebResourceRequestedEventArgsResolver.GetDeferral(WebViewWebResourceRequestedEventArgs e) => e.GetDeferral();
 void IWebViewWebResourceRequestedEventArgsResolver.Response(WebViewWebResourceRequestedEventArgs e, HttpResponseMessage response) => e.Response = response;
 HttpRequestMessage IWebViewWebResourceRequestedEventArgsResolver.Request(WebViewWebResourceRequestedEventArgs e) => e.Request;
 /// <summary>
 /// Gets a deferral object for managing the work done in the WebResourceRequested event handler.
 /// </summary>
 /// <param name="e">The requested <see cref="WebViewWebResourceRequestedEventArgs"/>.</param>
 /// <returns>A deferral object.</returns>
 public static Deferral GetDeferralWrapped(this WebViewWebResourceRequestedEventArgs e) => Resolver.GetDeferral(e);
 /// <summary>
 /// Sets the response to the web resource request.
 /// </summary>
 /// <param name="e">The requested <see cref="WebViewWebResourceRequestedEventArgs"/>.</param>
 /// <param name="response">The response to the web resource request.</param>
 public static void Response(this WebViewWebResourceRequestedEventArgs e, HttpResponseMessage response) => Resolver.Response(e, response);
 /// <summary>
 /// Gets the web resource request.
 /// </summary>
 /// <param name="e">The requested <see cref="WebViewWebResourceRequestedEventArgs"/>.</param>
 /// <returns>The web resource request.</returns>
 public static HttpRequestMessage Request(this WebViewWebResourceRequestedEventArgs e) => Resolver.Request(e);