Exemplo n.º 1
0
        public static void AddHeader(this IRequest request, string key, DateTimeOffset?date, DateTimeFormat format)
        {
            if (date == null)
            {
                return;
            }

            switch (format)
            {
            case DateTimeFormat.Iso8601DateTime:
                request.AddHeader(key, date.Value.ToString(DateTimeFormats.Iso8601DateTime, DateTimeFormatInfo.InvariantInfo));
                break;

            case DateTimeFormat.Iso8601DateTimeExt:
                request.AddHeader(key, date.Value.ToString(DateTimeFormats.Iso8601DateTimeExtended, DateTimeFormatInfo.InvariantInfo));
                break;

            case DateTimeFormat.Rfc1123:
                request.AddHeader(key, date.Value.ToString(DateTimeFormats.Rfc1123, DateTimeFormatInfo.InvariantInfo));
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(format), format, null);
            }
        }
        public new void Sign <T>(IRequest <T> request, ICredentials credentials)
        {
            var sanitizedCredentials = this.SanitizeCredentials(credentials);
            var signerParams         = new SignerRequestParams <T>(request, this.regionName, this.serviceName, "SDK-HMAC-SHA256");

            this.AddHostHeader(request);
            request.AddHeader("X-Sdk-Date", signerParams.GetFormattedSigningDateTime());
            String contentSha256 = this.CalculateContentHash(request);

            /* Not support for now
             * String contentSha256 = this.calculateContentHash(request);
             * if ("required".equals(request.getHeaders().get("x-sdk-content-sha256")))
             * {
             *  request.addHeader("x-sdk-content-sha256", contentSha256);
             * }
             *
             * String canonicalRequest = this.createCanonicalRequest(request, contentSha256);
             * string stringToSign = this.CreateStringToSign(canonicalRequest, signerParams);
             * byte[] signingKey = this.deriveSigningKey(sanitizedCredentials, signerParams);
             * byte[] signature = this.computeSignature(stringToSign, signingKey, signerParams);
             */
            //byte[] signature = this.computeSignature(stringToSign, signingKey, signerParams);

            request.AddHeader("Authorization", this.BuildAuthorizationHeader(request, null, sanitizedCredentials, signerParams));
        }
        public Stream Wrap(Stream input, IRequest request)
        {
            Validator.RequireNotNull(input);
            Validator.RequireNotNull(request);

            //See https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html
            request.AddHeader(HttpHeaders.ContentEncoding, "aws-chunked");
            request.AddHeader(AmzHeaders.XAmzDecodedContentLength, input.Length);
            request.AddHeader(AmzHeaders.XAmzContentSha256, "STREAMING-AWS4-HMAC-SHA256-PAYLOAD");

            byte[] seedSignature = _signatureBuilder.CreateSignature(request);
            return(new ChunkedStream(_config, _chunkedSigBuilder, request, seedSignature, input));
        }
Exemplo n.º 4
0
 public void Authenticate(IRequest request)
 {
     if (!request.Headers.Keys.Contains("Authorization"))
     {
         request.AddHeader("Authorization", string.Format("Basic {0}", authentication));
     }
 }
Exemplo n.º 5
0
 public HttpHeaderParserTests()
 {
     _parser = new HttpHeaderParser();
     _parser.RequestLineParsed +=
         (sender, args) => { _request = new HttpRequest(args.Verb, args.Url, args.HttpVersion); };
     _parser.HeaderParsed += (sender, args) => { _request.AddHeader(args.Name, args.Value); };
     _parser.Completed    += (sender, args) => { _completed = true; };
 }
Exemplo n.º 6
0
        public static void AddHeader(this IRequest request, string key, IHttpHeaderBuilder builder)
        {
            if (builder == null)
            {
                return;
            }

            request.AddHeader(key, builder.Build());
        }
Exemplo n.º 7
0
        public static void AddHeader(this IRequest request, string key, long?value)
        {
            if (value == null)
            {
                return;
            }

            request.AddHeader(key, ValueHelper.LongToString(value.Value));
        }
Exemplo n.º 8
0
        public static void AddHeader <T>(this IRequest request, string key, T value) where T : struct, Enum
        {
            if (value.Equals(default(T)))
            {
                return;
            }

            request.AddHeader(key, ValueHelper.EnumToString(value));
        }
Exemplo n.º 9
0
        public static void AddHeader(this IRequest request, string key, bool?value, string falseLabel = "OFF", string trueLabel = "ON")
        {
            if (value == null)
            {
                return;
            }

            request.AddHeader(key, value.Value ? trueLabel : falseLabel);
        }
Exemplo n.º 10
0
        private void SetHeaders(IRequest request)
        {
            if (_headersFunc == null)
            {
                return;
            }

            foreach (var header in _headersFunc())
            {
                request.AddHeader(header.Key, header.Value);
            }
        }
Exemplo n.º 11
0
        public static void AddHeader(this IRequest request, string key, byte[] data, BinaryEncoding encoding)
        {
            if (data == null)
            {
                return;
            }

            switch (encoding)
            {
            case BinaryEncoding.Base64:
                request.AddHeader(key, Convert.ToBase64String(data));
                break;

            case BinaryEncoding.Hex:
                request.AddHeader(key, data.HexEncode());
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(encoding), encoding, null);
            }
        }
        protected void AddHostHeader <T>(IRequest <T> request)
        {
            var endpoint          = request.GetEndpoint();
            var hostHeaderBuilder = new StringBuilder(endpoint.Host);

            if (HttpUtils.IsUsingNonDefaultPort(endpoint))
            {
                hostHeaderBuilder.Append(":").Append(endpoint.Port);
            }

            request.AddHeader("Host", hostHeaderBuilder.ToString());
        }
Exemplo n.º 13
0
 private void SetRequest(IRequest request)
 {
     Authenticator?.Apply(this);
     request.Timeout = Timeout;
     if (AllowAutoRedirect)
     {
         request.AddObserver(new AutoRedictObserver());
     }
     request.AddHeader("content-type", ContentType);
     foreach (var header in _initHeaders)
     {
         request.AddHeader(header.Name, header.Value);
     }
     request.AddObserver(this);
     foreach (var observer in _observer)
     {
         request.AddObserver(observer);
     }
     foreach (var cookie in Cookies)
     {
         request.Cookies.AddOrUpdate(cookie.Name, cookie.Value);
     }
 }