private static void TransformResponseHeaders(HttpResponseMessage response, string headerString) { Dictionary <string, string> headers = HeadersUtils.deSerializeHeaders(headerString); foreach (var h in headers) { string n = h.Key.Trim(); string v = h.Value.Trim(); if (HeadersUtils.isContentTypeHeader(n)) { try { response.Content.Headers.ContentType = new MediaTypeHeaderValue(v); } catch (Exception) { // Some content headers throw exception eg //The format of value 'text/plain; charset=utf-8' is invalid. response.Headers.TryAddWithoutValidation(n, v); } } else { response.Headers.TryAddWithoutValidation(n, v); } } return; }
public async static Task <EventRequestModel> genEventRequestModel(HttpMessage request, string ReqHeadersName, string RequestTimeName, string _ApiVersion) { var h = request.HttpRequestMessage; var reqBody = h.Content != null ? await h.Content.ReadAsStringAsync() : null; var reqHeaders = HeadersUtils.deSerializeHeaders(h.Properties[ReqHeadersName]); var reqBodyWrapper = BodyUtil.Serialize(reqBody); EventRequestModel moesifRequest = new EventRequestModel() { Time = (DateTime)h.Properties[RequestTimeName], Uri = h.RequestUri.OriginalString, Verb = h.Method.ToString(), Headers = reqHeaders, ApiVersion = _ApiVersion, IpAddress = null, Body = reqBodyWrapper.Item1, TransferEncoding = reqBodyWrapper.Item2 }; return(moesifRequest); }
public async static Task <EventRequestModel> genEventRequestModel(HttpMessage request, string ReqHeadersName, string RequestTimeName, string _ApiVersion, string clientIpAddress) { var h = request.HttpRequestMessage; var reqBody = h.Content != null ? await h.Content.ReadAsStringAsync() : null; var reqHeaders = HeadersUtils.deSerializeHeaders(h.Properties[ReqHeadersName]); var reqBodyWrapper = BodyUtil.Serialize(reqBody); EventRequestModel moesifRequest = new EventRequestModel() { Time = (DateTime)h.Properties[RequestTimeName], Uri = h.RequestUri.OriginalString, /* Uri = (String)request.HttpRequestMessage.Headers.GetValues("originalURL").FirstOrDefault(),*/ Verb = h.Method.ToString(), Headers = reqHeaders, ApiVersion = _ApiVersion, /*IpAddress = null,*/ /*IpAddress = (String)request.HttpRequestMessage.Headers.GetValues("clientIPAddress").FirstOrDefault(),*/ IpAddress = clientIpAddress, Body = reqBodyWrapper.Item1, TransferEncoding = reqBodyWrapper.Item2 }; return(moesifRequest); }
/** * From Http request and response, construct the moesif EventModel */ public async Task <EventModel> BuildMoesifEvent(HttpMessage request, HttpMessage response) { _Logger.LogDebug("Building Moesif event"); string clientIpAddress = ""; string subscriptionId = ""; string subscriptionName = ""; string correlationid = ""; Dictionary <string, string> reqheaders = HeadersUtils.deSerializeHeaders(request.HttpRequestMessage.Properties[ReqHeadersName]); foreach (var h in reqheaders) { string n = h.Key.Trim(); string v = h.Value.Trim(); if (n.Equals("clientIPAddress")) { clientIpAddress = v; } if (n.Equals("subscription_id")) { subscriptionId = v; } if (n.Equals("subscription_name")) { subscriptionName = v; } if (n.Equals("correlationid")) { correlationid = v; } } EventRequestModel moesifRequest = await genEventRequestModel(request, ReqHeadersName, RequestTimeName, _ApiVersion, clientIpAddress); EventResponseModel moesifResponse = await genEventResponseModel(response, clientIpAddress); Dictionary <string, object> metadata = genMetadata(request, MetadataName); metadata.Add("ApimSubscriptionId", subscriptionId); metadata.Add("ApimSubscriptionName", subscriptionName); metadata.Add("ApimCorrelationId", correlationid); string skey = safeGetHeaderFirstOrDefault(request, _SessionTokenKey); string userId = safeGetOrNull(request, UserIdName); string companyId = safeGetOrNull(request, CompanyIdName); EventModel moesifEvent = new EventModel() { Request = moesifRequest, Response = moesifResponse, SessionToken = skey, Tags = null, UserId = userId, CompanyId = companyId, Metadata = metadata, Direction = "Incoming" }; return(moesifEvent); }
public override string ToString() => HeadersUtils.ToString(this, this.Size);