public static void Run([QueueTrigger("beerqueue", Connection = "AzureWebJobsStorage")] string myQueueItem, TraceWriter log) { log.Info($"C# Queue trigger function processed: {myQueueItem}"); QueueMessage queueItem = Newtonsoft.Json.JsonConvert.DeserializeObject <QueueMessage>(myQueueItem); OpenWeatherMapAPIClient api = new OpenWeatherMapAPIClient(); OpenWeatherMapResult weather = api.GetWeather(queueItem.cityName); // Get storage acccount string connectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage"); var storageAccount = CloudStorageAccount.Parse(connectionString + ";EndpointSuffix=core.windows.net"); log.Info("C# connectionstring."); // Get queue reference var queueClient = storageAccount.CreateCloudQueueClient(); var queue = queueClient.GetQueueReference("weatherqueue"); queue.CreateIfNotExistsAsync(); // Create Queue message to trigger FunctionSecondQueueTrigger SecondQueueMessage secondQueueMessage = new SecondQueueMessage(); secondQueueMessage.blobName = queueItem.blobName; secondQueueMessage.weather = weather; string message = Newtonsoft.Json.JsonConvert.SerializeObject(secondQueueMessage); // Add message to queue queue.AddMessageAsync(new CloudQueueMessage(message)); }
public static void Run([QueueTrigger("weatherqueue", Connection = "AzureWebJobsStorage")] string myQueueItem, TraceWriter log) { log.Info($"C# Queue trigger function processed: {myQueueItem}"); SecondQueueMessage secondQueueItem = Newtonsoft.Json.JsonConvert.DeserializeObject <SecondQueueMessage>(myQueueItem); /* * QueueMessage queueItem = Newtonsoft.Json.JsonConvert.DeserializeObject<QueueMessage>(myQueueItem); * * OpenWeatherMapAPIClient api = new OpenWeatherMapAPIClient(); * OpenWeatherMapResult weather = api.GetWeather(queueItem.cityName); */ // Determine beer weather string beerAdvice; if (secondQueueItem.weather != null) { if ((secondQueueItem.weather.main.temp - 272.15) < 16) { beerAdvice = "Bier drinken wordt afgeraden."; } else { beerAdvice = "Bier drinken is mogelijk"; } } else { // Error beer advice beerAdvice = "Fout: is de plaatsnaam correct?"; } // Get storage acccount string connectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage"); var storageAccount = CloudStorageAccount.Parse(connectionString + ";EndpointSuffix=core.windows.net"); // Create blob reference, permissions can remain private because a SAS token is used to retrieve the blob var blobClient = storageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference("somecontainer"); container.CreateIfNotExistsAsync(); var blob = container.GetBlockBlobReference(secondQueueItem.blobName); // Create error image if (secondQueueItem.weather == null) { Bitmap errorImage = new Bitmap(600, 600); MemoryStream errorMemoryStream = new MemoryStream(); errorImage.Save(errorMemoryStream, ImageFormat.Png); ImageTextDrawer errorTextDrawer = new ImageTextDrawer(); blob.UploadFromStreamAsync(errorTextDrawer.DrawTextOnImage(errorMemoryStream, beerAdvice, "-", "-")); return; } // Get image from Azure maps log.Info($"C# Queue trigger function processed: azure maps"); AzureMapsRenderAPIClient azureMapsClient = new AzureMapsRenderAPIClient(); MemoryStream memoryStream = azureMapsClient.GetMap(secondQueueItem.weather.coord.lon, secondQueueItem.weather.coord.lat); // Draw text on image log.Info($"C# Queue trigger function processed: weer variabelen"); string temperature = (secondQueueItem.weather.main.temp - 272.15).ToString(); string windspeed = secondQueueItem.weather.wind.speed.ToString(); log.Info($"C# Queue trigger function processed: tekst tekenen"); MemoryStream outMemoryStream = new MemoryStream(); ImageTextDrawer textDrawer = new ImageTextDrawer(); outMemoryStream = textDrawer.DrawTextOnImage(memoryStream, beerAdvice, temperature, windspeed); log.Info($"C# Queue trigger function processed: vlak voor upload"); if (!(outMemoryStream is null)) { // Upload image blob.UploadFromStreamAsync(outMemoryStream); }