예제 #1
0
        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);
        }
예제 #2
0
        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);
        }