public DescribeInstancesResponse DoDescribeInstances(DescribeInstancesRequest request) { List<string> lParams = new List<string>(); lParams.Add(string.Format("AWSAccessKeyId={0}", Util.UrlEncode(AccessKey))); lParams.Add(string.Format("Action={0}", "DescribeInstances")); lParams.Add(string.Format("SignatureMethod={0}", "HmacSHA256")); lParams.Add(string.Format("SignatureVersion={0}", "2")); lParams.Add(string.Format("Timestamp={0}", Util.UrlEncode(DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")))); lParams.Add(string.Format("Version={0}", "2012-07-20")); for (int i = 0; i < request.Filters.Count; i++) { var filter = request.Filters[i]; lParams.Add(string.Format("Filter.{0}.Name={1}", i + 1, Util.UrlEncode(filter.Name))); for (int a = 0; a < filter.Values.Count; a++) { lParams.Add(string.Format("Filter.{0}.Value.{1}={2}", i + 1, a + 1, Util.UrlEncode(filter.Values[a]))); } } lParams.Sort(StringComparer.Ordinal); var parameters = string.Join("&", lParams); string sig = Util.GetSignature(URL, "GET", parameters, SecretKey); parameters = string.Format("{0}&Signature={1}", parameters, Util.UrlEncode(sig)); var wRequest = WebRequest.Create(string.Format("{0}?{1}", URL, parameters)) as HttpWebRequest; wRequest.Method = "GET"; wRequest.ContentType = "application/x-www-form-urlencoded"; wRequest.KeepAlive = false; using (var response = wRequest.GetResponse() as HttpWebResponse) using (var stream = response.GetResponseStream()) using (var reader = new StreamReader(stream)) { var body = reader.ReadToEnd(); var element = XElement.Parse(body); XmlSerializer serializer = new XmlSerializer(typeof(DescribeInstancesResponse)); var describeInstancesResponse = (DescribeInstancesResponse)serializer.Deserialize(element.CreateReader()); return describeInstancesResponse; } }
public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) { return Util.RetryMethod<DescribeInstancesResponse>(() => DoDescribeInstances(request), RetryCount); }