internal static IRestRequest CreateRequest(this IApi api, IApiRequest request) { var client = api.GetClient(); var restRequest = new RestRequest($"{api.Location}/{request.Location}", request.Method); restRequest.AddHeader("Accept", api.GetAcceptHeader(request.AcceptType)); if (!string.IsNullOrEmpty(request.ContentType)) { restRequest.AddHeader("Content-Type", request.ContentType); } if (client.IsSandbox && (request is IGovTestScenario)) { restRequest.AddGovTestScenario(request as IGovTestScenario); } if (request is IDateRange) { restRequest.AddDateRangeParameters(request as IDateRange); } if (request.Authorization == Authorization.Application) { if (string.IsNullOrEmpty(client.ServerToken)) { throw new InvalidOperationException($"The {nameof(client.ServerToken)} cannot be empty"); } restRequest.AddHeader("Authorization", $"Bearer {client.ServerToken}"); } else if (request.Authorization == Authorization.User) { if (string.IsNullOrEmpty(client.AccessToken)) { throw new InvalidOperationException($"The {nameof(client.AccessToken)} cannot be empty"); } restRequest.AddHeader("Authorization", $"Bearer {client.AccessToken}"); } if (api is IRequiresAntiFraud) { if (client.AntiFraud == null) { throw new InvalidOperationException($"The {api.Name} requires Anti Fraud headers."); } foreach (var item in client.AntiFraud.GetAntiFraudHeaders()) { restRequest.AddHeader(item.Key, item.Value); } } request.PopulateRequest(restRequest); return(restRequest); }
internal static IRestRequest CreateRequest(this IApi api, IApiRequest request) { var client = api.GetClient(); var restRequest = new RestRequest($"{api.Location}/{request.Location}", request.Method); restRequest.AddHeader("Accept", api.GetAcceptHeader(request.AcceptType)); if (!string.IsNullOrEmpty(request.ContentType)) { restRequest.AddHeader("Content-Type", request.ContentType); } if (request is IGovTestScenario) { restRequest.AddGovTestScenario(request as IGovTestScenario); } if (request is IDateRange) { restRequest.AddDateRangeParameters(request as IDateRange); } if (request.Authorization == Authorization.Application) { restRequest.AddHeader("Authorization", $"Bearer {client.ServerToken}"); } else if (request.Authorization == Authorization.User) { restRequest.AddHeader("Authorization", $"Bearer {client.AccessToken}"); } request.PopulateRequest(restRequest); return(restRequest); }