Beispiel #1
0
        private async Task AddLogAsync(IWebHookWorkItem workItem, string error = null)
        {
            var log = new WebHookLog
            {
                Error                 = error,
                WebHookId             = workItem.WebHook.Id,
                WebHookNotificationId = workItem.Id
            };

            _context.Add(log);

            try
            {
                await _context.SaveChangesAsync();

                if (!string.IsNullOrEmpty(error))
                {
                    Logger.LogInformation(error);
                }
            }
            catch (Exception e)
            {
                if (!string.IsNullOrEmpty(error))
                {
                    Logger.LogError(error);
                }

                Logger.LogError($"Log failed for WebHook {workItem.WebHook.Id}. [{workItem.WebHook.Callback}]: {e.Message}");
            }
        }
Beispiel #2
0
        public IHttpActionResult post()
        {
            WebHookLog dbwl = new WebHookLog();

            // retrieve xero key
            var    xerosignature      = Request.Headers.GetValues("x-xero-signature").FirstOrDefault();
            var    payload            = Request.Content.ReadAsStringAsync().Result;
            String app_key            = "4q1NTvJRtUuiUCvpo3FKSd3NlAUom53uY+ODoyr4sskmxPa9JSZifVM7g8S8G8k7Ipwde6Hj3MFVXMnmyrD9pg==";
            string generatedsignature = "";

            using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(app_key)))
            {
                var messageBytes = Encoding.UTF8.GetBytes(payload);
                var hash         = hmac.ComputeHash(messageBytes);
                generatedsignature = Convert.ToBase64String(hash);
            }

            var isValid = generatedsignature == xerosignature;

            if (!isValid)
            {
                dbwl.body = "Invalid Xerosignature";
                dbwl.Date = DateTime.Now;
                db.WebHookLogs.Add(dbwl);
                db.SaveChanges();
                return(Unauthorized());
            }

            var xevents = JsonConvert.DeserializeObject <XeroWebhookEvents>(payload);

            foreach (Xerowebhookevent xevent in xevents.events)
            {
                switch (xevent.eventCategory)
                {
                case "INVOICE":

                    dbwl.body = "received xero web hook invoice ";
                    dbwl.Date = DateTime.Now;
                    db.WebHookLogs.Add(dbwl);
                    db.SaveChanges();
                    dbwl.body = payload;
                    dbwl.Date = DateTime.Now;
                    db.WebHookLogs.Add(dbwl);
                    db.SaveChanges();
                    var res1 = UNMSHelper.addPaymentFromXero(XeroHelper.getXeroInvoice(xevent.resourceId));
                    break;
                }
            }
            dbwl.body = "OK Valid";
            dbwl.Date = DateTime.Now;
            db.WebHookLogs.Add(dbwl);
            db.SaveChanges();
            return(Ok());
        }
Beispiel #3
0
        public IHttpActionResult post()
        {
            WebHookLog dbwl    = new WebHookLog();
            var        payload = Request.Content.ReadAsStringAsync().Result;

            dbwl.body = payload;
            dbwl.Date = DateTime.Now;
            db.WebHookLogs.Add(dbwl);
            db.SaveChanges();

            WebhookEvent uwebhook = JsonConvert.DeserializeObject <WebhookEvent>(payload);

            dbwl.body = uwebhook.entity.ToString();
            dbwl.Date = DateTime.Now;
            db.WebHookLogs.Add(dbwl);
            db.SaveChanges();



            switch (uwebhook.entity)
            {
            case "invoice":
                WebhookEventInvoice webhookinvoice = JsonConvert.DeserializeObject <WebhookEventInvoice>(payload);
                UNMSHelper.addorupdateInvoiceFromUNMS(webhookinvoice.extraData.entity);
                break;

            case "payment":
                WebhookEventPayment webhookpayment = JsonConvert.DeserializeObject <WebhookEventPayment>(payload);
                // check if it came from xero originally
                if (webhookpayment.extraData.entity.Note != "from Xero")
                {
                    UNMSHelper.addorupdatePaymentFromUNMS(webhookpayment.extraData.entity);
                }
                break;

            case "client":
                WebhookEventClient webhookclient = JsonConvert.DeserializeObject <WebhookEventClient>(payload);
                UNMSHelper.addorupdateClientFromUNMS(webhookclient.extraData.entity);
                break;

            case "ticket":
                WebhookEventTicket webhookticket = JsonConvert.DeserializeObject <WebhookEventTicket>(payload);
                UNMSHelper.editTicketFromUNMS(webhookticket.extraData.entity);
                break;
            }



            return(Ok());
        }
Beispiel #4
0
    public static bool httpPost(string entity, object entityObj)
    {
        var client = gethttpclient();

        var postdataJson    = JsonConvert.SerializeObject(entityObj);
        var postdataString  = new StringContent(postdataJson, new UTF8Encoding(), "application/json");
        var responseMessage = client.PostAsync(entity, postdataString).Result;
        var responseString  = responseMessage.Content.ReadAsStringAsync().Result;

        if (responseMessage.IsSuccessStatusCode)
        {
            return(true);
        }
        else
        {
            OrionAdminEntities db   = new OrionAdminEntities();
            WebHookLog         dbwl = new WebHookLog();
            dbwl.body = "err " + responseString;
            dbwl.Date = DateTime.Now;
            db.WebHookLogs.Add(dbwl);
            db.SaveChanges();
            return(false);
        };
    }