public TourRepository(ETourDbContext dbContext, IRemoteFileStorageHandler remoteFileStorageHandler)
 {
     _dbContext = dbContext;
     _remoteFileStorageHandler = remoteFileStorageHandler;
 }
 public PostRepository(ETourDbContext dbContext, IRemoteFileStorageHandler remoteFileStorageHandler, HtmlDocument doc)
 {
     _dbContext = dbContext;
     _remoteFileStorageHandler = remoteFileStorageHandler;
     _doc = doc;
 }
        // Parse images that use Base64 string for src attribute, upload to remote storage and replace src with hosted image url
        public static async Task <IEnumerable <string> > ProcessBase64Images(this HtmlDocument doc, IRemoteFileStorageHandler remoteFileStorageHandler)
        {
            List <string> uploadedImgUrls = new();
            var           imgTags         = doc.DocumentNode.SelectNodes("//img");

            if (imgTags != null)
            {
                foreach (var img in imgTags)
                {
                    var src = img.Attributes["src"].Value;
                    // Upload image and set src to the image url
                    if (src.StartsWith("data:image"))
                    {
                        var stream = new MemoryStream(Convert.FromBase64String(src.Split(";base64,")[1]));
                        src = await remoteFileStorageHandler.UploadAsync(stream, "jpg");

                        img.Attributes["src"].Value = src;
                    }
                    uploadedImgUrls.Add(src);
                }
            }
            return(uploadedImgUrls);
        }