public static async Task Run( [QueueTrigger("newpets", Connection = "StorageConnectionString")] string queueItem, ILogger logger, [ServiceLocator] IServiceProvider serviceProvider, [Config] IConfiguration config) { var httpClientFactory = serviceProvider.GetRequiredService <IHttpClientFactory>(); var petService = serviceProvider.GetRequiredService <PetService>(); var _storage = CloudStorageAccount.Parse(config.GetValue <string>("StorageConnectionString")).CreateCloudBlobClient(); // Deserialize queue message var petFromQueue = JsonConvert.DeserializeObject <Pet>(queueItem); // Download image var blob = new CloudBlockBlob(new Uri(petFromQueue.ImageUrl), _storage); var image = await blob.DownloadBlobAsync(); // Call Cognitive Services Computer Vision var client = httpClientFactory.CreateClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", config.GetValue <string>("ComputerVision")); var response = await client.PostAsync(ComputerVisionUrl, image); if (response.IsSuccessStatusCode) { // Upload image to blob var thumbnail = await response.Content.ReadAsStreamAsync(); await blob.UploadFromStreamAsync(thumbnail); // publish pet var pet = await petService.GetPetAsync(petFromQueue.Id, petFromQueue.Type); pet.Published = true; await petService.UpdatePetAsync(pet); } else { var result = await response.Content.ReadAsStringAsync(); logger.LogError(result); } }