本文整理汇总了C#中MindTouch.Dream.XUri.WithoutPathQueryFragment方法的典型用法代码示例。如果您正苦于以下问题:C# XUri.WithoutPathQueryFragment方法的具体用法?C# XUri.WithoutPathQueryFragment怎么用?C# XUri.WithoutPathQueryFragment使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MindTouch.Dream.XUri
的用法示例。
在下文中一共展示了XUri.WithoutPathQueryFragment方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SubmitRequestAsync
//.........这里部分代码省略.........
publicUri = _publicUri;
} else {
// check if the request was forwarded through Apache mod_proxy
string proxyOverride = uri.GetParam(DreamInParam.HOST, null);
if(string.IsNullOrEmpty(proxyOverride)) {
proxyOverride = request.Headers.ForwardedHost;
}
string serverPath = string.Join("/", transport.Segments);
if(proxyOverride != null) {
// request used an override, append path of public-uri
serverPath = string.Join("/", _publicUri.Segments);
}
// set the uri scheme based-on the incoming scheme and the override header
string scheme = transport.Scheme;
if("On".EqualsInvariantIgnoreCase(request.Headers.FrontEndHttps ?? "")) {
scheme = Scheme.HTTPS;
}
scheme = uri.GetParam(DreamInParam.SCHEME, scheme);
// set the host port
string hostPort = proxyOverride ?? request.Headers.Host ?? uri.HostPort;
publicUri = new XUri(string.Format("{0}://{1}", scheme, hostPort)).AtPath(serverPath);
}
request.Headers.DreamPublicUri = publicUri.ToString();
}
// set host header
request.Headers.Host = publicUri.HostPort;
// convert incoming uri to local://
XUri localFeatureUri = uri.ChangePrefix(uri.WithoutPathQueryFragment(), _localMachineUri);
// check if path begins with public uri path
if((transport.Segments.Length > 0) && localFeatureUri.PathStartsWith(transport.Segments)) {
localFeatureUri = localFeatureUri.WithoutFirstSegments(transport.Segments.Length);
}
// check if the path is the application root and whether we have special behavior for that
if(localFeatureUri.Path.IfNullOrEmpty("/") == "/") {
if(!string.IsNullOrEmpty(_rootRedirect)) {
localFeatureUri = localFeatureUri.AtAbsolutePath(_rootRedirect);
} else if(IsDebugEnv) {
localFeatureUri = localFeatureUri.AtAbsolutePath("/host/services");
}
}
// find the requested feature
List<DreamFeature> features;
lock(_features) {
features = _features.Find(localFeatureUri);
}
DreamFeature feature = null;
if(features != null) {
// TODO (steveb): match the incoming mime-type to the feature's acceptable mime-types (mime-type overloading)
// match the request verb to the feature verb
foreach(DreamFeature entry in features) {
if((entry.Verb == "*") || entry.Verb.EqualsInvariant(verb)) {
feature = entry;
break;
}
}
示例2: UserLogin
public Yield UserLogin(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
string userSuppliedIdentifier = context.GetParam("url", null);
if (String.IsNullOrEmpty(userSuppliedIdentifier)) {
_log.Info("No identifier was specified");
throw new DreamBadRequestException("No identifier was specified.");
}
XUri returnUri = new XUri(context.GetParam("returnurl", null));
String realm = context.GetParam("realm", null);
if (String.IsNullOrEmpty(realm)) {
realm = returnUri.WithoutPathQueryFragment().ToString();
}
IAuthenticationRequest openIdRequest;
// dummy parameters required by DotNetOpenId 2.x; in 3.x, you can
// just pass null to the OpenIdRelyingParty constructor.
Uri identifierUri = new Uri(userSuppliedIdentifier);
NameValueCollection queryCol = System.Web.HttpUtility.ParseQueryString(identifierUri.Query);
OpenIdRelyingParty openid = new OpenIdRelyingParty(null, identifierUri, queryCol);
// creating an OpenID request will authenticate that
// the endpoint exists and is an OpenID provider.
_log.DebugFormat("Creating OpenID request: identifier {0}, return URL {1}, realm {2}", userSuppliedIdentifier, returnUri.ToString(), realm);
try {
openIdRequest = openid.CreateRequest(
userSuppliedIdentifier,
realm,
returnUri.ToUri());
} catch (OpenIdException ex) {
_log.WarnFormat("'{0}' rejected as OpenID identifier: {1}", userSuppliedIdentifier, ex.Message);
throw new DreamBadRequestException(string.Format("'{0}' is not a valid OpenID identifier. {1}", userSuppliedIdentifier, ex.Message));
}
// Ask for the e-mail address on this request.
// Use both SREG and AX, to increase the odds of getting it.
openIdRequest.AddExtension(new ClaimsRequest{
Email = DemandLevel.Require,
});
var fetch = new FetchRequest();
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email, true));
openIdRequest.AddExtension(fetch);
// The RedirectingResponse either contains a "Location" header for
// a HTTP GET, which will return in the response as 'endpoint', or
// a HTML FORM which needs to be displayed to the user, which will
// return in the response as 'form'.
IResponse wr = openIdRequest.RedirectingResponse;
XDoc result = new XDoc("openid");
if (String.IsNullOrEmpty(wr.Headers["Location"])) {
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
string formBody = enc.GetString(wr.Body);
_log.DebugFormat("OpenID redirect by HTML FORM: {0}", formBody);
result.Attr("form", formBody);
} else {
string redirectUrl = wr.Headers["Location"];
_log.DebugFormat("OpenID redirect URL: {0}", redirectUrl);
result.Attr("endpoint", redirectUrl);
}
response.Return(DreamMessage.Ok(result));
yield break;
}
示例3: New
//--- Class Methods ---
internal static AMedia New(XUri uri) {
// check if the uri is a youtube video
if(
uri.Host.EndsWithInvariantIgnoreCase(".youtube.com") ||
uri.Host.EqualsInvariantIgnoreCase("youtube.com") ||
uri.Host.EndsWithInvariantIgnoreCase(".youtube-nocookie.com") ||
uri.Host.EqualsInvariantIgnoreCase("youtube-nocookie.com")
) {
if(uri.GetParam("v") != null) {
return new YouTubeVideo(uri.WithoutPathQueryFragment().At("v", uri.GetParam("v")));
}
if(!ArrayUtil.IsNullOrEmpty(uri.Segments) && (uri.Segments.Length == 2) && (uri.Segments[0].EqualsInvariantIgnoreCase("v"))) {
return new YouTubeVideo(uri);
}
}
return null;
}