public MoesifResponse(JObject response)
 {
     eventType       = JObjectUtil.getString(response, MessageCommonParams.EVENT_TYPE);
     messageId       = JObjectUtil.getString(response, MessageCommonParams.MESSAGE_ID);
     statusCode      = JObjectUtil.getString(response, MessageResponseParams.STATUS_CODE);
     responseHeaders = JObjectUtil.getString(response, MessageResponseParams.HEADERS);
     responseBody    = JObjectUtil.getString(response, MessageResponseParams.BODY);
 }
        public static HttpMessage Parse(string data)
        {
            var httpMessage = new HttpMessage();
            var request     = new HttpRequestMessage();
            var response    = new HttpResponseMessage();

            // Convert the data into json object
            dynamic jsonObject = JsonConvert.DeserializeObject(data);

            if (JObjectUtil.containsKeyWithNonEmptyString(jsonObject, MessageCommonParams.EVENT_TYPE) &&
                JObjectUtil.containsKeyWithNonEmptyString(jsonObject, MessageCommonParams.MESSAGE_ID))
            {
                if (jsonObject[MessageCommonParams.EVENT_TYPE] == MessageTypeParams.REQUEST)
                {
                    httpMessage.IsRequest = true;
                    MoesifRequest mo_req = new MoesifRequest(jsonObject);
                    httpMessage.MessageId = Guid.Parse(mo_req.messageId);
                    request.Method        = new HttpMethod(mo_req.method.ToUpper());
                    request.RequestUri    = new Uri(mo_req.uri);
                    request.Properties.Add("UserId", mo_req.userId);
                    request.Properties.Add("CompanyId", mo_req.companyId);
                    request.Properties.Add("ReqHeaders", mo_req.requestHeaders);
                    request.Properties.Add("Metadata", mo_req.metadata);
                    request.Content = new StringContent(mo_req.requestBody);
                    httpMessage.ContextRequestIpAddress = mo_req.ipAddress;
                    httpMessage.ContextRequestUser      = mo_req.contextRequestUser;
                }
                else
                {
                    httpMessage.IsRequest = false;
                    MoesifResponse mo_res = new MoesifResponse(jsonObject);
                    httpMessage.MessageId = Guid.Parse(mo_res.messageId);
                    response.StatusCode   = (HttpStatusCode)Convert.ToInt32(mo_res.statusCode);
                    response.Content      = new StringContent(mo_res.responseBody);
                    TransformResponseHeaders(response, mo_res.responseHeaders);
                }
            }
            else
            {
                throw new ArgumentException("Invalid formatted event :" + data);
            }

            if (httpMessage.IsRequest)
            {
                httpMessage.HttpRequestMessage = request;
            }
            else
            {
                httpMessage.HttpResponseMessage = response;
            }
            return(httpMessage);
        }
 public MoesifRequest(JObject request)
 {
     eventType          = JObjectUtil.getString(request, MessageCommonParams.EVENT_TYPE);
     messageId          = JObjectUtil.getString(request, MessageCommonParams.MESSAGE_ID);
     method             = JObjectUtil.getString(request, MessageRequestParams.METHOD);
     uri                = JObjectUtil.getString(request, MessageRequestParams.URI);
     ipAddress          = JObjectUtil.getString(request, MessageRequestParams.IP_ADDR);
     userId             = JObjectUtil.getString(request, MessageRequestParams.USER_ID);
     companyId          = JObjectUtil.getString(request, MessageRequestParams.COMPANY_ID);
     requestHeaders     = JObjectUtil.getString(request, MessageRequestParams.HEADERS);
     requestBody        = JObjectUtil.getString(request, MessageRequestParams.BODY);
     metadata           = JObjectUtil.getObjectDict(request, MessageRequestParams.METADATA);
     contextRequestUser = JObjectUtil.getStringDefaultVal(request, MessageRequestParams.CONTEXT_USER, null);
 }
 public static Boolean containsKeyWithNonEmptyString(JObject j, String key)
 {
     return(j.ContainsKey(key) && !String.IsNullOrEmpty(JObjectUtil.getString(j, key)));
 }