Esempio n. 1
0
        internal static void get_response_headers(IntPtr gcHandlePtr, IntPtr response, out long response_length, ref IntPtr redirectUrl_str, ref int redirectUrl_length)
        {
            var self = (CfxResourceHandler)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target;

            if (self == null)
            {
                response_length = default(long);
                return;
            }
            var e            = new CfxGetResponseHeadersEventArgs(response, redirectUrl_str, redirectUrl_length);
            var eventHandler = self.m_GetResponseHeaders;

            if (eventHandler != null)
            {
                eventHandler(self, e);
            }
            e.m_isInvalid = true;
            if (e.m_response_wrapped == null)
            {
                CfxApi.cfx_release(e.m_response);
            }
            response_length = e.m_response_length;
            if (e.m_redirectUrl_changed)
            {
                var redirectUrl_pinned = new PinnedString(e.m_redirectUrl_wrapped);
                redirectUrl_str    = redirectUrl_pinned.Obj.PinnedPtr;
                redirectUrl_length = redirectUrl_pinned.Length;
            }
        }
Esempio n. 2
0
 void ResourceHandler_GetResponseHeaders(object sender, CfxGetResponseHeadersEventArgs e)
 {
     e.ResponseLength      = webResource.data.Length;
     e.Response.MimeType   = webResource.mimeType;
     e.Response.Status     = 200;
     e.Response.StatusText = "OK";
 }
Esempio n. 3
0
        internal static void get_response_headers(IntPtr gcHandlePtr, IntPtr response, out int response_release, out long response_length, out IntPtr redirectUrl_str, out int redirectUrl_length, out IntPtr redirectUrl_gc_handle)
        {
            var self = (CfxResourceHandler)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target;

            if (self == null || self.CallbacksDisabled)
            {
                response_release      = 1;
                response_length       = default(long);
                redirectUrl_str       = IntPtr.Zero;
                redirectUrl_length    = 0;
                redirectUrl_gc_handle = IntPtr.Zero;
                return;
            }
            var e = new CfxGetResponseHeadersEventArgs(response);

            self.m_GetResponseHeaders?.Invoke(self, e);
            e.m_isInvalid    = true;
            response_release = e.m_response_wrapped == null? 1 : 0;
            response_length  = e.m_response_length;
            if (e.m_redirectUrl_wrapped != null && e.m_redirectUrl_wrapped.Length > 0)
            {
                var redirectUrl_pinned = new PinnedString(e.m_redirectUrl_wrapped);
                redirectUrl_str       = redirectUrl_pinned.Obj.PinnedPtr;
                redirectUrl_length    = redirectUrl_pinned.Length;
                redirectUrl_gc_handle = redirectUrl_pinned.Obj.GCHandlePtr();
            }
            else
            {
                redirectUrl_str       = IntPtr.Zero;
                redirectUrl_length    = 0;
                redirectUrl_gc_handle = IntPtr.Zero;
            }
        }
Esempio n. 4
0
        private void OnGetResponseHeaders(object sender, CfxGetResponseHeadersEventArgs e)
        {
            if (data == null)
            {
                e.Response.Status = 404;
            }
            else
            {
                var length = data.Length;
                e.ResponseLength    = data.Length;
                e.Response.MimeType = mimeType;
                e.Response.Status   = httpStatus;
                e.RedirectUrl       = redirectUrl;

                var headers = e.Response.GetHeaderMap().Union(scriptHeaders).ToList <string[]>();

                if (isPartContent)
                {
                    headers.Add(new string[2] {
                        "Accept-Ranges", "bytes"
                    });
                    var startPos = 0;
                    var endPos   = length - 1;

                    if (buffStartPostition.HasValue && buffEndPostition.HasValue)
                    {
                        startPos = buffStartPostition.Value;
                        endPos   = buffEndPostition.Value;
                    }
                    else if (!buffEndPostition.HasValue && buffStartPostition.HasValue)
                    {
                        startPos = buffStartPostition.Value;
                    }

                    headers.Add(new string[2] {
                        "Content-Range", "bytes {startPos}-{endPos}/{webResource.data.Length}"
                    });
                    headers.Add(new string[2] {
                        "Content-Length", "{endPos - startPos + 1}"
                    });

                    e.ResponseLength = (endPos - startPos + 1);

                    e.Response.Status = 206;
                }
                e.Response.SetHeaderMap(headers);
            }
        }
Esempio n. 5
0
        private void PackUriResourceHandler_GetResponseHeaders(object sender, CfxGetResponseHeadersEventArgs responeHeader)
        {
            var response = responeHeader.Response;

            if (_StreamResourceInfo == null)
            {
                response.Status     = 404;
                response.StatusText = "Not Found";
                return;
            }

            responeHeader.ResponseLength = _StreamResourceInfo.Stream.Length;
            response.MimeType            = GetMineType();
            response.Status     = 200;
            response.StatusText = "OK";
        }
        private void PackUriResourceHandler_GetResponseHeaders(object sender, CfxGetResponseHeadersEventArgs responseHeader)
        {
            var response = responseHeader.Response;

            if (IsPrefetch)
            {
                _Logger?.Info(Prefetch);
                responseHeader.ResponseLength = 0;
                SetSuccess(response);
                return;
            }

            if (_StreamResourceInfo == null)
            {
                response.Status     = 404;
                response.StatusText = "Not Found";
                return;
            }

            responseHeader.ResponseLength = _StreamResourceInfo.Stream.Length;
            SetSuccess(response);
        }