private HttpRequestMessage GetRequest(HttpContext context, ServiceConfig config)
        {
            var request = new HttpRequestMessage
            {
                Method = new HttpMethod(context.Request.Method)
            };

            if (!StringComparer.OrdinalIgnoreCase.Equals(context.Request.Method, "GET") &&
                !StringComparer.OrdinalIgnoreCase.Equals(context.Request.Method, "HEAD") &&
                !StringComparer.OrdinalIgnoreCase.Equals(context.Request.Method, "DELETE") &&
                !StringComparer.OrdinalIgnoreCase.Equals(context.Request.Method, "TRACE"))
            {
                request.Content = new StreamContent(context.Request.Body);
            }

            foreach (var header in context.Request.Headers)
            {
                if (request.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()))
                {
                    continue;
                }

                request.Content.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray());
            }

            request.RequestUri   = config.GetRequestUri(context.Request.Path, context.Request.QueryString.ToString());
            request.Headers.Host = config.GetHost();

            var systemToken = _jwtTokenService.GenerateSystemToken(context.User.Claims);

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", systemToken);

            return(request);
        }