public Compose() { var timeOfComposing = new DateTimeOffset(2020, 2, 24, 11, 20, 14, TimeSpan.FromHours(1)); var expires = TimeSpan.FromMinutes(5); var httpRequest = new HttpRequestForSignatureString { Method = HttpMethod.Post, RequestUri = "http://dalion.eu/api/resource/id1".ToUri() }; var headerNames = new[] { HeaderName.PredefinedHeaderNames.RequestTarget, HeaderName.PredefinedHeaderNames.Date, new HeaderName("dalion_app_id") }; var requestTargetEscaping = RequestTargetEscaping.Unescaped; var nonce = "abc123"; _compositionRequest = new SigningStringCompositionRequest { Request = httpRequest, Expires = expires, Nonce = nonce, HeadersToInclude = headerNames, RequestTargetEscaping = requestTargetEscaping, TimeOfComposing = timeOfComposing }; FakeFactory.Create(out _headerAppender); A.CallTo(() => _headerAppenderFactory.Create( _compositionRequest.Request, _compositionRequest.RequestTargetEscaping, _compositionRequest.TimeOfComposing, _compositionRequest.Expires)) .Returns(_headerAppender); }
public string Compose(SigningStringCompositionRequest compositionRequest) { if (compositionRequest == null) { throw new ArgumentNullException(nameof(compositionRequest)); } var headerAppender = _headerAppenderFactory.Create( compositionRequest.Request, compositionRequest.RequestTargetEscaping, compositionRequest.TimeOfComposing, compositionRequest.Expires); var sb = new StringBuilder(); foreach (var headerName in compositionRequest.HeadersToInclude.Where(h => h != HeaderName.Empty)) { sb = sb.Append(headerAppender.BuildStringToAppend(headerName)); } sb.Append(_nonceAppender.BuildStringToAppend(compositionRequest.Nonce)); return(sb.ToString().TrimStart()); }