コード例 #1
0
ファイル: Functions.cs プロジェクト: tohling/IoTHubPrototype
        public static void TimerIoT(
            [TimerTrigger("*/5 * * * * *", RunOnStartup = true, UseMonitor = false)] TimerInfo timer,
            [IoTHubInput] ServiceClient client,
            [IoTHub("myDevice")] out string output,
            [IoTHub("myDevice")] out byte[] arr,
            [IoTHub("myDevice")] ICollector <string> coll,
            [IoTHub("myDevice")] out JObject jobj)
        {
            Console.WriteLine("timer");
            client.SendAsync("myDevice", new Message(Encoding.UTF8.GetBytes("client"))).GetAwaiter().GetResult();
            output = "string";
            arr    = Encoding.UTF8.GetBytes("array");
            coll.Add("collstring");
            var message = new Message();

            jobj = JObject.Parse("{ \"to\": \"something\", \"body\": \"body\", \"properties\": { \"a\": \"b\"} }");
        }
コード例 #2
0
        public static async Task <string> RunAsync(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req,
            [ServiceBus("my-queue", Connection = "SBConnectionString")] ICollector <string> queue,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function precessing a request.");

            var body  = await new StreamReader(req.Body).ReadToEndAsync();
            var count = int.Parse(body);

            for (int i = 0; i < count; i++)
            {
                queue.Add(i.ToString());
            }

            return($"produced {count} messages");
        }
コード例 #3
0
ファイル: Queue-Table.cs プロジェクト: neckata/Azure
        // The ICollector interface is to write multiple to the output
        public static void Run(
            [QueueTrigger("appqueue", Connection = "storage_connection")] JObject myQueueItem,
            [Table("Customer", Connection = "storage_connection")] ICollector <Customer> outputTable,
            [Queue("newqueue", Connection = "storage_connection")] ICollector <Customer> outputQueue,
            [Blob("data/{rand-guid}", FileAccess.Write, Connection = "storage_connection")] TextWriter blobOutput,
            ILogger log)
        {
            log.LogInformation("Adding Customer");
            Customer obj = new Customer();

            obj.PartitionKey = myQueueItem["Id"].ToString();
            obj.RowKey       = myQueueItem["Quantity"].ToString();
            outputTable.Add(obj); // Use ICollector<T>
            outputQueue.Add(obj); // The output can be an object serializable as JSON, string, byte[] and CloudQueueMessage
            blobOutput.Write($"Partition Key {obj.PartitionKey}");
            // For blob, you have an output of Stream, string, CloudBlockBlob
        }
コード例 #4
0
        public static void Run([BlobTrigger("cosmosdb-blob/{name}", Connection = "BlobConnection")] Stream myBlob, string name, TraceWriter log,
                               [DocumentDB("Wedding", "guestcollection", ConnectionStringSetting = "CosmosDBConnection")] ICollector <WeddingGuest> documentDB)
        {
            //https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library

            log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            var reader           = new StreamReader(myBlob);
            var textAsString     = reader.ReadToEnd();
            var weddingGuestList = JsonConvert.DeserializeObject <WeddingGuestRequest>(textAsString);

            foreach (var guest in weddingGuestList.WeddingGuests)
            {
                guest.PartitionKey = guest.Id.ToString();
                guest.RowKey       = guest.Name;
                documentDB.Add(guest);
            }
        }
コード例 #5
0
        public static void Run([TimerTrigger("*/5 * * * * *")] TimerInfo myTimer,
                               [EventHub("truckevent", Connection = "EventHub")] ICollector <string> outputEventHubMessage,
                               TraceWriter log)
        {
            int trucksPerHour;
            int currentTrucks;

            var sql = @"SELECT SettingValue FROM dbo.Settings
                    WHERE SettingName = 'TrucksPerHour'";

            var trucks = @"SELECT Count(*) FROM dbo.Truck
                    WHERE EnterDCTime >= DATEADD(hour, -1, getdate())";

            var addTruck = @"INSERT INTO dbo.Truck
                    (Pallets, EnterDCTime)
                    OUTPUT inserted.TruckId
                    VALUES
                    (@Pallets, @EnterDCTime)";

            var str = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(str))
            {
                trucksPerHour = Int32.Parse(conn.Query <string>(sql).FirstOrDefault());

                currentTrucks = conn.Query <int>(trucks).FirstOrDefault();

                while (ProbabilityCheck.ShouldCreate(trucksPerHour, currentTrucks))
                {
                    var truck = new Truck();

                    truck.Pallets     = ProbabilityCheck.PalletCount();
                    truck.EnterDCTime = DateTime.UtcNow;

                    var truckId = conn.Query <int>(addTruck, truck).FirstOrDefault();

                    truck.TruckId = truckId;

                    string json = JsonConvert.SerializeObject(truck);

                    outputEventHubMessage.Add(json);

                    currentTrucks++;
                }
            }
        }
コード例 #6
0
 public static void ProcessOrders(
     [QueueTrigger("incoming-orders",
                   Connection = "AzureWebJobsStorage")]
     CloudQueueMessage queueItem,
     [Table("Orders",
            Connection = "AzureWebJobsStorage")]
     ICollector <Order> tableBindings,
     ILogger log)
 {
     log.LogInformation($"Processing Order (mesage Id): {queueItem.Id}");
     log.LogInformation($"Processing at: {DateTime.UtcNow}");
     log.LogInformation($"Queue Insertion Time: {queueItem.InsertionTime}");
     log.LogInformation($"Queue Insertion Time: {queueItem.ExpirationTime}");
     log.LogInformation($"Data: {queueItem.AsString}");
     tableBindings.Add(JsonConvert.DeserializeObject <Order>(
                           queueItem.AsString));
 }
コード例 #7
0
        public static void Run([QueueTrigger("incoming", Connection = "AzureWebJobsStorage")] string json,
                               [Queue("contacts", Connection = "AzureWebJobsStorage")] ICollector <Contact> contacts,
                               [Queue("messages", Connection = "AzureWebJobsStorage")] ICollector <Message> messages,
                               ILogger log)
        {
            var update = JsonConvert.DeserializeObject <Update>(json);

            log.LogInformation($"C# Queue trigger function processed: {update.Type}");

            if (update.Type != UpdateType.Message || update.Message == null)
            {
                return; // only handle message updates
            }

            // get user
            if (update.Message.Contact != null)
            {
                if (update.Message.Contact.UserId == update.Message.Chat.Id)
                {
                    var phonenumber = update.Message.Contact.PhoneNumber;
                    phonenumber = phonenumber.Replace("+", "");
                    contacts.Add(new Contact {
                        PhoneNumber = phonenumber,
                        RowKey      = update.Message.Chat.Id.ToString()
                    });
                    return;
                }
            }

            var text = update.Message.Text.ToLower();

            if (text == "/streak" || text == "/start" || text == "/hjelp")
            {
                messages.Add(new Message()
                {
                    ChatId = update.Message.Chat.Id.ToString(),
                    Text   = text
                });
                return;
            }

            else
            {
                // send about message?
            }
        }
コード例 #8
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            [Queue("surveydata"), StorageAccount("AzureWebJobsStorage")] ICollector <SurveyItem> msg,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var    item        = JsonConvert.DeserializeObject <SurveyItem>(requestBody);

            // Add a message to the output collection.
            msg.Add(item);

            var referenceNumber = Guid.NewGuid().ToString();

            return((ActionResult) new OkObjectResult(referenceNumber));;
        }
コード例 #9
0
        public static void AddEvents([Table("events")] ICollector <Event> tableBinding, TextWriter logger)
        {
            var qty = 10000;

            for (int i = 0; i < qty; i++)
            {
                tableBinding.Add(new Event
                {
                    PartitionKey = "sensor",
                    RowKey       = i.ToString(),
                    Time         = DateTime.UtcNow,
                    Name         = "Event" + i.ToString()
                });

                logger.WriteLine("Added event #{0}", i);
            }
        }
コード例 #10
0
        public static async Task Run(
            [CosmosDBTrigger(
                 databaseName: "jjdb",
                 collectionName: "votes",
                 ConnectionStringSetting = "jjcosmos_DOCUMENTDB",
                 LeaseCollectionName = "leases",
                 CreateLeaseCollectionIfNotExists = true)] IReadOnlyList <Document> inputDocuments,
            [CosmosDB(
                 databaseName: "jjdb",
                 collectionName: "articles",
                 ConnectionStringSetting = "jjcosmos_DOCUMENTDB")] DocumentClient client,
            [CosmosDB(
                 databaseName: "jjdb",
                 collectionName: "articles",
                 ConnectionStringSetting = "jjcosmos_DOCUMENTDB")]
            ICollector <ArticleItem> articlesOut,
            ILogger log)
        {
            if (inputDocuments != null && inputDocuments.Count > 0)
            {
                log.LogInformation("Like process triggered, received document count: " + inputDocuments.Count.ToString());

                foreach (Document input in inputDocuments)
                {
                    string articleId = input.GetPropertyValue <string>("articleid");
                    log.LogInformation("Processing articleId " + articleId);

                    Uri collectionUri = UriFactory.CreateDocumentCollectionUri("jjdb", "articles");
                    IDocumentQuery <ArticleItem> query = client.CreateDocumentQuery <ArticleItem>(collectionUri)
                                                         .Where(p => p.articleid == articleId)
                                                         .AsDocumentQuery();

                    while (query.HasMoreResults)
                    {
                        foreach (ArticleItem result in await query.ExecuteNextAsync())
                        {
                            log.LogInformation(result.voteCount.ToString());
                            result.voteCount++;
                            articlesOut.Add(result);
                            log.LogInformation("Processed articleId " + articleId + " with voteCount " + result.voteCount.ToString());
                        }
                    }
                }
            }
        }
コード例 #11
0
            public static async Task <AskQuestionResponse> AnswerQuestion(AskQuestionRequest request, ICollector <SessionTableEntity> sessionTable)
            {
                // Get unique identifier
                string   id           = Guid.NewGuid().ToString();
                DateTime timestampUtc = DateTime.UtcNow;

                // Get key phrases extraction
                request.Topics = await ServicesUtility.GetTopics(request.Question, request.Topics);

                string queryWithTopics = request.Topics?.Count() > 0 ? string.Join(" ", request.Topics).Trim() : request.Question;

                // Create video indexer task
                VideoIndexerSearchResult videoIndexerResult = await ServicesUtility.VideoIndexer.SearchAsync(query : queryWithTopics);


                // Process results
                AskQuestionResponse response = new AskQuestionResponse()
                {
                    Id      = id,
                    Results = new AskQuestionResult[0]
                };

                if (videoIndexerResult.Results?.Count() > 0)
                {
                    response.Results = ServicesUtility.GetAskQuestionResults(videoIndexerResult);
                }
                else
                {
                    // Create Bing Search tasks
                    BingWebSearchResult bingWebSearchResult =
                        await ServicesUtility.BingSearch.SearchWebAsync(query : request.Question, count : SettingsUtility.MaxResultsCount);

                    // Process Bing search results
                    if (bingWebSearchResult.WebPagesResult?.Values?.Count() > 0)
                    {
                        response.Results = ServicesUtility.GetAskQuestionResults(bingWebSearchResult);
                    }
                }

                // Write to session table
                sessionTable.Add(new SessionTableEntity(id, timestampUtc, "LearnMore", request, response));

                // Return response
                return(response);
            }
コード例 #12
0
ファイル: GetCustomers.cs プロジェクト: bhrugu4me/RMSFull
        public static async Task <HttpResponseMessage> Run(HttpRequestMessage req, ICollector <string> errormessage, TraceWriter log)
        {
            log.Verbose($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");
            try
            {
                JObject data = await req.Content.ReadAsAsync <JObject>();

                log.Verbose($"received data :={data}", "JE.RMS.Services.GetCustomers");

                List <SqlParameter> objprm = new List <SqlParameter>();
                objprm.Add(new SqlParameter("@pageNumber", Convert.ToInt32(data.SelectToken("pageNumber").ToString().TrimStart('{').TrimEnd('}'))));
                objprm.Add(new SqlParameter("@pageSize", Convert.ToInt32(data.SelectToken("pageSize").ToString().TrimStart('{').TrimEnd('}'))));
                objprm.Add(new SqlParameter("@searchText", data.SelectToken("searchText") == null?"" : data.SelectToken("searchText").ToString().TrimStart('{').TrimEnd('}')));

                log.Verbose($"calling sp", "JE.RMS.Services.GetCustomers");

                List <Common.Model.Customer> retobj = MSSQLConnection.ExecuteStoredProcedure <Common.Model.Customer>(Common.Constants.USPContstants.GetCustomers, objprm);

                Common.Model.CustomerList obj = new Common.Model.CustomerList();
                if (retobj.Count > 0)
                {
                    obj.TotalRows = retobj.FirstOrDefault().TotalRows;
                }
                else
                {
                    obj.TotalRows = 0;
                }
                obj.Users = new List <Common.Model.Customer>();
                obj.Users = retobj;


                log.Verbose($"received response:={obj}", "JE.RMS.Services.GetCustomers");

                var CustomerResponse = req.CreateResponse(HttpStatusCode.OK);
                CustomerResponse.Content = new StringContent(JsonConvert.SerializeObject(obj), System.Text.Encoding.UTF8, "application/json");
                return(CustomerResponse);
                //return req.CreateResponse(HttpStatusCode.OK, obj);
            }
            catch (Exception ex)
            {
                log.Error($"Exception ={ex}");
                errormessage.Add(JsonConvert.SerializeObject(ex).ToString());
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
コード例 #13
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "users/{userId}/subscriptions")]
            HttpRequestMessage req,
            string userId,
            [Table(TableNames.GroupEventSubscription, Connection = "AzureWebJobsStorage")]
            ICollector <GroupEventSubscriptionEntity> outTable,
            TraceWriter log)
        {
            var json = await req.Content.ReadAsStringAsync();

            var model = JsonConvert.DeserializeObject <GroupEventSubscriptionModel>(json);


            if (model?.Type != "GroupEvent")
            {
                return(req.CreateResponse(HttpStatusCode.BadRequest, $"Subscription type '{model?.Type}' not supported"));
            }

            if (string.IsNullOrEmpty(model.Name) || string.IsNullOrEmpty(model.UrlName))
            {
                return(req.CreateResponse(HttpStatusCode.BadRequest, "Name and UrlName are all required for creating a subscription"));
            }

            if (!model.EndpointUrl.IsAbsoluteUri ||
                !new[] { Uri.UriSchemeHttp, Uri.UriSchemeHttps }.Contains(model.EndpointUrl.Scheme))
            {
                return(req.CreateResponse(HttpStatusCode.BadRequest, "A Valid http or https endpoint url is required for creating a subscription"));
            }

            var id = Guid.NewGuid().ToString();

            outTable.Add(new GroupEventSubscriptionEntity()
            {
                PartitionKey = userId,
                RowKey       = id,
                Name         = model.Name,
                UrlName      = model.UrlName,
                OnCreated    = model.OnCreated,
                OnUpdated    = model.OnUpdated,
                OnDeleted    = model.OnDeleted,
                EndpointUrl  = model.EndpointUrl
            });

            return(req.CreateResponse(HttpStatusCode.Created, new { id }));
        }
コード例 #14
0
        public static async Task <HttpResponseMessage> Run(HttpRequestMessage req, ICollector <string> errormessage, TraceWriter log)
        {
            log.Verbose($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}", "JE.RMS.Services.SubmitRewardsRequest");
            try
            {
                //To obtain client IP Address
                clientIP = ((HttpContextWrapper)req.Properties["MS_HttpContext"]).Request.UserHostAddress;
                log.Verbose($"clientIP:={clientIP}", "JE.RMS.Services.SubmitRewardsRequest");

                //Read request object as string
                string reqString = await req.Content.ReadAsStringAsync();

                reqMessage = JObject.Parse(reqString);

                // Retrieve storage account from connection string
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["jermsstorage_STORAGE"].ToString());
                // Create the queue client
                CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
                // Retrieve a reference to a queue
                CloudQueue queue = queueClient.GetQueueReference("submitrewardsrequestqueue");
                // Create the queue if it doesn't already exist.
                queue.CreateIfNotExists();


                foreach (JObject x in reqMessage["RewardsRequest"])
                {
                    //Added Audit fields in request object
                    x.Add("SourceIP", clientIP);
                    x.Add("RMSRewardID", Guid.NewGuid().ToString());
                    x.Add("RewardsRequestReceiveTimestamp", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
                    CloudQueueMessage message = new CloudQueueMessage(x.ToString());
                    queue.AddMessage(message);
                    log.Verbose($"Message was published={x}", "JE.RMS.Services.SubmitRewardsRequest");
                }

                var Status = "Success";
                return(req.CreateResponse(HttpStatusCode.OK, new { Status }, JsonMediaTypeFormatter.DefaultMediaType));
            }
            catch (Exception ex)
            {
                log.Error($"Exception ={ex}", ex, "JE.RMS.Services.SubmitRewardsRequest");
                errormessage.Add(JsonConvert.SerializeObject(ex).ToString());
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex));
            }
        }
コード例 #15
0
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "AddPictureOrder")] HttpRequest req, TraceWriter log, [Table("PictureFormDB", Connection = "StorageConnection")] ICollector <PictureForm> formTable)

        {
            log.Info("C# HTTP trigger function processed a request.");


            string      requestBody = new StreamReader(req.Body).ReadToEnd();
            PictureForm data        = JsonConvert.DeserializeObject <PictureForm>(requestBody);

            data.PartitionKey = DateTime.UtcNow.DayOfYear.ToString();
            data.RowKey       = data.FileName;

            formTable.Add(data);

            return(data != null
                ? (ActionResult) new OkObjectResult($"Hello, {"OK"}")
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body"));
        }
コード例 #16
0
        public static async Task <HttpResponseMessage> Run(HttpRequestMessage req, ICollector <string> errormessage, TraceWriter log)
        {
            log.Verbose($"C# HTTP trigger GetRoles function processed a request. RequestUri={req.RequestUri}", "JE.RMS.Services.GetRoles");

            try
            {
                var roles = MSSQLConnection.ExecuteStoredProcedure <Role>(Common.Constants.USPContstants.GetRoles);
                log.Verbose($"received response:={roles}", "JE.RMS.Services.GetRoles");

                return(req.CreateResponse(HttpStatusCode.OK, roles));
            }
            catch (Exception ex)
            {
                log.Error("Something went wrong while GetRoles", ex, "JE.RMS.Services.GetRoles");
                errormessage.Add(JsonConvert.SerializeObject(ex).ToString());
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
コード例 #17
0
ファイル: SendMail.cs プロジェクト: KrystianKolad/Mailer
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            [Queue("mailerqueue")] ICollector <string> destinationQueue,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();

            if (JsonConvert.DeserializeObject <EmailMessage>(requestBody) == null)
            {
                return(new BadRequestResult());
            }

            destinationQueue.Add(requestBody);

            return(new AcceptedResult());
        }
コード例 #18
0
        public static async Task <HttpResponseMessage> Run(HttpRequestMessage req, ICollector <string> errormessage, TraceWriter log)
        {
            try
            {
                log.Verbose($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}", "JE.RMS.Services.EvaluateRewardsTrx");
                string rewardfulfillmentrequest = await req.Content.ReadAsStringAsync();

                var evaluationResult = EvaluateRewardsTrxMessage(rewardfulfillmentrequest, log);
                log.Verbose($"C# HTTP function processed a request. inputmessage= {rewardfulfillmentrequest}", "JE.RMS.Services.EvaluateRewardsTrx");
                return(req.CreateResponse(HttpStatusCode.OK, evaluationResult));
            }
            catch (Exception ex)
            {
                log.Error($"Exception={ex}", ex, "JE.RMS.Services.EvaluateRewardsTrx");
                errormessage.Add(JsonConvert.SerializeObject(ex).ToString());
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
コード例 #19
0
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
                                        [Table("Orders", Connection = "StorageConnection")] ICollector <Order> ordersTable, TraceWriter log)
        {
            try
            {
                var requestBody = new StreamReader(req.Body).ReadToEnd();
                var order       = JsonConvert.DeserializeObject <Order>(requestBody);
                order.PartitionKey = DateTime.UtcNow.DayOfYear.ToString();
                order.RowKey       = order.FileName;
                ordersTable.Add(order);
            }
            catch (Exception)
            {
                return(new BadRequestObjectResult("Received data invalid"));
            }

            return(new OkObjectResult("Success"));
        }
コード例 #20
0
        public static void Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log,
                               [Queue("numberToBeFactored", Connection = "AzureWebJobsStorage")] ICollector <string> outQueueItem)
        {
            log.LogInformation("C# HTTP trigger function processed a request to factor a number");

            // parse query parameter
            long?number = Convert.ToInt64(req.Query["number"]);

            // Get request body
            string  requestBody = new StreamReader(req.Body).ReadToEnd();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            // Set name to query string or body data
            number = (number == 0 ? data?.number : null);

            log.LogInformation("Received " + number);
            outQueueItem.Add(number.ToString());
        }
コード例 #21
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req,
            [Queue("scorequeue", Connection = "AzureWebJobsStorage")] ICollector <string> outputQueueMessage,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            // Get request body
            dynamic data = await req.Content.ReadAsAsync <object>();

            // Get the TeamId
            string teamId = data?.teamId;

            // Queue Point
            outputQueueMessage.Add(teamId);

            return(req.CreateResponse(HttpStatusCode.OK));
        }
        //Adding records to the collector.  The Function binding will handle serialization to EventHub
        public bool Serialize(string message,
                              ICollector <EventData> outData)
        {
            bool retVal = true;

            try
            {
                byte[] messageBytes = System.Text.Encoding.UTF8.GetBytes(message);
                outData.Add(new EventData(messageBytes));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, ex.Message);
                retVal = false;
            }

            return(retVal);
        }
コード例 #23
0
ファイル: Translate.cs プロジェクト: Jeremywhiteley/gab2018
 public static void Run(
     [CosmosDBTrigger("testdb", "testcollection", ConnectionStringSetting = "CosmosDB", CreateLeaseCollectionIfNotExists = true)]
     IReadOnlyList <Document> documents,
     [CosmosDB("testdb", "testcollection", Id = "id", ConnectionStringSetting = "CosmosDb")]
     ICollector <dynamic> translatedDocs,
     TraceWriter log)
 {
     foreach (var doc in documents)
     {
         if (doc.GetPropertyValue <object>("translated") == null)
         {
             doc.SetPropertyValue(
                 "translated",
                 new string(doc.GetPropertyValue <string>("text").Reverse().ToArray()));
             translatedDocs.Add(doc);
         }
     }
 }
コード例 #24
0
        private static void PostToSlackQueue(ICollector <string> outputToSlack, double?temperature, long?humidity, long?timestamp)
        {
            var postToSlack = Environment.GetEnvironmentVariable(EnvPostToSlack);

            if (!string.IsNullOrEmpty(postToSlack) && postToSlack.Equals("true"))
            {
                if (timestamp.HasValue)
                {
                    var messageToSlack = new
                    {
                        TimestampUtc = DateTimeOffset.FromUnixTimeSeconds(timestamp.Value).UtcDateTime.ToString(DateTimeFormat),
                        Temperature  = temperature.Value,
                        Humidity     = humidity.Value
                    };
                    outputToSlack.Add(JsonConvert.SerializeObject(messageToSlack));
                }
            }
        }
コード例 #25
0
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "saveMessage")] HttpRequest req,
                                        [Queue("demomessages", Connection = "queueConn")] ICollector <string> outputMessage, TraceWriter log)
        {
            string requestBody = new StreamReader(req.Body).ReadToEnd();
            Person person      = JsonConvert.DeserializeObject <Person>(requestBody);

            if (person == null || person.FirstName == null || person.LastName == null)
            {
                return(new BadRequestObjectResult("Prz222ekaz poprawne dane osobowe"));
            }



            string message = person.FirstName + " " + person.LastName;

            outputMessage.Add(message);
            return(new OkObjectResult($"Zapisano wiadomosc: {message}"));
        }
コード例 #26
0
        public static async Task <HttpResponseMessage> Run(HttpRequestMessage req, ICollector <string> errormessage, TraceWriter log)
        {
            log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}", "JE.RMS.Services.EEGetPointsTransactions");

            try
            {
                // Get request body
                string startDate = req.GetQueryNameValuePairs().FirstOrDefault(q => string.Compare(q.Key, "startDate", true) == 0).Value;
                string endDate   = req.GetQueryNameValuePairs().FirstOrDefault(q => string.Compare(q.Key, "endDate", true) == 0).Value;

                log.Verbose($"Get Points transaction called with start date = {startDate}, end date = {endDate}", "JE.RMS.Services.EEGetPointsTransactions");

                //Check if start date & end date is provided
                if (!string.IsNullOrEmpty(startDate) && !string.IsNullOrEmpty(endDate))
                {
                    using (HttpClient httpClient = new HttpClient())
                    {
                        //Add Basic Authentication header
                        httpClient.BaseAddress = new Uri(ConfigurationManager.AppSettings["EnergyEarthBaseUrl"].ToString());
                        var auth = Encoding.ASCII.GetBytes(ConfigurationManager.AppSettings["EEUserName"].ToString() + ":" + ConfigurationManager.AppSettings["EEPassword"].ToString());
                        httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(auth));

                        string GetPointTransactionsUrl = ConfigurationManager.AppSettings["EEGetPointsTransactionsUrl"].ToString() + "?startDate=" + startDate + "&endDate=" + endDate;

                        var response = await httpClient.GetAsync(GetPointTransactionsUrl);

                        log.Verbose($"Success : Get Points transaction start date={startDate}, end date = {endDate}.", "JE.RMS.Services.EEGetPointsTransactions");

                        return(response);
                    }
                }
                else //Bad request : Start Date or End Date is not provided.
                {
                    log.Error("Missing Parameter for EEGetPointsTransactions : startDate/endDate", null, "JE.RMS.Services.EEGetPointsTransactions");
                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, "Missing parametre : startDate/endDate"));
                }
            }
            catch (Exception ex)
            {
                log.Error("Something went wrong while EEGetPointsTransactions", ex, "JE.RMS.Services.EEGetPointsTransactions");
                errormessage.Add(JsonConvert.SerializeObject(ex).ToString());
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
コード例 #27
0
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Function, "get",
                         Route = "ProcessTabularModel/{databaseName}/async")] HttpRequestMessage req,
            [Queue("%ProcessModelQueue%", Connection = "AzureWebJobsStorage")] ICollector <QueueMessageProcesssTabular> queue,
            [Table("%ProcessModelStatusTable%", Connection = "AzureWebJobsStorage")] ICollector <QueueMessageProcesssTabular> statusTable,
            string databaseName,
            TraceWriter log)
        {
            log.Info($"Received request to process the model {databaseName} asynchronously.");

            QueueMessageProcesssTabular queuedMessage = null;

            try
            {
                DateTime enqueuedDateTime = DateTime.UtcNow;
                string   trackingId       = Guid.NewGuid().ToString();

                queuedMessage = new QueueMessageProcesssTabular()
                {
                    TrackingId       = trackingId,
                    EnqueuedDateTime = enqueuedDateTime,
                    Database         = databaseName,
                    Tables           = null,
                    TargetDate       = DateTime.Now,
                    Parition         = null,
                    Status           = "Queued",
                    PartitionKey     = enqueuedDateTime.ToString("yyyy-MM-dd"),
                    RowKey           = trackingId,
                    ETag             = "*"
                };

                queue.Add(queuedMessage);
                statusTable.Add(queuedMessage);

                log.Info($"Successfully queued request to process database - {databaseName} as {queuedMessage.PartitionKey}/{queuedMessage.RowKey}");
            }
            catch (Exception e)
            {
                log.Error($"Error occured trying to queue request to process database - {databaseName}. Details : {e.ToString()}", e);
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, e));
            }

            return(req.CreateResponse(HttpStatusCode.OK, queuedMessage.ToProcessingTrackingInfo()));
        }
コード例 #28
0
ファイル: Functions.cs プロジェクト: tomaszek1989/ImgBot
        public static async Task RunImageUpdateMessage(
            [QueueTrigger("imageupdatemessage")] ImageUpdateMessage imageUpdateMessage,
            [Table("installation", "{InstallationId}", "{RepoName}")] Installation installation,
            [Queue("openprmessage")] ICollector <OpenPrMessage> openPrMessages,
            TraceWriter log,
            ExecutionContext context)
        {
            if (installation == null)
            {
                throw new Exception($"No installation found for InstallationId: {installation.InstallationId}");
            }

            var installationTokenParameters = new InstallationTokenParameters
            {
                AccessTokensUrl = installation.AccessTokensUrl,
                AppId           = KnownGitHubs.AppId,
            };

            var installationToken = await InstallationToken.GenerateAsync(
                installationTokenParameters,
                File.OpenText(Path.Combine(context.FunctionDirectory, $"..\\{KnownGitHubs.AppPrivateKey}")));

            var compressImagesParameters = new CompressimagesParameters
            {
                CloneUrl            = installation.CloneUrl,
                LocalPath           = LocalPath.CloneDir(Environment.GetEnvironmentVariable("TMP"), installation.RepoName),
                Password            = installationToken.Token,
                RepoName            = installation.RepoName,
                RepoOwner           = installation.Owner,
                PgpPrivateKeyStream = File.OpenRead(Path.Combine(context.FunctionDirectory, $"..\\{KnownGitHubs.PGPPrivateKeyFilename}")),
                PgPPassword         = File.ReadAllText(Path.Combine(context.FunctionDirectory, $"..\\{KnownGitHubs.PGPPasswordFilename}"))
            };

            var didCompress = CompressImages.Run(compressImagesParameters);

            if (didCompress)
            {
                openPrMessages.Add(new OpenPrMessage
                {
                    InstallationId = imageUpdateMessage.InstallationId,
                    RepoName       = imageUpdateMessage.RepoName,
                });
            }
        }
コード例 #29
0
        public static async Task RunAsync(
            IInstallationTokenProvider installationTokenProvider,
            CompressImagesMessage compressImagesMessage,
            ICollector <OpenPrMessage> openPrMessages,
            ILogger logger,
            ExecutionContext context)
        {
            logger.LogInformation("CompressImagesFunction: starting run for {Owner}/{RepoName}", compressImagesMessage.Owner, compressImagesMessage.RepoName);
            var installationTokenParameters = new InstallationTokenParameters
            {
                AccessTokensUrl = string.Format(KnownGitHubs.AccessTokensUrlFormat, compressImagesMessage.InstallationId),
                AppId           = KnownGitHubs.AppId,
            };

            var installationToken = await installationTokenProvider.GenerateAsync(
                installationTokenParameters,
                File.OpenText(Path.Combine(context.FunctionDirectory, $"../{KnownGitHubs.AppPrivateKey}")));

            var compressImagesParameters = new CompressimagesParameters
            {
                CloneUrl            = compressImagesMessage.CloneUrl,
                LocalPath           = LocalPath.CloneDir(Environment.GetEnvironmentVariable("TMP") ?? "/private/tmp/", compressImagesMessage.RepoName),
                Password            = installationToken.Token,
                RepoName            = compressImagesMessage.RepoName,
                RepoOwner           = compressImagesMessage.Owner,
                PgpPrivateKeyStream = File.OpenRead(Path.Combine(context.FunctionDirectory, $"../{KnownGitHubs.PGPPrivateKeyFilename}")),
                PgPPassword         = File.ReadAllText(Path.Combine(context.FunctionDirectory, $"../{KnownGitHubs.PGPPasswordFilename}"))
            };

            var didCompress = CompressImages.Run(compressImagesParameters, logger);

            if (didCompress)
            {
                logger.LogInformation("CompressImagesFunction: Successfully compressed images for {Owner}/{RepoName}", compressImagesMessage.Owner, compressImagesMessage.RepoName);
                openPrMessages.Add(new OpenPrMessage
                {
                    InstallationId = compressImagesMessage.InstallationId,
                    RepoName       = compressImagesMessage.RepoName,
                    CloneUrl       = compressImagesMessage.CloneUrl,
                });
            }

            logger.LogInformation("CompressImagesFunction: finished run for {Owner}/{RepoName}", compressImagesMessage.Owner, compressImagesMessage.RepoName);
        }
コード例 #30
0
        public static async Task Run([BlobTrigger("takmil/{blobName}",
                                                  Connection = "AzureWebJobsStorage")] Stream inputBlob, string blobName,
                                     [Table("TakmilTable")] ICollector <ConnectionLog> outputTable,
                                     ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{blobName}\n Size: {inputBlob.Length} Bytes");

            blobName = Path.GetFileNameWithoutExtension(blobName);
            string[] nameParts = blobName.Split(new char[] { '_' });
            if (nameParts.Length != 5)
            {
                log.LogError("File name is in invalid format, expected A_B_C_D_E.json");
                return;
            }

            string schoolName    = nameParts[0];
            string uploadTimeStr = nameParts[1] + "T" + nameParts[2];
            string orgName       = nameParts[4];

            PictureData           picture = GetPictureData(inputBlob, log);
            Tuple <int, int, int> t       = ProcessPicture(picture.PictureURL, log);

            DateTime uploadTime = DateTime.UtcNow;
            DateTime createTime = DateTime.ParseExact(picture.PictureTimestamp, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

            ConnectionLog record = new ConnectionLog
            {
                PartitionKey       = schoolName,
                RowKey             = orgName + "-" + schoolName + "-" + uploadTimeStr,
                Location           = picture.Location,
                LatLong            = picture.LatLong,
                SchoolName         = picture.SchoolName,
                ClassName          = picture.ClassName,
                TeacherName        = picture.TeacherName,
                NoOfBoys           = t.Item1,
                NoOfGirls          = t.Item2,
                NoOfStudents       = t.Item3,
                PictureLocationURL = picture.PictureURL,
                CreationTimestamp  = createTime,
                UploadTimestamp    = uploadTime
            };

            outputTable.Add(record);
        }