예제 #1
0
        private void Update(EvaluationContext context)
        {
            var search         = Search.GetValue(context);
            var collectionId   = CollectionId.GetValue(context);
            var triggerRequest = TriggerRequest.GetValue(context);

            if (triggerRequest && (search != _searchQuery || collectionId != _collectionId))
            {
                TriggerRequest.Value = false;
                TriggerRequest.TypedInputValue.Value = false;
                TriggerRequest.DirtyFlag.Invalidate();
                _maxResultCount = MaxResultCount.GetValue(context);
                _apiToken       = ApiToken.GetValue(context);
                _searchQuery    = search;
                _collectionId   = collectionId;
                _request        = SearchImagesTask();
            }

            var photoIndex = GetPhotoIndex.GetValue(context);

            if (photoIndex != _photoIndex)
            {
                _photoIndex = photoIndex;
                if (_photos != null && _photos.Count != 0)
                {
                    var index = Math.Abs(_photoIndex) % _photos.Count;
                    PhotoAuthor.Value = _photos[index].User.Name;
                    PhotoUrl.Value    = _photos[index].Urls.Regular;
                    Log.Debug($"Update photo properties: Author {PhotoAuthor.Value}   Url {PhotoUrl.Value}");
                }
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            string name    = "TEST";
            string message = String.Empty;
            string uri     = "http://localhost:2525/alarm";

            bool   auth   = false;
            string user   = string.Empty;
            string pass   = string.Empty;
            string apikey = string.Empty;

            bool help = false;

            OptionSet paramset = new OptionSet()
            {
                { "m|message=", "The {MESSAGE} of the Triggertest.", s => message = s },
                { "n|name=", "The {NAME} of the Trigger to test.", s => name = s },
                { "u|uri=", "The {URI} to send the trigger request to.", s => uri = s },
                { "a|auth", "Authenticate at the server", s => auth = s != null },
                { "c|user="******"Authenticate as {USER}", s => user = s },
                { "k|key=", "Set API-Key to {KEY}", s => apikey = s },
                { "p|pass="******"Authenticate with password {PASSWORD}", s => pass = s },
                { "h|help", "Show help", v => help = v != null }
            };

            paramset.Parse(args);

            if (name == String.Empty)
            {
                Console.WriteLine("AlarmSystem TriggerTest Program");
                Console.WriteLine("By Merlin Steuer in 2015");
                Console.WriteLine();
                paramset.WriteOptionDescriptions(Console.Out);
            }
            else
            {
                TriggerRequest test = new TriggerRequest(name, (message == string.Empty), message, apikey);

                TriggerRequestSender sender = new TriggerRequestSender(uri);
                sender.Authenticate = auth;
                sender.Username     = user;
                sender.Password     = pass;
                sender.ApiKey       = apikey;

                if (sender.Send(test))
                {
                    Console.WriteLine("Success!");
                }
                else
                {
                    Console.WriteLine("Error!");
                }
            }
        }
예제 #3
0
        public async Task <ActionResult> Trigger([FromBody] TriggerRequest triggerRequest)
        {
            var response = _rabbitMqService.QueueTriggerRequest(triggerRequest);

            if (response.Status == QueueTriggerRequestStatus.Queued)
            {
                return(Ok(response.Status.ToString()));
            }

            throw new Exception("Failed to queue request.");
        }
예제 #4
0
        public static async Task <HttpResponseMessage> TriggerMethod([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]
                                                                     TriggerRequest req, [DurableClient] IDurableOrchestrationClient starter, ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            var instanceId = Guid.NewGuid().ToString();

            try
            {
                instanceId = await starter.StartNewAsync <(string, string)> (nameof(OrchestrationFunction.Orchestrate), instanceId, ("input1", "input2"));
            }
            catch (Exception e)
            {
                log.LogError("something went wrong in trigger");
                throw e;
            }

            return(starter.CreateCheckStatusResponse(req, instanceId));
        }
예제 #5
0
        public TriggerResponse QueueTriggerRequest(TriggerRequest triggerRequest)
        {
            try
            {
                _rabbitMqClient.PublishMessage(triggerRequest);

                return(new TriggerResponse()
                {
                    Status = QueueTriggerRequestStatus.Queued
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new TriggerResponse()
                {
                    Status = QueueTriggerRequestStatus.FailedToQueue
                });
            }
        }
예제 #6
0
        public bool Send(TriggerRequest request)
        {
            using (HttpClient client = new HttpClient())
            {
                XDocument doc = new XDocument();
                XElement  root;
                doc.Add(root = new XElement("Request"));
                root.Add(new XElement("ApiKey", ApiKey));
                root.Add(new XElement("Type", "TriggerRequest"));

                root.Add(XElement.Parse(request.ToString()));

                HttpContent content = new StringContent(doc.ToString(), Encoding.UTF8);

                if (Authenticate)
                {
                    string authString = String.Format("{0}:{1}", Username, Password);

                    var bytes  = Encoding.UTF8.GetBytes(authString);
                    var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(bytes));

                    client.DefaultRequestHeaders.Authorization = header;
                }

                using (HttpResponseMessage resp = client.PostAsync(_uri, content).Result)
                {
                    Console.WriteLine(resp.StatusCode);
                    if (resp.IsSuccessStatusCode)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
        }
예제 #7
0
        private RequestProcessingResult ProcessRequestString(string requestString)
        {
            Log.Add(LogLevel.Verbose, PluginName, requestString);
            XDocument doc  = XDocument.Parse(requestString);
            XElement  root = doc.Element("Request");

            if (root == null)
            {
                return(RequestProcessingResult.XmlError);
            }

            XElement typeElement = root.Element("Type");
            XElement keyElement  = root.Element("ApiKey");

            string source = string.Empty;

            if (typeElement == null)
            {
                return(RequestProcessingResult.XmlError);
            }

            if (keyElement == null)
            {
                return(RequestProcessingResult.XmlError);
            }

            // Resolve API-Key

            MySqlCommand cmd = DatabaseService.TryCreateCommand();

            string sql = "SELECT name FROM api_keys WHERE `key`=@key";

            cmd.CommandText = sql;
            cmd.Parameters.AddWithValue("key", keyElement.Value);

            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    source = reader.GetString("name");

                    reader.Close();

                    Log.Add(LogLevel.Verbose, PluginName, string.Format("Found application {0} for key {1}", source, keyElement.Value));
                }
                else
                {
                    Log.Add(LogLevel.Warning, PluginName, "No Application found for key " + keyElement.Value);
                    return(RequestProcessingResult.ApiKeyError);
                }
            }

            // Execute Request
            string type = typeElement.Value;

            if (type.Equals("TriggerRequest"))
            {
                XElement requestElement = root.Element("TriggerRequest");

                if (requestElement != null)
                {
                    TriggerRequest request = TriggerRequest.Parse(requestElement.ToString());
                    request.Source = source;

                    if (OnTriggerRequest != null)
                    {
                        OnTriggerRequest(this, request);
                    }

                    return(RequestProcessingResult.Success);
                }
                else
                {
                    return(RequestProcessingResult.XmlError);
                }
            }
            else
            {
                return(RequestProcessingResult.UnknownRequest);
            }
        }
예제 #8
0
 public void HandleTriggerRequest(object sender, TriggerRequest request)
 {
     Log.Add(LogLevel.Debug, "Trigger", "Received trigger request");
     ExecuteTrigger(request.TriggerText, request.SendDefaultMessage, request.Message, request.Source);
 }
 public void Put([FromBody] TriggerRequest triggerRequest)
 {
 }
예제 #10
0
 /// <summary> Setter constructor. </summary>
 public Trigger(TriggerRequest request)
 {
     Request  = request;
     Response = new TriggerResponse();
 }
예제 #11
0
 /// <summary>
 /// When a triggering request is sent to the producer from <see cref="FeedProducerAsync"/>, the producer pushes this request to the Extraction step to initiate the ETL process.
 /// You can pass any custom data in your request's payload, if necessary.
 /// </summary>
 /// <param name="request"></param>
 /// <returns>A task to monitor the extraction step.</returns>
 protected abstract Task <TExtractorResult> ExtractAsync(TriggerRequest request);
 /// <summary>
 /// used by Workflows to check for trigger events. Polled periodically.
 /// </summary>
 /// <param name="request">The request received from the client.</param>
 /// <param name="context">The context of the server-side call handler being invoked.</param>
 /// <returns>The response to send back to the client (wrapped by a task).</returns>
 public override Task <TriggerResponse> perform_trigger(TriggerRequest request, ServerCallContext context)
 {
     //return null;
     //return new Task<TriggerResponse>(() => { return new TriggerResponse(); });
     return(Task.FromResult(new TriggerResponse()));
 }