public HttpRequestMessage Build(IMessageBuilder messageBuilder) { var message = messageBuilder.Build(); var request = new HttpRequestMessage(message.Method, message.RequestUri); var body = string.Empty; if ((message.Method == HttpMethod.Post || message.Method == HttpMethod.Post) && !string.IsNullOrEmpty(message.Content)) { body = message.Content; request.Content = new StringContent(body); } var timestamp = Timestamp; var nonce = Nonce; var url = new Uri(Configuration.ApiUrl, request.RequestUri); var signature = _signer.Sign(_secret, request.Method.Method, url.ToString(), body, nonce, timestamp); request.Headers.TryAddWithoutValidation("Authorization", _clientKey + ':' + signature); request.Headers.Add("X-Auth-Timestamp", timestamp); request.Headers.Add("X-Auth-Nonce", nonce); request.Headers.TryAddWithoutValidation("Content-Type", "application/json"); return(request); }
public async void CanSignRequest() { var signer = new HttpRequestMessageSigner(); var signature = signer.Sign(_secretKey, "GET", "https://api.itbit.com/v1", "", "123", "1234567890"); Assert.AreEqual("IbGoBftlsOV3oAzG1wkn5WHcBdS7cRzezJwm9CrwUetWp4ZheefJdI7mINW8bDgy38nI/w0TdmQqPfqjlK1Fqg==", signature); }