private async Task <HttpRequestMessage> GetRequestMessage(HttpMethod method)
        {
            var apiKey    = HttpContext.Items[ApiHttpHeaders.ApiKey].ToString();
            var apiId     = HttpContext.Items[ApiHttpHeaders.ApiId].ToString();
            var serviceId = HttpContext.Items[ApiHttpHeaders.ServiceId].ToString();
            var clientId  = HttpContext.Items[ApiHttpHeaders.KeyId].ToString();

            var api = await _apiManager.Get(apiKey, apiId);

            var service = await _serviceManager.Get(apiKey, serviceId);

            var queryString = GetQueryString(api.Name, service.Name);
            var fullUrl     = api.Url;

            if (!string.IsNullOrWhiteSpace(queryString))
            {
                if (fullUrl.EndsWith("/") || queryString.StartsWith("/"))
                {
                    fullUrl += queryString;
                }
                else
                {
                    fullUrl += "/" + queryString;
                }
            }
            var request = new HttpRequestMessage(method, fullUrl);

            request.Headers.Add("clientid", clientId);
            request.Headers.Add("apiid", apiId);
            request.Headers.Add("apigateway-url", Request.GetDisplayUrl());

            if (api.CustomHeaders.Keys.Count > 0)
            {
                foreach (var key in api.CustomHeaders.Keys)
                {
                    request.Headers.Add(key, api.CustomHeaders[key]);
                }
            }

            return(request);
        }
示例#2
0
 public async Task <ApiModel> GetById(string id)
 {
     return(await _manager.Get(ApiKey, id));
 }