示例#1
0
        public XmlElement GetRequestResponseElement(string requestPath, string data, HttpVerb verb)
        {
            IWebRequest request = _webRequestFactory.CreateWebRequest(string.Format("{0}/{1}", Url, requestPath));

            request.Method             = verb;
            request.BasicAuthorization = _authorization;
            if (verb != HttpVerb.Get)
            {
                request.RequestText = data;
            }
            return(request.Response.DocumentElement);
        }
示例#2
0
 /// <summary>
 /// Generates a disposable <see cref="IWebRequest"/> object for simplified HTTP web request
 /// access inside a plugin.
 /// </summary>
 /// <param name="address">The URI of the web resource.</param>
 /// <param name="dependencyName">A dependence name to use for telemetry tracking.</param>
 /// <returns></returns>
 public virtual IWebRequest CreateWebRequest(Uri address, string dependencyName = null)
 {
     if (_webRequestFactory is null)
     {
         _webRequestFactory = this.Container.Resolve <IWebRequestFactory>();
     }
     return(_webRequestFactory.CreateWebRequest(address, dependencyName));
 }
示例#3
0
        /// <summary>
        /// Generates a dictionary loaded with the ids of all enabled secrets in the key vault indexed by the secret name.
        /// </summary>
        /// <param name="tenantId"></param>
        /// <param name="clientId"></param>
        /// <param name="clientSecret"></param>
        /// <param name="vaultName"></param>
        /// <returns></returns>
        private IReadOnlyDictionary <string, string> GetSecretIds(string tenantId, string clientId, string clientSecret, string vaultName)
        {
            var dictionary = new Dictionary <string, string>();

            var token = GetToken(tenantId, clientId, clientSecret);

            string nextLink = null;

            var request = new GetSecretListRequest(Serializer, token, vaultName);

            using (var webRequest = WebRequestFactory.CreateWebRequest(request.ApiEndpoint))
            {
                var response = request.Execute(webRequest);

                nextLink = response.nextLink;

                foreach (var secretItem in response.value.Where(s => s.attributes.enabled))
                {
                    dictionary.Add(ParseKeyFromId(secretItem.id), secretItem.id);
                }
            }

            while (!string.IsNullOrEmpty(nextLink))
            {
                var nextLinkRequest = new GetNextLinkRequest(Serializer, token, nextLink);

                using (var webRequest = WebRequestFactory.CreateWebRequest(nextLinkRequest.ApiEndpoint))
                {
                    var response = nextLinkRequest.Execute(webRequest);

                    nextLink = response.nextLink;

                    foreach (var secretItem in response.value.Where(s => s.attributes.enabled))
                    {
                        dictionary.Add(
                            ParseKeyFromId(secretItem.id),
                            secretItem.id);
                    }
                }
            }

            return(dictionary);
        }
示例#4
0
        private void GetSecret(string key, AuthToken token = null)
        {
            if (token is null)
            {
                token = GetToken();
            }

            var versionRequest = new GetSecretVersionsRequest(Serializer, token, VaultName, key);

            var webRequest = WebRequestFactory.CreateWebRequest(versionRequest.ApiEndpoint);

            var response = versionRequest.Execute(webRequest);

            if (response is null || response.value.Length == 0)
            {
                Secrets.Add(key, null);
                return;
            }

            var curentVersion = response.value
                                .Where(v => v.attributes.enabled)
                                .OrderByDescending(v => v.attributes.created)
                                .FirstOrDefault()?.id;

            if (string.IsNullOrEmpty(curentVersion))
            {
                Secrets.Add(key, null);
                return;
            }

            var secretRequest = new GetSecretRequest(Serializer, token, curentVersion);

            webRequest = WebRequestFactory.CreateWebRequest(secretRequest.ApiEndpoint);
            var value = secretRequest.Execute(webRequest)?.value;

            Secrets.Add(key, value);
        }