public StringResult Page(XrcUrl url, object parameters = null, IContext callerContext = null) { try { var parentRequest = callerContext == null ? null : callerContext.Request; var parentResponse = callerContext == null ? null : callerContext.Response; using (var stream = new MemoryStream()) { var request = new XrcRequest(url, parentRequest: parentRequest); var response = new XrcResponse(stream, parentResponse: parentResponse); var context = new Context(request, response); context.CallerContext = callerContext; AddParameters(context, parameters); ProcessRequest(context); context.CheckResponse(); response.Flush(); stream.Seek(0, SeekOrigin.Begin); using (StreamReader reader = new StreamReader(stream, response.ContentEncoding)) { return new StringResult(reader.ReadToEnd(), response.ContentEncoding, response.ContentType); } } } catch (Exception ex) { throw new PageException(url.AppRelaviteUrl, ex); } }
public XrcRequest(XrcUrl requestUrl, string httpMethod = "GET", HttpRequestBase parentRequest = null) { if (requestUrl == null) throw new ArgumentNullException("request"); _httpMethod = httpMethod; _url = requestUrl; _innerRequest = parentRequest; if (_innerRequest == null) { _cookies = new HttpCookieCollection(); _form = new NameValueCollection(); _headers = new NameValueCollection(); _serverVariables = new NameValueCollection(); _contentEncoding = Encoding.UTF8; } else { _cookies = _innerRequest.Cookies; _form = _innerRequest.Form; _headers = _innerRequest.Headers; _serverVariables = _innerRequest.ServerVariables; _contentEncoding = _innerRequest.ContentEncoding; } _queryString = HttpUtility.ParseQueryString(_url.Query, _contentEncoding); }
public XrcRequest(HttpRequestBase innerRequest) { if (innerRequest == null) throw new ArgumentNullException("innerRequest"); _httpMethod = innerRequest.HttpMethod; _url = new xrc.XrcUrl(VirtualPathUtility.ToAppRelative(innerRequest.RawUrl)); _queryString = innerRequest.QueryString; _innerRequest = innerRequest; _cookies = _innerRequest.Cookies; _form = _innerRequest.Form; _headers = _innerRequest.Headers; _serverVariables = _innerRequest.ServerVariables; _contentEncoding = _innerRequest.ContentEncoding; }
public bool Match(XrcUrl url) { return _pageProvider.PageExists(url); }
private bool IsCanonicalUrl(IPage page, XrcUrl requestUri) { var canonicalPath = page.PageUrl.Path; var requestedPath = requestUri.Path; return string.Equals(canonicalPath, requestedPath, StringComparison.Ordinal); }
public bool Match(XrcUrl url) { return _xrcService.Match(url); }