private void ApiKeyAuth(ClientFlurlHttpSettings settings, CoinbaseClient client) { async Task SetHeaders(FlurlCall http) { var body = http.RequestBody; var method = http.Request.Verb.Method.ToUpperInvariant(); var url = http.Request.Url.ToUri().PathAndQuery; string timestamp; if (this.UseTimeApi) { var timeResult = await client.Data.GetCurrentTimeAsync().ConfigureAwait(false); timestamp = timeResult.Data.Epoch.ToString(); } else { timestamp = TimeHelper.GetCurrentUnixTimestampSeconds().ToString(CultureInfo.CurrentCulture); } var signature = ApiKeyAuthenticator.GenerateSignature(timestamp, method, url, body, this.ApiSecret); http.Request .WithHeader(HeaderNames.AccessKey, this.ApiKey) .WithHeader(HeaderNames.AccessSign, signature) .WithHeader(HeaderNames.AccessTimestamp, timestamp); } settings.BeforeCallAsync = SetHeaders; }
private void UseOAuth(ClientFlurlHttpSettings settings, CoinbaseClient client) { async Task ApplyAuthorization(FlurlCall call) { call.Request.WithOAuthBearerToken(this.AccessToken); } settings.BeforeCallAsync = ApplyAuthorization; }
protected internal override void Configure(CoinbaseClient client) { client.Configure(settings => ApiKeyAuth(settings, client)); }
protected internal virtual void Configure(CoinbaseClient client) { }