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; } }
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"; }
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; } }
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); } }
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); }