Modified implementation of the URI Template Spec RFC6570 for use in the Octopus Deploy RESTful API client.
This implementation is from: https://github.com/darrelmiller/UriTemplates. The class was renamed so as not to conflict with the UriTemplate class built into .NET, and the static methods were added.
        public async Task <bool> HasLinkParameter(string linkName, string parameterName)
        {
            string link;
            var    spaceRootDocument = await loadSpaceRootResource.Value.ConfigureAwait(false);

            if (spaceRootDocument != null && spaceRootDocument.HasLink(linkName))
            {
                link = spaceRootDocument.Link(linkName);
            }
            else
            {
                var rootDocument = await loadRootResource.Value.ConfigureAwait(false);

                if (rootDocument.HasLink(linkName))
                {
                    link = rootDocument.Link(linkName);
                }
                else
                {
                    return(false);
                }
            }

            var template = new UrlTemplate(link);

            return(template.GetParameterNames().Contains(parameterName));
        }
        public Uri QualifyUri(string path, object parameters = null)
        {
            var dictionary = parameters as IDictionary <string, object>;

            path = (dictionary == null) ? UrlTemplate.Resolve(path, parameters) : UrlTemplate.Resolve(path, dictionary);

            return(serverEndpoint.OctopusServer.Resolve(path));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Resolves the specified template spec.
        /// </summary>
        /// <param name="templateSpec"> The template spec. </param>
        /// <param name="parameters"> The parameters. </param>
        /// <returns> </returns>
        public static string Resolve(string templateSpec, IDictionary <string, object> parameters)
        {
            var template = new UrlTemplate(templateSpec);

            parameters = parameters ?? new Dictionary <string, object>();
            foreach (var param in parameters)
            {
                template.SetParameter(param.Key, param.Value);
            }

            return(template.Resolve());
        }
Exemplo n.º 4
0
        public bool HasLinkParameter(string linkName, string parameterName)
        {
            string link;

            if (loadSpaceRootResource.Value != null && loadSpaceRootResource.Value.HasLink(linkName))
            {
                link = loadSpaceRootResource.Value.Link(linkName);
            }
            else if (loadRootResource.Value.HasLink(linkName))
            {
                link = loadRootResource.Value.Link(linkName);
            }
            else
            {
                return(false);
            }

            var template = new UrlTemplate(link);

            return(template.GetParameterNames().Contains(parameterName));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Resolves the specified template spec.
        /// </summary>
        /// <param name="templateSpec"> The template spec. </param>
        /// <param name="parameters"> The parameters. </param>
        /// <returns> </returns>
        public static string Resolve(string templateSpec, IDictionary<string, object> parameters)
        {
            var template = new UrlTemplate(templateSpec);
            parameters = parameters ?? new Dictionary<string, object>();
            foreach (var param in parameters)
            {
                template.SetParameter(param.Key, param.Value);
            }

            return template.Resolve();
        }