예제 #1
0
 public static void Run([QueueTrigger("queue-for-useragents-on-new-image-metadata", Connection = "ConnectionStrings:HR_IMAGE_QUEUE_CX")] string myQueueItem, ILogger log)
 {
     try
     {
         if (!String.IsNullOrEmpty(myQueueItem))
         {
             log.LogInformation($"C# Queue trigger function processed original value: {myQueueItem}");
             //1-
             var    base64EncodedBytes = Convert.FromBase64String(myQueueItem);
             String convertedString    = Encoding.UTF8.GetString(base64EncodedBytes);
             //2-
             log.LogInformation($"C# Queue trigger function processed converted value: {convertedString}");
             HRSubmitPictureListItemDto data = JsonConvert.DeserializeObject <HRSubmitPictureListItemDto>(convertedString);
             //3-
             String endpoint = Environment.GetEnvironmentVariable(ENV_NEW_IMAGE_SIGNALR_ENDPOINT_KEY);
             log.LogInformation("Endpoint : " + endpoint);
             HRUtils.NotifyPutBackend <HRSubmitPictureListItemDto>(data, endpoint, log);
             log.LogInformation("HRNewImageMetadataForUserAgents ended successfully.");
         }
         else
         {
             log.LogInformation("HRNewImageMetadataForUserAgents dummy on null entry.");
         }
     }
     catch (Exception ex)
     {
         log.LogError("HRNewImageMetadataForUserAgents exception : " + ex.Message);
     }
 }
        public static void Run([QueueTrigger("hr-main-new-image", Connection = "ConnectionStrings:HR_IMAGE_QUEUE_CX")] string myQueueItem, ILogger log)
        {
            //BONNE PRATIQUE TOUJLURS ENCADRE DE TRY CATH POUR S'Y RETROUVER DANS LES LOGS AZURE
            try
            {
                if (!String.IsNullOrEmpty(myQueueItem))
                {
                    //1
                    var    base64EncodedBytes       = Convert.FromBase64String(myQueueItem);
                    String convertedString          = Encoding.UTF8.GetString(base64EncodedBytes);
                    HRSubmitPictureListItemDto data = JsonConvert.DeserializeObject <HRSubmitPictureListItemDto>(convertedString);
                    String url = data?.FullImageUrl;
                    if (!String.IsNullOrEmpty(url))
                    {
                        log.LogInformation($"Data received : " + convertedString);

                        //2-
                        String blobPath = CreateAndUploadThumbnail(url, log);

                        data.ThumbnailUrl = blobPath;
                        //3-
                        string backEndPoint = Environment.GetEnvironmentVariable(ENV_UPDATE_THUMBNAIL_ENDPOINT);
                        HRUtils.NotifyPutBackend <HRSubmitPictureListItemDto>(data, backEndPoint, log);
                        log.LogInformation($"Step 2: " + blobPath);

                        //4-
                        string userAgentsEndPoint = Environment.GetEnvironmentVariable(ENV_NEW_THUMBNAIL_SIGNALR_ENDPOINT_KEY);
                        HRUtils.NotifyPutBackend <HRSubmitPictureListItemDto>(data, userAgentsEndPoint, log);
                        log.LogInformation($"Step 3 : " + blobPath);
                    }
                    else
                    {
                        log.LogInformation($"No Fullimage URL supplied, can not process thumbnail.");
                    }
                }
                else
                {
                    log.LogInformation($"Empty entry");
                }
            }
            catch (Exception ex)
            {
                log.LogInformation($"HR Error !!! : " + ex.Message);
            }
        }
        /// <summary>
        ///
        /// </summary>
        private static string CreateAndUploadThumbnail(string url, ILogger log)
        {
            byte[] imageData = HRUtils.GetRawImageFromUrl(url, log);
            if (imageData != null)
            {
                var extension = Path.GetExtension(url);
                var encoder   = HRUtils.GetEncoder(extension);

                if (encoder != null)
                {
                    var uri            = new Uri(url);
                    var tempBlobClient = new BlobClient(uri);
                    var blobName       = tempBlobClient.Name;

                    using (var output = new MemoryStream())
                    {
                        var thumbnailWidth     = Convert.ToInt32(Environment.GetEnvironmentVariable(ENV_THUMBNAIL_WIDTH_NAME));
                        var thumbContainerName = Environment.GetEnvironmentVariable(ENV_THUMBNAIL_CONTAINER_NAME);
                        //3-
                        HRUtils.UploadImageInMemoryStream(imageData, output, encoder, thumbContainerName, thumbnailWidth);
                        String blobPath =
                            Environment.GetEnvironmentVariable(ENV_ROOT_THUMBNAIL_STORAGE_URL)
                            + Path.GetFileNameWithoutExtension(url)
                            + THUMBNAIL_EXTENSION;
                        //4-
                        Uri blobUri = new Uri(blobPath);
                        //4.1-
                        StorageSharedKeyCredential storageCredentials =
                            new StorageSharedKeyCredential(
                                Environment.GetEnvironmentVariable(ENV_STORAGE_NAME),
                                Environment.GetEnvironmentVariable(ENV_STORAGE_KEY));
                        //4.2-
                        BlobClient blobClient = new BlobClient(blobUri, storageCredentials);
                        output.Position = 0;
                        // 4.3-
                        var azureResponse = blobClient.Upload(output);
                        log.LogInformation("Result id version of blob: " + azureResponse.Value?.VersionId);
                        return(blobPath);
                    }
                }
            }
            return(String.Empty);
        }