internal Uri WriteUriOperationParametersToUri(Uri requestUri, List <UriOperationParameter> operationParameters) { UriBuilder builder = new UriBuilder(requestUri); StringBuilder builder2 = new StringBuilder(); string str = CommonUtil.UriToString(builder.Uri); if (!string.IsNullOrEmpty(builder.Query)) { builder2.Append(builder.Query.Substring(1)); builder2.Append('&'); } foreach (UriOperationParameter parameter in operationParameters) { string str2 = parameter.Name.Trim(); if (str2.StartsWith(char.ToString('@'), StringComparison.OrdinalIgnoreCase) && !str.Contains(str2)) { throw new DataServiceRequestException(System.Data.Services.Client.Strings.Serializer_UriDoesNotContainParameterAlias(parameter.Name)); } builder2.Append(str2); builder2.Append('='); builder2.Append(this.ConvertToEscapedUriValue(str2, parameter.Value)); builder2.Append('&'); } builder2.Remove(builder2.Length - 1, 1); builder.Query = builder2.ToString(); return(builder.Uri); }
internal static Uri ForceSlashTerminatedUri(Uri uri) { string str = CommonUtil.UriToString(uri); if (!str.EndsWith("/", StringComparison.Ordinal)) { return(CreateUri(str + "/", UriKind.Absolute)); } return(uri); }
protected Uri CreateRequestRelativeUri(LinkDescriptor binding) { if (binding.IsSourcePropertyCollection && (EntityStates.Added != binding.State)) { EntityDescriptor entityDescriptor = this.RequestInfo.EntityTracker.GetEntityDescriptor(binding.Target); Uri uri = DataServiceContext.GenerateEditLinkRelativeUri(binding.SourceProperty, entityDescriptor.Entity, this.RequestInfo.MaxProtocolVersion); return(Util.CreateUri("$links" + '/' + CommonUtil.UriToString(uri), UriKind.Relative)); } return(Util.CreateUri("$links" + '/' + binding.SourceProperty, UriKind.Relative)); }
internal static Uri AppendBaseUriAndRelativeUri(Uri baseUri, Uri relativeUri) { string str = CommonUtil.UriToString(baseUri); string str2 = CommonUtil.UriToString(relativeUri); if (str.EndsWith("/", StringComparison.Ordinal)) { if (str2.StartsWith("/", StringComparison.Ordinal)) { relativeUri = new Uri(baseUri, CreateUri(str2.TrimStart(ForwardSlash), UriKind.Relative)); return(relativeUri); } relativeUri = new Uri(baseUri, relativeUri); return(relativeUri); } relativeUri = CreateUri(str + "/" + str2.TrimStart(ForwardSlash), UriKind.Absolute); return(relativeUri); }
internal static ODataMessageReaderSettings CreateODataMessageReaderSettings(ResponseInfo responseInfo, Func <ODataEntry, XmlReader, Uri, XmlReader> entryXmlCustomizer, bool projectionQuery) { ODataMessageReaderSettings settings = new ODataMessageReaderSettings(); responseInfo.TypeResolver = new TypeResolver(responseInfo, projectionQuery); settings.EnableWcfDataServicesClientBehavior(new Func <IEdmType, string, IEdmType>(responseInfo.TypeResolver.ResolveWireTypeName), responseInfo.DataNamespace, CommonUtil.UriToString(responseInfo.TypeScheme), entryXmlCustomizer); settings.BaseUri = (responseInfo.BaseUriResolver.GetRawBaseUriValue() != null) ? responseInfo.BaseUriResolver.GetBaseUriWithSlash() : null; settings.UndeclaredPropertyBehaviorKinds = ODataUndeclaredPropertyBehaviorKinds.ReportUndeclaredLinkProperty; settings.MaxProtocolVersion = CommonUtil.ConvertToODataVersion(responseInfo.MaxProtocolVersion); if (responseInfo.IgnoreMissingProperties) { settings.UndeclaredPropertyBehaviorKinds |= ODataUndeclaredPropertyBehaviorKinds.IgnoreUndeclaredValueProperty; } settings.MessageQuotas.MaxEntityPropertyMappingsPerType = 0x7fffffff; settings.MessageQuotas.MaxNestingDepth = 0x7fffffff; settings.MessageQuotas.MaxOperationsPerChangeset = 0x7fffffff; settings.MessageQuotas.MaxPartsPerBatch = 0x7fffffff; settings.MessageQuotas.MaxReceivedMessageSize = 0x7fffffffffffffffL; return(settings); }
internal override string ToString(object instance) { return(CommonUtil.UriToString((Uri)instance)); }
protected ODataRequestMessageWrapper CreateRequest(LinkDescriptor binding) { if (binding.ContentGeneratedForSave) { return(null); } EntityDescriptor entityDescriptor = this.RequestInfo.EntityTracker.GetEntityDescriptor(binding.Source); EntityDescriptor descriptor2 = (binding.Target != null) ? this.RequestInfo.EntityTracker.GetEntityDescriptor(binding.Target) : null; Uri requestUri = null; if (entityDescriptor.GetLatestIdentity() == null) { if (!this.IsBatch) { binding.ContentGeneratedForSave = true; throw System.Data.Services.Client.Error.InvalidOperation(System.Data.Services.Client.Strings.Context_LinkResourceInsertFailure, entityDescriptor.SaveError); } Uri uri = this.CreateRequestRelativeUri(binding); requestUri = Util.CreateUri("$" + entityDescriptor.ChangeOrder.ToString(CultureInfo.InvariantCulture) + "/" + CommonUtil.UriToString(uri), UriKind.Relative); } else { if ((!this.IsBatch && (descriptor2 != null)) && (descriptor2.GetLatestIdentity() == null)) { binding.ContentGeneratedForSave = true; throw System.Data.Services.Client.Error.InvalidOperation(System.Data.Services.Client.Strings.Context_LinkResourceInsertFailure, descriptor2.SaveError); } requestUri = this.CreateRequestUri(entityDescriptor, binding); } ODataRequestMessageWrapper requestMessage = this.CreateRequestMessage(requestUri, GetLinkHttpMethod(binding)); if (this.IsBatch) { requestMessage.SetHeader("Content-ID", binding.ChangeOrder.ToString(CultureInfo.InvariantCulture)); } if ((EntityStates.Added == binding.State) || ((EntityStates.Modified == binding.State) && (binding.Target != null))) { requestMessage.SetHeader("Content-Type", "application/xml"); } WebUtil.SetOperationVersionHeaders(requestMessage, Util.DataServiceVersion1, this.RequestInfo.MaxProtocolVersionAsVersion); return(requestMessage); }
private static bool IsValidBaseUri(Uri baseUri) { return((baseUri == null) || ((baseUri.IsAbsoluteUri && Uri.IsWellFormedUriString(CommonUtil.UriToString(baseUri), UriKind.Absolute)) && ((string.IsNullOrEmpty(baseUri.Query) && string.IsNullOrEmpty(baseUri.Fragment)) && (!(baseUri.Scheme != "http") || !(baseUri.Scheme != "https"))))); }