Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 5
0
 public override string ToString() => HeadersUtils.ToString(this, this.Size);