예제 #1
0
 public void Sign(IRequest request, 
                           RequestMetrics metrics, 
                           string accessKeyId, 
                           string secretAccessKey)
 {
     var signingRequest = SignRequest(request, metrics, secretAccessKey);
     var signingResult = new StringBuilder();
     signingResult.AppendFormat("{0} {1}:{2}",
                                      MNSConstants.MNS_AUTHORIZATION_HEADER_PREFIX,
                                      accessKeyId,
                                      signingRequest);
     request.Headers[HttpHeader.AuthorizationHeader] = signingResult.ToString();
 }
예제 #2
0
        public string SignRequest(IRequest request,
                                             RequestMetrics metrics,
                                             string secretAccessKey)
        {
            InitializeHeaders(request.Headers);

            var parametersToCanonicalize = GetParametersToCanonicalize(request);
            var canonicalParameters = CanonicalizeQueryParameters(parametersToCanonicalize);
            var canonicalResource = CanonicalizeResource(canonicalParameters, request.ResourcePath);
            var canonicalMNSHeaders = CanonoicalizeMNSHeaders(request.Headers);

            var canonicalRequest = CanonicalizeRequest(request.HttpMethod,
                                                       request.Headers,
                                                       canonicalMNSHeaders,
                                                       canonicalResource);
            if (metrics != null)
                metrics.AddProperty(Metric.CanonicalRequest, canonicalRequest);

            return ComputeSignature(secretAccessKey, canonicalRequest);
        }
예제 #3
0
 internal TimingEvent(RequestMetrics metrics, Metric metric)
 {
     this.metrics = metrics;
     this.metric  = metric;
 }
예제 #4
0
 internal TimingEvent(RequestMetrics metrics, Metric metric)
 {
     this.metrics = metrics;
     this.metric = metric;
 }