Ejemplo n.º 1
0
        /// <summary>
        /// Create a named link related for a parametrized URI containing place holds based on
        /// resource properties to be substituted at link resolution time.
        /// </summary>
        /// <param name="relName">The relation name.</param>
        /// <param name="httpMethod">The HTTP method used to invoke URI.</param>
        /// <param name="resourceUrl">Function delegate passed the resource during link resolution and
        /// returns a populated URI or partial populated URI (i.e. Template) based on the properties
        /// of the passed resourced.</param>
        /// <returns>Object used to add optional metadata to the created link.</returns>
        public LinkDescriptor <TResource> Href(string relName, HttpMethod httpMethod, Expression <Func <TResource, string> > resourceUrl)
        {
            if (string.IsNullOrWhiteSpace(relName))
            {
                throw new ArgumentException("Relation Name not specified.", nameof(relName));
            }
            if (resourceUrl == null)
            {
                throw new ArgumentNullException(nameof(resourceUrl), "Resource Delegate not specified.");
            }

            var actionLink     = new ActionResourceLink <TResource>(resourceUrl);
            var linkDescriptor = new LinkDescriptor <TResource>(actionLink);

            AddActionLink(actionLink);

            linkDescriptor.SetRelName(relName);
            linkDescriptor.SetMethod(httpMethod);
            return(linkDescriptor);
        }
Ejemplo n.º 2
0
        //--------- STRING BASED LINKS ------------------------------------------

        /// <summary>
        /// Creates a named link relation for a hard-coded URI value.
        /// </summary>
        /// <param name="relName">The relation name.</param>
        /// <param name="href">The URI associated with the relation.</param>
        /// <param name="httpMethod">The HTTP method used to invoke the URI.</param>
        /// <returns>Object used to add optional metadata to the created link.</returns>
        public LinkDescriptor <TResource> Href(string relName, HttpMethod httpMethod, string href)
        {
            if (string.IsNullOrWhiteSpace(relName))
            {
                throw new ArgumentException("Relation Name not specified.", nameof(relName));
            }
            if (string.IsNullOrWhiteSpace(href))
            {
                throw new ArgumentException("HREF value not specified.", nameof(href));
            }

            var resourceLink   = new ResourceLink();
            var linkDescriptor = new LinkDescriptor <TResource>(resourceLink);

            AddResourceLink(resourceLink);

            linkDescriptor.SetRelName(relName);
            linkDescriptor.SetHref(href);
            linkDescriptor.SetMethod(httpMethod);

            return(linkDescriptor);
        }