コード例 #1
0
        public async Task PostToDiscord(long webHookID, params int[] ids)
        {
            var webHook = WebHookDB[webHookID];

            if (webHook == null)
            {
                return;
            }

            //Maybe: Move post() to WebHook -> eliminate WebHookHelper

            var logs  = ids.Select(id => CacheLog(id)).ToArray();
            var posts = webHook.GetPosts(logs);

            try {
                await WebHookHelper.PostWebHookPosts(webHook, posts, Settings);
            }
            catch (WebException e)
            {
                Logger.Error("Exception in: LogUploaderLogic.PostToDiscord");
                Logger.LogException(e);
                if (e.InnerException != null)
                {
                    Logger.Error("Inner Exception:");
                    Logger.LogException(e);
                }

                MessageBox.Show(string.Format(Language.Data.MiscDiscordPostErrMsg, webHook.Name),
                                Language.Data.MiscDiscordPostErrTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public IActionResult Post([FromBody] JObject data)
        {
            _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - [STARTS]");

            // Checking if the request payload is null
            if (data != null)
            {
                _Logger.LogInformation("[" + _ClassName + "]  - POST - api/webhook -  Received Webhook Notification at ");

                var webhookSecret      = _AppSettings.WebhookSecret;
                var requestSignature   = Request.Headers["Elli-Signature"].ToString();
                var requestEnvironment = Request.Headers["Elli-Environment"].ToString();

                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - Request Elli-Signature - " + requestSignature);
                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - Request Elli-Environment - " + requestEnvironment);

                // generate the webhook token from the payload and secret using HMACSHA
                var webHookToken = WebHookHelper.GetWebhookNotificationToken(data.ToString(Formatting.None), webhookSecret);

                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - WebHook Data - " + data.ToString(Formatting.Indented));
                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - WebHook Token - " + webHookToken);

                // Check if the generated WebHook token is similar to the request signature received in the header.
                if (WebHookHelper.IsValidWebhookToken(requestSignature, webHookToken))
                {
                    var webHookBody = new WebhookNotificationBody()
                    {
                        eventId   = data.GetValue <string>("eventId"),
                        eventTime = data.GetValue <DateTime>("eventTime"),
                        eventType = data.GetValue <string>("eventType"),
                        meta      = data.GetValue <Meta>("meta")
                    };

                    var requestProcessor = new RequestProcessor(webHookBody, _Logger, _AppSettings);

                    // processing the webhook request here.
                    requestProcessor.ProcessWebhookRequest();
                }
                else
                {
                    _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - WebHook Token is Invalid ");
                }
            }

            _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - [ENDS]");

            return(Ok());
        }
コード例 #3
0
        public void UpdateWebHook()
        {
            if (!SupportsTesting)
            {
                return;
            }
            var sourceProject = gitLabWrapper.GetProject(MergeRequest.MergeRequest.SourceProjectId);
            var webHook       = gitLabWrapper.FindProjectHook(sourceProject, x => WebHookHelper.IsSharedHook(WebHook, x.Url));

            if (webHook != null && WebHookHelper.EnsureWebHook(webHook))
            {
                return;
            }

            var webHookTask = WebHookTask;
            var webHookPath = WebHook;

            if (string.IsNullOrEmpty(webHookTask) || string.IsNullOrEmpty(webHookPath))
            {
                return;
            }
            var farmStatus = FarmIntegrator.GetExtendedTaskStatus(webHookTask);

            if (farmStatus == null)
            {
                return;
            }
            var url = new Uri(WebHookHelper.GetSharedHookUrl(IPAddress.Parse(farmStatus.HyperHost), webHookPath));

            if (webHook == null)
            {
                gitLabWrapper.CreateProjectHook(sourceProject, url, true, true, true);
            }
            else
            {
                gitLabWrapper.UpdateProjectHook(sourceProject, webHook, url, true, true, true);
            }
        }
        public void Post([FromBody] JObject data)
        {
            _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - [STARTS]");

            // Checking if the request payload is null
            if (data != null)
            {
                _Logger.LogInformation("[" + _ClassName + "]  - POST - api/webhook -  Received Webhook Notification at ");

                var webhookSecret      = _AppSettings.WebhookSecret;
                var requestSignature   = Request.Headers["Elli-Signature"].ToString();
                var requestEnvironment = Request.Headers["Elli-Environment"].ToString();

                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - Request Elli-Signature - " + requestSignature);
                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - Request Elli-Environment - " + requestEnvironment);

                // generate the webhook token from the payload and secret using HMACSHA
                var webHookToken = WebHookHelper.GetWebhookNotificationToken(data.ToString(Formatting.None), webhookSecret);

                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - WebHook Data - " + data.ToString(Formatting.Indented));
                _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - WebHook Token - " + webHookToken);

                // Check if the generated WebHook token is similar to the request signature received in the header.
                if (WebHookHelper.IsValidWebhookToken(requestSignature, webHookToken))
                {
                    var webHookBody = new WebhookNotificationBody()
                    {
                        eventId   = data.GetValue <string>("eventId"),
                        eventTime = data.GetValue <DateTime>("eventTime"),
                        eventType = data.GetValue <string>("eventType"),
                        meta      = data.GetValue <Meta>("meta")
                    };

                    var transactionId = webHookBody.meta != null ? webHookBody.meta.resourceId : string.Empty;

                    _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - Transaction ID - " + transactionId);

                    var partnerAPIWrapper = new PartnerAPIWrapper(this._AppSettings);

                    // executing the Get Request Partner API Call here
                    var requestData = partnerAPIWrapper.GetRequest(transactionId);

                    if (requestData != null)
                    {
                        _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - Get Request Data is not null ");

                        var loanInformation = requestData;

                        // if the requestData is not null then the Partner will validate it against their business rules and if it is valid then they have to build their request here and submit it
                        // the response that they receive from their request will go back into the Partner API as a CreateResponse Partner API call

                        var validationInfo = MockResponseHelper.ValidateLoanData(requestData);

                        if (validationInfo != null && validationInfo["success"] != null)
                        {
                            var response = MockRequestHelper.SubmitToPartner(requestData, transactionId);

                            // This method will build the payload required for Creating Response in the Partner API
                            SubmitAcknowledgementToPartnerAPI(response, loanInformation, transactionId);
                        }
                        else
                        {
                            TransactionStatusCache.Instance.Add(transactionId, validationInfo);
                        }
                    }
                }
                else
                {
                    _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - WebHook Token is Invalid ");
                }
            }

            _Logger.LogInformation("[" + _ClassName + "] - POST - api/webhook - [ENDS]");
        }
コード例 #5
0
        public Task ChatBot(string authToken, string AuctionId, string phone)
        {
            try
            {
                phone = WebClientHelper.HandlePhoneFormat(phone);

                UserAuctionId[phone] = AuctionId;
                UserAuthToken[phone] = authToken;

                string APIUrl = $"checkout/cars/getauctiondetails?auctionid={AuctionId}&authtoken={authToken}&source = androidphone";

                var result = WebClientHelper.Consume(APIBaseUrl, HttpMethod.Get, APIUrl);

                UserAuctionDetails[phone] = JsonSerializer.Deserialize <AuctionDetailsVM>(result.Content.ReadAsStringAsync().Result);


                UserWatsonResult[phone] = _watsonHelper.Consume(phone, "hello", true);

                string message   = UserWatsonResult[phone].Output.Generic[0].Text.Replace("{SOPCode}", UserAuctionDetails[phone].SOPNumber).Replace("{TotalAmount}", UserAuctionDetails[phone].TotalAmount.ToString());
                var    send      = false;
                string carOption = "{0} lot# {1} with the price of {2} {3} ";
                for (int i = 0; i < UserAuctionDetails[phone].Cars.Count; i++)
                {
                    send = true;
                    var car = UserAuctionDetails[phone].Cars[i];
                    message += Environment.NewLine + (i + 1) + "-" + string.Format(carOption, car.makeEn + " " + car.modelEn, car.AuctionInfo.lot, car.AuctionInfo.currencyEn, car.AuctionInfo.currentPrice);
                }
                if (send)
                {
                    WebHookHelper.sendTXTMsg(phone, message);
                }

                message = string.Empty;
                if (!UserCars.ContainsKey(phone))
                {
                    UserCars[phone] = new List <CarVM>(UserAuctionDetails[phone].Cars);
                }
                var cars      = UserCars[phone];
                var carsCount = cars.Count;
                for (int i = 0; i < carsCount; i++)
                {
                    var car = cars[i];
                    if (car.BidderHyazaOrigin == string.Empty && car.RequireSelectHyaza == 1)
                    {
                        UserCarNum[phone] = i;
                        message           = _watsonHelper.Consume(phone).Output.Generic[0].Text;
                        message           = message.Replace("{CarNum}", car.makeEn + " " + car.modelEn).Replace("{number}", car.AuctionInfo.lot.ToString()).
                                            Replace("{currency}", car.AuctionInfo.currencyEn).Replace("{price}", car.AuctionInfo.currentPrice.ToString());

                        message += Environment.NewLine + "1- Abu Dhabi" + Environment.NewLine + "2- Dubai" + Environment.NewLine + "3- Sharja" + Environment.NewLine + "4- Ras Al Khaimah" +
                                   Environment.NewLine + "5- Fujairah" + Environment.NewLine + "6- Ajman" + Environment.NewLine + "7- Umm Al Quwian";

                        UserCars[phone].Remove(car);
                        _sessionsManager.UpdateSessionStep(phone);

                        break;
                    }
                    else if (car.DeliveryStatus != 1 && car.CheckOutInfo.HasSourceLocation == 1 && car.CheckOutInfo.AllowDeliveryRequest == 1)
                    {
                        UserCarNum[phone] = i;
                        _sessionsManager.UpdateSessionStep(phone, 3);
                        message = _watsonHelper.Consume(phone, "1").Output.Generic[0].Text.Replace("{CarNum}", car.makeEn + " " + car.modelEn).Replace("{lot}", car.AuctionInfo.lot.ToString());
                        UserCars[phone].Remove(car);
                        break;
                    }
                }
                WebHookHelper.sendTXTMsg(phone, message);
            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
            }

            return(null);
        }
コード例 #6
0
        public Task ChatBot([FromForm] object data)
        {
            try
            {
                var webHookMessage = JsonSerializer.Deserialize <WebhookResponse>(this.HttpContext.Request.Form["data"].ToString());

                var senderPhone = _config.GetValue <string>("SenderPhone");
                if (senderPhone == webHookMessage.from)
                {
                    return(null);
                }
                var userStep = _sessionsManager.GetSession(webHookMessage.from)?.LatestResponseStep;
                switch (userStep)
                {
                case 1:
                {
                    var car = UserAuctionDetails[webHookMessage.from].Cars[UserCarNum[webHookMessage.from]];

                    UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, webHookMessage.text);

                    string message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                    if (message.Contains("please select from choices"))
                    {
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                    }
                    else
                    {
                        using (var multiPartFormData = new MultipartFormDataContent())
                        {
                            multiPartFormData.Add(new StringContent(webHookMessage.from), "authtoken");
                            multiPartFormData.Add(new StringContent(car.AuctionInfo.lot.ToString()), "ciaid");
                            multiPartFormData.Add(new StringContent(Emirates.GetValueOrDefault(int.Parse(webHookMessage.text)).Key.ToString()), "hayazaOriginId");
                            var result = WebClientHelper.Consume(APIBaseUrl, HttpMethod.Get, "carsonline/updatehyazaorigin?source=androidphone", multiPartFormData);
                        }

                        UserSelectedEmirate[webHookMessage.from] = webHookMessage.text;
                        message = message.Replace("{number}", webHookMessage.text).Replace("{country}", Emirates.GetValueOrDefault(int.Parse(webHookMessage.text)).Value);
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                        _sessionsManager.UpdateSessionStep(webHookMessage.from);
                    }


                    break;
                }

                case 2:
                {
                    var car = UserAuctionDetails[webHookMessage.from].Cars[UserCarNum[webHookMessage.from]];



                    UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, webHookMessage.text);
                    var message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;

                    if (message.Contains("please type yes or no"))
                    {
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                    }
                    else if (UserWatsonResult[webHookMessage.from].Output.Entities[0].Value.Contains("no"))
                    {
                        message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text.Replace("{CarNum}", car.makeEn + " " + car.modelEn).Replace("{number}", car.AuctionInfo.lot.ToString()).
                                  Replace("{currency}", car.AuctionInfo.currencyEn).Replace("{price}", car.AuctionInfo.currentPrice.ToString());

                        message += Environment.NewLine + "1- Abu Dhabi" + Environment.NewLine + "2- Dubai" + Environment.NewLine + "3- Sharja" + Environment.NewLine + "4- Ras Al Khaimah" +
                                   Environment.NewLine + "5- Fujairah" + Environment.NewLine + "6- Ajman" + Environment.NewLine + "7- Umm Al Quwian";
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                        _sessionsManager.UpdateSessionStep(webHookMessage.from, 1);
                    }
                    else if (UserWatsonResult[webHookMessage.from].Output.Entities[0].Value.Contains("yes"))
                    {
                        message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text.Replace("{country}", Emirates.GetValueOrDefault(int.Parse(UserSelectedEmirate[webHookMessage.from])).Value).Replace("{lot}", car.AuctionInfo.lot.ToString());
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                        _sessionsManager.UpdateSessionStep(webHookMessage.from);
                    }

                    break;
                }

                case 3:
                {
                    if (webHookMessage.text.Contains("https://maps.google.com/maps?q="))
                    {
                        var locationText    = WebUtility.UrlDecode(webHookMessage.text);
                        var splits          = locationText.Split(new string[] { "?q=", "&" }, options: StringSplitOptions.RemoveEmptyEntries);
                        var locationLatLong = splits[1];
                        var locationSplits  = locationLatLong.Split(",");
                        var latitude        = locationSplits[0];
                        var longitude       = locationSplits[1];

                        UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, "1");
                        var message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                        _sessionsManager.UpdateSessionStep(webHookMessage.from);
                    }
                    else
                    {
                        UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from);
                        var message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                    }
                    break;
                }

                case 4:
                {
                    UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, webHookMessage.text);
                    var message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                    message += Environment.NewLine + "1- 9:00AM - 1:00PM" + Environment.NewLine + "2- 1:00PM - 5:00PM" + Environment.NewLine + "3- 5:00PM - 9:00PM";
                    WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                    _sessionsManager.UpdateSessionStep(webHookMessage.from);
                    break;
                }

                case 5:
                {
                    UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, webHookMessage.text);
                    var message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                    if (message.Contains("please choose from choices"))
                    {
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                    }
                    else
                    {
                        WebHookHelper.sendTXTMsg(webHookMessage.from, message);
                        _sessionsManager.UpdateSessionStep(webHookMessage.from);
                    }

                    break;
                }

                case 6:
                {
                    UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, webHookMessage.text);
                    var message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                    WebHookHelper.sendTXTMsg(webHookMessage.from, message);

                    var nextCars = UserCars[webHookMessage.from].Where(c => (string.IsNullOrEmpty(c.BidderHyazaOrigin) && c.RequireSelectHyaza == 1) ||
                                                                       (c.DeliveryStatus != 1 && c.CheckOutInfo.HasSourceLocation == 1 && c.CheckOutInfo.AllowDeliveryRequest == 1));
                    if (nextCars != null && nextCars.Any())
                    {
                        UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from, "1");
                        message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text.Replace("{lot}", nextCars.FirstOrDefault().AuctionInfo.lot.ToString());
                    }
                    else
                    {
                        UserWatsonResult[webHookMessage.from] = _watsonHelper.Consume(webHookMessage.from);
                        message = UserWatsonResult[webHookMessage.from].Output.Generic[0].Text;
                    }
                    WebHookHelper.sendTXTMsg(webHookMessage.from, message);

                    ChatBot(UserAuthToken[webHookMessage.from], UserAuctionId[webHookMessage.from], webHookMessage.from);

                    break;
                }



                default:
                {
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
            }
            return(null);
        }