Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        internal static Uri ForceSlashTerminatedUri(Uri uri)
        {
            string str = CommonUtil.UriToString(uri);

            if (!str.EndsWith("/", StringComparison.Ordinal))
            {
                return(CreateUri(str + "/", UriKind.Absolute));
            }
            return(uri);
        }
Ejemplo n.º 3
0
 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));
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 internal override string ToString(object instance)
 {
     return(CommonUtil.UriToString((Uri)instance));
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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")))));
 }