internal static Uri BuildLinkUri(LinkDescriptorData linkDescriptorData, LinkInfoData info)
        {
            Uri linkUri;

            if (info != null && info.RelationshipLink != null)
            {
                linkUri = info.RelationshipLink;
            }
            else
            {
                ExceptionUtilities.CheckObjectNotNull(linkDescriptorData.SourceDescriptor.EditLink, "Edit link of source descriptor cannot be null");
                linkUri = new Uri(UriHelpers.ConcatenateUriSegments(linkDescriptorData.SourceDescriptor.EditLink.OriginalString, Endpoints.Ref, linkDescriptorData.SourcePropertyName), UriKind.RelativeOrAbsolute);
            }

            return(linkUri);
        }
        private HttpRequestData CreateSetLinkRequest(LinkDescriptorData linkDescriptorData, LinkInfoData info)
        {
            HttpVerb verb;

            if (linkDescriptorData.TargetDescriptor == null)
            {
                verb = HttpVerb.Delete;
            }
            else
            {
                verb = HttpVerb.Put;
            }

            return(new HttpRequestData()
            {
                Uri = this.GetLinkUri(linkDescriptorData, info), Verb = verb
            });
        }
        private HttpRequestData CreateDeleteLinkRequest(LinkDescriptorData linkDescriptorData, LinkInfoData info)
        {
            string keyString = this.EntityDescriptorValueCalculator.CalculateEntityKey(linkDescriptorData.TargetDescriptor.Entity);

            return(new HttpRequestData()
            {
                Uri = new Uri(this.GetLinkUri(linkDescriptorData, info).OriginalString + keyString), Verb = HttpVerb.Delete
            });
        }
 private HttpRequestData CreateAddLinkRequest(LinkDescriptorData linkDescriptorData, LinkInfoData info)
 {
     return(new HttpRequestData()
     {
         Uri = this.GetLinkUri(linkDescriptorData, info), Verb = HttpVerb.Post
     });
 }